私はSybase ASEを使用していますが、テーブルではJavaで計算した結果を保存します。この表には10個の列があり、1つの列の種類はINT
(ID列ではありません)です。他の9列はすべてVARCHAR(50)
です。はSybaseの挿入を加速するパラメータです
このテーブルにインデックスまたはトリガーはありません(実際はこのテーブルは実際には独立しています)。このテーブルに約160Kの行を挿入する必要があります。私はバッチごとに作業を分けようとしましたが、毎回10,000回の挿入が行われます。私は2つの異なる方法を使用しました.1つはSpringのJdbcTemplate.batchUpdate
、もう1つはネイティブJDBC PreparedStatement.executeBatch
apiです。
ただし、パフォーマンスに関する明確な優勝者はありません。両方とも10Kの挿入のために約25〜30秒かかります。
そして、私はそれがJDBCドライバに関係すると思っていたので、2つの異なるドライバ、jConnectとjTDSを試しました。挿入パフォーマンスには実質的な影響はありません。
最後に、私のテストでSybaseを別のデータベース、つまりPostgreSQLと比較することにしました。私は同じJavaコードを使用していましたが、驚くべきことに、PostgreSQLは10K挿入ごとに0.3秒しかかからず、Sybaseは25〜30秒(75〜100倍長く)かかりました。
DBAサポートチームは、Sybaseがエンタープライズのサーバにインストールされている間に、ローカルマシンにPostgreSQLがインストールされていることが原因であると説明しています。しかし、私はこの説明によってまったく確信していません。
Sybaseに挿入速度にかなりの影響を及ぼす構成があるかどうか知りませんか?または上記のシナリオに他の原因が考えられますか?