私は100Kを超えるデータベースを持っており、結果をバッチとして取得したいと思います。私はSQLサーバーを使用しており、fetchsizeセットは50です。どのようにして50レコードしか取得されないのか、次に50レコードが取得されることを確認しますか。バッチサイズのJDBC選択クエリを検査してください
P6SPYを使用してSQLをデバッグしようとしました。結果セットのレコード。私は、生成されたSQLを調べ、fetchsizeが適用されていることを確認したい。
助けてください。
私は100Kを超えるデータベースを持っており、結果をバッチとして取得したいと思います。私はSQLサーバーを使用しており、fetchsizeセットは50です。どのようにして50レコードしか取得されないのか、次に50レコードが取得されることを確認しますか。バッチサイズのJDBC選択クエリを検査してください
P6SPYを使用してSQLをデバッグしようとしました。結果セットのレコード。私は、生成されたSQLを調べ、fetchsizeが適用されていることを確認したい。
助けてください。
私はP6SPYがアプリケーションレベルのツールであると考えます。つまり、アプリケーションと元のJDBCドライバの間にあり、JDBCドライバとデータベースサーバの間のやりとりを監視できません。
JDBCドライバがfetchsizeを尊重していないと思われる場合は、wiresharkなどのネットワークパケットスニファを使用するか、データベースサーバー自体にログを記録するか、ドライバが公開するデバッグログを使用する必要があります。
返事をありがとう。したがって、JDBCドライバによってデータベースサーバに送信されるものをデバッグするツールや簡単かつ簡単な方法はありませんか?私はwiresharkを試して、使用するのが少し難しいと感じました。 – Nik
サーバーでログオンリクエストを試しましたか? JDBCドライバとデータベースサーバの間に何が起きているのかを知りたい場合は、どちらか一方があなたに伝えるか、スヌープする必要があります。 –
ここで私が理解したことは次のとおりです。SQL Server JDBCドライバは、デフォルトですべてのレコードをメモリにフェッチします。接続URL文字列にselectMethod=cursor
を追加すると問題が解決され、バッチサイズが使用されます。
n個のレコードのn個のクエリは何を意味しますか?各レコードがdbサーバーへの個々の往復でフェッチされることを意味しますか? –
@MiserableVariable私が実際にやろうとしていることはページングであると思います – Kevin
@KevinページングはSQL自体の中で行うべきです、私はOPがすべての行をフェッチしたいと思っていますが、dbサーバーへのラウンドトリップ回数を制限したいと考えています。 –