我正在使用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中是否有可能會大幅影響插入速度的配置?還是有任何其他可能的原因,我的上述情況?