SQL Server データベースに対して一連のクエリを実行する Java プログラムがあります。これらの最初のものは、ビューに対してクエリを実行し、約 750k レコードを返します。SQL Server Management Studio 経由でクエリを実行すると、約 30 秒で結果が得られます。ただし、昨夜実行するプログラムを開始しました。今朝確認したところ、このクエリはまだ結果を Java プログラムに返していませんでした。約 15 時間後です。
データベースにアクセスして、やりたいことは何でもできますが、これのデバッグを開始する方法が本当にわかりません。このような状況の原因を突き止めるには、どうすればよいでしょうか。私はデータベース管理者ではなく、SQL サーバー ツール セットに精通していません。
コードはこちら
stmt = connection.createStatement();
clientFeedRS = stmt.executeQuery(StringBuffer.toString());
EDIT1:
しばらく経ち、これは脱線しましたが、この問題は戻ってきました。jdbc ドライバー v 1.2 から 2.0 へのアップグレードを検討しましたが、jdk 1.4 に固執しており、v 2.0 には jdk 1.5 が必要なので、これは初心者ではありません。今、接続文字列のプロパティを見ています。役に立つかもしれない 2 が表示されます。
SelectMethod=cursor|direct
responseBuffering=adaptive|full
現在、レイテンシーの問題により、selectMethod としてカーソルを使用し、responseBuffering のデフォルトがいっぱいになっている状態で実行しています。これらのプロパティを変更すると役立つ可能性がありますか? もしそうなら、理想的な設定は何ですか?オンラインで見つけた情報に基づいて、直接選択法と適応応答バッファリングを使用すると問題が解決する可能性があると考えています。何かご意見は?
EDIT2:
さて、これらの接続文字列パラメーターの両方を変更し、デフォルトの選択方法 (直接) を使用し、responseBuffering を適応型として指定しました。これは最終的に私にとって最適に機能し、私が見ていた遅延の問題を軽減します. すべての助けに感謝します。