我逃離我的外殼下面的查詢:MySQL查詢與記錄一大批就會被殺死
mysql -h my-host.net -u myuser -p -e "SELECT component_id, parent_component_id FROM myschema.components comp INNER JOIN my_second_schema.component_parents related_comp ON comp.id = related_comp.component_id ORDER BY component_id;" > /tmp/IT_component_parents.txt
的查詢運行較長的時間,然後就會被殺死。
但是,如果我添加LIMIT 1000
,那麼查詢會一直運行到結束,輸出將寫入文件。
我進一步調查,發現(使用COUNT(*)),這將返回的記錄總數是239553163.
約我的服務器的一些信息是在這裏:
的MySQL 5.5.27
+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+----------------------------+----------+
這裏的查詢狀態監視我:
copying to tmp table on disk
sorting results
sending data
writing to net
sending data
writing to net
sending data
writing to net
sending data ...
KILLED
任何猜測這裏有什麼不對?
我已經有這樣的想法,把結果集分成小塊。但試圖看看是否有一種解決方法可以一次完成:) 是的,我需要所有的行。這是我試圖完成的任務所要求的。謝謝你的提示。 –
@ManmohanBishnoi您是連接到共享主機,還是您擁有數據庫服務器?在第一種情況下,主持人很可能已經實施了殺死長查詢的東西(我認爲這就是「KILLED」通知的含義)。共享主機可能(希望;)實施這樣的事情,以保護他們的系統再次類似DoS攻擊。 – RandomSeed
這是一個Amazon RDS大型實例。 我已經用類似數量的記錄運行了長查詢INSERT/UPDATE。所以我想我必須向我的DBA詢問這一點。 –