记一次修改MYSQL表引擎的类型的过程
有一个日志表,看了一下接近900M,很大了,这种表用innodb完全是浪费,改成 MyISAM。执行命令
ALTER TABLE `security_access_log` ENGINE = MyISAM;
这里有个问题,执行的时候,发现超过30秒,命令中断了。
所以需要考虑当表内容多的时候,这个命令是需要消耗较长时间的。
Error Code: 2013. Lost connection to MySQL server during query
查了一下,发现这个问题是mysql workbench客户端导致的。
修改方式可以看这里。改为需要重新连接一次。
解决完上面的问题,又出现下面的错误。换一个存储类型还真是不容易。
Error Code: 1206. The total number of locks exceeds the lock table size
解决方法在这里。把 innodb_buffer_pool_size 参数改大一点。
show variables like "innodb_buffer_pool_size";
SET GLOBAL innodb_buffer_pool_size=83880608;
表结构变更,需要调整几个数据库参数。
根据自己系统配置修改如下参数,以加快变更速度(记得以前的值,一会还得改回来)
SET GLOBAL sort_buffer_size=64*1024*1024;
SET GLOBAL tmp_table_size=64*1024*1024;
SET GLOBAL read_buffer_size=32*1024*1024;
SET GLOBAL read_rnd_buffer_size=32*1024*1024;
参考链接:
(75条消息) mysql更改表引擎INNODB为MyISAM的方法总结_从心所愿的博客-CSDN博客_innodb转myisam