fetchのパフォーマンス

JavaFireBirdへfetchするパフォーマンスを改善する必要があるのでそのメモ.

  • ポイント(?)

- SQLレベル
  複雑なqueryではないので、改善の余地なし?
- Schemaレベル
  政治的に変えられない?
- Java上での扱い方
  ここに着目

以下、情報のまとめ.

  • Stored Proceduresの利用

 - SQL文の送信と前処理が必要なく、 クライアントからの問い合わせよりも高速に処理することができます。
 - http://www.technotype.net/tutorial/tutorial.php?fileId={SQL}§ionId={what-is-stored-procedure}

  • select * from Tablexyz を使用するより必要なカラムだけを select [1]

- 通信量が減るため?

  • Statement や ResultSet オブジェクトをできるだけ直に close[1]

- 理由は不明

  • 多量のデータの読み込み専用のクエリについて:データの操作、格納のアクセスの媒介としてEJB Objectを使用することを避け、JavaBeansを使用しなさい。[1]
  • ResultSet から余分なカラムを除きなさい[1]

[1] http://www002.upp.so-net.ne.jp/tomo008/J2EE_Performance/JDBC_Performance_Tips.html

その他、覚えておきたいこと

  • Batch Update

- 複数の更新処理(insert, update, delete)をまとめて実行する機能

  • 少なくない行を検索する場合、ResultSet.next() はデータベースから行をfetchするためにかなり多くの時間を要する。この時間はデータベースアクセスの測定時間に含めるべきである。[1]
  • avoid a-way database joins: join は倍数的に性能に影響を及ぼす。このパフォーマンスの低下は大きなデータセットが含まれる際には顕著に表れる。[1]
  • 何千もの行を取得することを避ける。[1]

- 代替案は?

#ここまで