2013-06-01 138 views
8

更新:問題現在是fixed如何在MySQL Workbench上執行需要更長時間99,999秒的SQL查詢?


我想執行一個查詢,需要超過99999秒執行(例如SELECT SLEEP(150000);)。要更改MySQL Workbench中的超時時間,我們必須去編輯→首選項→SQL編輯器→DBMS連接讀取超時(秒)。但是,DBMS connection read time out字段最多隻能接受5個數字,並將字段設置爲0等同於默認參數(600秒)。如果查詢需要比超時更多的時間,我得到錯誤信息:Error Code: 2013. Lost connection to MySQL server during query

因此我的問題:是否有可能將此限制增加到超過99,999秒? 我使用Windows 7 64位Ultimate和MySQL Workbench 5.2.47 CE。

DBMS connection read time out場: enter image description here

超時問題(0相當於默認參數(600秒)): enter image description here

+0

不,嚴重嗎?您需要手動運行需要超過27小時的查詢嗎?也許你應該重新評估一下情況...... – GreyBeardedGeek

+0

你真的不應該在生產中運行需要幾分鐘左右的查詢。如果有大量數據,請小批量運行。 – Aaronaught

+1

謝謝!我需要從50 GB表中提取一些信息並將它們放入新表中。在這個提取過程中,我做了一些內存中的連接,用相應的ID(外鍵)替換一些文本屬性。我不明白爲什麼這個查詢需要超過99,999秒,但是當我調查它運行一些'EXPLAIN'時,我很想知道是否有任何方法可以繞過MySQL Workbench中這個99,999秒的限制。通常設置爲參數0意味着無限:有沒有解釋爲什麼MySQL Workbench不允許這樣的技術問題? –

回答

4

大概沒有人會想到你會需要這麼高的超時,所以你被限制到什麼是可設置目前。但是在http://bugs.mysql.com上打開一個功能請求,建議將0完全禁用超時或允許更大的值。

+0

謝謝,完成:http://bugs.mysql.com/bug.php?id=69395 –

+0

現在修正了這個錯誤。 –

1

那麼,在歐洲,我們考慮逗號十進制分隔符。你真的意味着100k秒嗎?我在您的評論中看到您正在處理50 GB。即便如此,如果你需要超過一個小時,你錯過了Indeces。您必須知道,他們不會在單個查詢中正確重建,因此,如果您加入大量插入,則可以掃描到行的笛卡爾積 - 換句話說,您的查詢可能會運行數週甚至數月。

解決方案:

1)填寫基本數據,不使用聯接在這裏。 2)改變表格來設置索引。 3)運行「分析」4)做其他事情。

如果您覺得您在遵循該過程時遇到問題,請使用EXPLAIN關鍵字預先填寫您的查詢併發布結果。

(我有一個cronjob進口約80GB的地方,每隔30分鐘 - MySQL的一定可以處理這個問題。)

+0

謝謝你的建議,是的,我的意思是100k秒。使用索引的確可以將運行時間減少到1小時,但是我仍然很想知道在MySQL Workbench中如何執行查詢需要超過99,999秒:)我沒有看到在這個限制點上。 –

1

此問題現已在MySQL Workbench 6.0.3(2013-07-09)中解決:請參閱bug reportchange log