一次批量轉移數據引起的問題

起因是系統對大數據表啓用分表,然後在手動轉移數據的時候佔用數據庫大量資源,導致系統正常業務無法運行。

表的數據量大約爲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相關線程,然後靜等,最好是所有線程全部停掉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章