记一次修改MYSQL表引擎的类型的过程

 

有一个日志表,看了一下接近900M,很大了,这种表用innodb完全是浪费,改成 MyISAM。执行命令

 

ALTER TABLE `security_access_log` ENGINE = MyISAM;

 

这里有个问题,执行的时候,发现超过30秒,命令中断了。

所以需要考虑当表内容多的时候,这个命令是需要消耗较长时间的。

Error Code: 2013. Lost connection to MySQL server during query

查了一下,发现这个问题是mysql  workbench客户端导致的。

修改方式可以看这里。改为需要重新连接一次。

(75条消息) MySQL Workbench:Error Code: 2013. Lost connection to MySQL server during query解决办法_HarryLi的博客-CSDN博客

 

解决完上面的问题,又出现下面的错误。换一个存储类型还真是不容易。

 

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;

【MySQL笔记】mysql报错"ERROR 1206 (HY000): The total number of locks exceeds the lock table size"的解决方法 - 萱草yy - 博客园 (cnblogs.com)

 

表结构变更,需要调整几个数据库参数。

根据自己系统配置修改如下参数,以加快变更速度(记得以前的值,一会还得改回来)

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

 

posted @ 2022-09-08 12:00  nanahome  阅读(78)  评论(0编辑  收藏  举报