我正在使用Sybase ASE和一个表,其中我将保存由Java计算的结果。此表有10列,其中一列的类型为INT
值(但不是ID列),其他9列均为VARCHAR(50)
类型。是否有一个参数加速Sybase插入
这张表没有索引或触发器(实际上这个表真的是独立的)。我需要将约160K行插入此表中。我试图按批次分开工作,每次都会进行10,000次插入。我使用了两种不同的方式,一种是Spring的JdbcTemplate.batchUpdate
另一种是原生JDBC PreparedStatement.executeBatch
api。
然而,没有明确的表现赢家。对于10K插入,它们都需要大约25到30秒。
然后我认为它可能与JDBC驱动程序有关,所以我尝试了两种不同的驱动程序:jConnect和jTDS。对插入性能没有实际影响。
最后,我决定将Sybase与另一个数据库(即我的测试中的PostgreSQL)进行比较。我保留了相同的Java代码,令人惊讶的是PostgreSQL每10K插入只需要0.3秒,而Sybase花费25到30秒(75到100倍)。
DBA支持团队解释了这种差异,原因是PostgreSQL安装在本地计算机上,而Sybase安装在企业服务器上。但是,我完全不相信这个解释。
有谁知道在Sybase中是否有可能会大幅影响插入速度的配置?还是有任何其他可能的原因,我的上述情况?