ResultSetExtractor内でgetIntを呼び出すと、パフォーマンスの問題が発生します。GetIntは20000回呼び出されます。1回の呼び出しのコストは0.15ミリ秒で、全体のコストは24秒ですが、プロファイラー内で実行されています。SQLステートメントの実行には約8秒かかります(主キーを介したアクセス)。mysqlドライバーバージョン5.1.13、mysqlサーバー5.1.44、およびspring-jdbc-3.1.1を使用しています。パフォーマンスを改善するアイデアはありますか?
mut.getMutEffect()[0]=(rs.getInt("leffect_a") != 0);
mut.getMutEffect()[1]=(rs.getInt("leffect_c") != 0);
...
mut.getMutEffect()[19]=(rs.getInt("leffect_y") != 0);
mut.getMutReliability()[0]=rs.getInt("lreliability_a");
...
mut.getMutReliability()[19]=rs.getInt("lreliability_y");
私のスキームはこのようになります
CREATE TABLE mutation (
...
leffect_a BIT NOT NULL,
lreliability_a TINYINT UNSIGNED NOT NULL,
...
leffect_y BIT NOT NULL,
lreliability_y TINYINT UNSIGNED NOT NULL,
...
) ENGINE=MyISAM;
編集:getInt内で、高価なように見えるメソッドgetIntWithOverflowCheckが呼び出されます。このチェックをオフにすることは可能ですか?
ここにいくつかの提案があります:
フェッチサイズをかなり大きな数に設定します:Statement.setFetchSize()。これにより、結果セットの処理中のデータベースサーバーへのラウンドトリップが減少します。
プロファイリングにより、selectステートメントが最適であることを確認する
一般的なテーブルの最適化、たとえば正しいデータ型を使用していますか?leffect_aをブール値に変更できるようです
SELECTステートメントで不要な列を返していないことを確認してください。
スクロール可能で更新可能な結果セットを回避する(どちらもデフォルトではありません)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加