起因是系統對大數據表啓用分表,然後在手動轉移數據的時候佔用數據庫大量資源,導致系統正常業務無法運行。
表的數據量大約爲400萬左右,要按月份分表,我直接在navicat上執行的語句
START TRANSACTION;
CREATE TABLE `表名` (
.
.
.
字段
.
.
.
) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='...';
INSERT INTO 表名_3
SELECT
*
FROM
`表名` c
WHERE
MONTH(c.`時間字段`) = '03'
;
COMMIT;
,嗯,圖快還可以了兩個窗口同時執行,成功了一次,第二次系統操作這個表的正常功能受到影響各種獲取鎖超時,然後我直接使用navicat中止這兩段語句的執行,本以爲可以了,沒想到殺死這兩個線程的語句被阻塞了
就47166這個線程,命令是killed
沒辦法,當時想到兩個辦法一個是重新MySQL,然後就是kill掉其他的操作這個表的線程,
由於各種原因,選了第二種方法,停掉了系統關於這個表的相關操作,kill相關線程,然後靜等,最好是所有線程全部停掉