起因是系统对大数据表启用分表,然后在手动转移数据的时候占用数据库大量资源,导致系统正常业务无法运行。
表的数据量大约为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相关线程,然后静等,最好是所有线程全部停掉