2012-04-05 10 views
1

私は100Kを超えるデータベースを持っており、結果をバッチとして取得したいと思います。私はSQLサーバーを使用しており、fetchsizeセットは50です。どのようにして50レコードしか取得されないのか、次に50レコードが取得されることを確認しますか。バッチサイズのJDBC選択クエリを検査してください

P6SPYを使用してSQLをデバッグしようとしました。結果セットのレコード。私は、生成されたSQLを調べ、fetchsizeが適用されていることを確認したい。

助けてください。

+0

n個のレコードのn個のクエリは何を意味しますか?各レコードがdbサーバーへの個々の往復でフェッチされることを意味しますか? –

+0

@MiserableVariable私が実際にやろうとしていることはページングであると思います – Kevin

+0

@Kevinページングは​​SQL自体の中で行うべきです、私はOPがすべての行をフェッチしたいと思っていますが、dbサーバーへのラウンドトリップ回数を制限したいと考えています。 –

答えて

0

私はP6SPYがアプリケーションレベルのツールであると考えます。つまり、アプリケーションと元のJDBCドライバの間にあり、JDBCドライバとデータベースサーバの間のやりとりを監視できません。

JDBCドライバがfetchsizeを尊重していないと思われる場合は、wiresharkなどのネットワークパケットスニファを使用するか、データベースサーバー自体にログを記録するか、ドライバが公開するデバッグログを使用する必要があります。

+0

返事をありがとう。したがって、JDBCドライバによってデータベースサーバに送信されるものをデバッグするツールや簡単かつ簡単な方法はありませんか?私はwiresharkを試して、使用するのが少し難しいと感じました。 – Nik

+0

サーバーでログオンリクエストを試しましたか? JDBCドライバとデータベースサーバの間に何が起きているのかを知りたい場合は、どちらか一方があなたに伝えるか、スヌープする必要があります。 –

0

ここで私が理解したことは次のとおりです。SQL Server JDBCドライバは、デフォルトですべてのレコードをメモリにフェッチします。接続URL文字列にselectMethod=cursorを追加すると問題が解決され、バッチサイズが使用されます。

関連する問題