小编给大家分享一下MySQL中slow_log表无法修改成innodb引擎怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

背景

从mysql.slow_log 获取慢查询日志很慢,该表是csv表,没有索引。

想添加索引来加速访问,而csv引擎不能添加索引(csv引擎存储是以逗号分割的文本来存储的),只能改存储引擎来添加索引了

mysql.slow_log表能改成myisam,不能改成innodb

mysql>setglobalslow_query_log=off;QueryOK,0rowsaffected(0.00sec)mysql>altertablemysql.slow_logengine=innodb;ERROR1579(HY000):Thisstorageenginecannotbeusedforlogtables"mysql>altertablemysql.slow_logengine=myisam;QueryOK,33760rowsaffected(0.37sec)Records:33760Duplicates:0Warnings:0

mysql.general_log也不能改成innodb

mysql>altertablemysql.general_logengine=myisam;QueryOK,242956rowsaffected(2.41sec)Records:242956Duplicates:0Warnings:0mysql>altertablemysql.general_logengine=innodb;ERROR1579(HY000):Thisstorageenginecannotbeusedforlogtables"

官方文档

官方文档说明,日志表只支持csv引擎和myisam引擎。

为什么不支持innodb引擎并未说明

基于什么来考虑不支持innodb表的了?

像朋友请教了下

估计是日志表 这种引擎会耗费大量的redo, undo 资源吧

这是没有必要的。。。这些数据不重要。。

更改日志表存储引擎

SET@old_log_state=@@global.general_log;SETGLOBALgeneral_log='OFF';ALTERTABLEmysql.general_logENGINE=MyISAM;SETGLOBALgeneral_log=@old_log_state;

归档日志表

USEmysql;DROPTABLEIFEXISTSgeneral_log2;CREATETABLEgeneral_log2LIKEgeneral_log;RENAMETABLEgeneral_logTOgeneral_log_backup,general_log2TOgeneral_log;

以上是“MySQL中slow_log表无法修改成innodb引擎怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!