2017-08-30 49 views
0

發生了什麼事,我們有一個bash腳本以下MySQL的任務:當MySQL插入一個表格範圍WAIT_TIMEOUT限制

INSERT INTO blah blah blah; 


ALTER TABLE table RENAME TO table_OLD; 

現在MySQL的INSERT查詢11個多小時運行,仍然沒有完成。然後開始ALTER表查詢,使自己等待元數據鎖,因爲INSERT查詢仍在運行(根據「SHOW FULL PROCESSLIST & SHOW ENGINE INNODB STATUS」)。

當mysql插入一個達到wait_timeout限制(8小時)的表時發生了什麼。一旦達到限制,MySQL會在解鎖插入的表的同時繼續運行它嗎?謝謝!

以下是一些測試:當INSERT INTO超過1秒時,INSERT INTO查詢仍顯示正在運行並最終結束。 「Wait_timeout」限制真的有什麼用處?閱讀MySQL用戶手冊後,我仍然很困惑。 (https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_wait_timeout)有什麼想法?

SET SESSION wait_timeout = 1; 

SHOW SESSION VARIABLES LIKE "wait_timeout"; -- 1 

INSERT INTO blah blah blah; 


ALTER TABLE table RENAME TO table_OLD; 

回答