2009-04-20 10 views
1

BLOB列からデータを取得するためのさまざまな呼び出し(getBytes/getBinary/getBlob)のパフォーマンスを比較しようとしています。CLOB/BLOBデータを取得するためのjdbcパフォーマンス・テスト

私が今やっていることは、jdbcドライバを使ってステートメントを実行し、結果セットを反復する時間を追跡することです。

//Mark time 
ResultSet resultSet = stmt.executeQuery(query); 
resultSet.getBytes(1) // or resultSet.getBinary or resultSet.getBlob 
//Mark time again 

私は最初のクエリを実行した後、連続した呼び出しが原因DBエンジンのキャッシュで高速化する傾向があるので、これは物事の非常に不正確な方法です。

これらの異なるコールのパフォーマンス評価を行うためのより良い方法はありますか?

答えて

1

各ベンチマーク実行の間に再起動しますか? <j/k>

正直言って、最高のアプローチは、たくさんのclob/blobデータを持つテーブルをロードすることだけだと思います。つまり、おそらくこのような偽のテーブルtesttable(ID整数プライマリキー、テストデータブロブ)を作成します。数ギガのテストデータ(逐次的に増加するID)をロードしたら、プログラムのクエリをランダムに(Math.randomを使用して)行い、それをあなたの比較に使用してください。

これは、キャッシングに関連するさまざまなバリエーションを排除し、さまざまなBLOB検索メソッド間で実際に重要なパフォーマンスの違いがあるかどうかをよく表しています。