2012-04-05 78 views
1

我有一個數據庫,具有> 100K記錄,我希望以批處理方式獲得結果。我正在使用SQL服務器和fetchsize設置爲50.我如何確保只有50條記錄被檢索,然後下一個50.檢查JDBC選擇查詢的批量大小

我試着調試SQL使用P6SPY和輸出顯示n個查詢n數記錄結果集中。我想檢查生成的SQL並確保應用了fetchsize。

請幫助。

+0

查詢n個記錄是什麼意思?你的意思是每條記錄都是單獨往返於數據庫服務器? – 2012-04-05 22:09:55

+0

@MisrableVariable我真的認爲他想要做的是分頁 – Kevin 2012-04-05 22:16:29

+0

@Kevin分頁應該在SQL本身內完成,我認爲OP想要獲取所有行但限制往返db服務器的往返次數 – 2012-04-05 22:25:42

回答

0

我認爲P6SPY是應用程序級別的工具,即它位於應用程序和原始JDBC驅動程序之間,因此不能監視JDBC驅動程序和數據庫服務器之間的交互。

如果您懷疑JDBC驅動程序未遵守fetchsize,則必須使用網絡數據包嗅探器(如wireshark),使用任何登錄到數據庫服務器本身的請求或驅動程序公開的任何調試日誌記錄。

+0

感謝您的回覆。那麼是否沒有工具或快捷方式來調試JDBC驅動程序向數據庫服務器發送的內容?我嘗試wireshark,發現它很難使用。 – Nik 2012-04-06 04:53:50

+0

您是否嘗試在服務器上請求記錄?如果您想知道JDBC驅動程序和數據庫服務器之間發生了什麼,其中一個人必須告訴您,否則您將不得不窺探。 – 2012-04-06 18:19:46

0

下面是我想到的:默認情況下,SQL Server JDBC驅動程序將所有記錄提取到內存中。將selectMethod=cursor添加到連接url字符串解決了問題,現在將使用批量大小。