【发布时间】:2016-09-21 18:12:42
【问题描述】:
我正在使用 Sybase ASE,并且对于一个表,我将在其中保存由 Java 计算的结果。这个表有10列,一列类型是INT值(但不是ID列),其他9列都是VARCHAR(50)类型。
这个表上没有索引或触发器(实际上这个表是真正独立的)。我需要在这个表中插入大约 160K 行。我尝试将工作按批次分开,每次将执行 10,000 次插入。我用了两种不同的方式,一种是Spring的JdbcTemplate.batchUpdate另一种是原生的JDBCPreparedStatement.executeBatchapi。
但在性能方面没有明确的赢家。对于 10K 插入,它们都需要大约 25 到 30 秒。
然后我觉得可能和JDBC驱动有关,所以我尝试了两个不同的驱动:jConnect和jTDS。对插入性能没有实际影响。
最后我决定将 Sybase 与另一个数据库进行比较,即我测试中的 PostgreSQL。我保留了相同的 Java 代码,令人惊讶的是,PostgreSQL 每 10K 插入只需要 0.3 秒,而 Sybase 需要 25 到 30 秒(长 75 到 100 倍)。
DBA 支持团队解释说,不同之处在于 PostgreSQL 安装在我的本地计算机上,而 Sybase 安装在我们企业的服务器上。但是,我完全不相信这种解释。
有谁知道 Sybase 中是否存在会显着影响插入速度的配置?或者我的上述情况还有其他可能的原因吗?
【问题讨论】: