博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL slow_log表不能修改成innodb引擎
阅读量:4627 次
发布时间:2019-06-09

本文共 2147 字,大约阅读时间需要 7 分钟。

背景

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

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

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

3f43be2e702cc9f8b3236a68e55324a2.png

mysql> set global  slow_query_log=off;Query OK, 0 rows affected (0.00 sec)mysql> alter table  mysql.slow_log engine=innodb;ERROR 1579 (HY000): This storage engine cannot be used for log tables"mysql> alter table  mysql.slow_log engine=myisam;Query OK, 33760 rows affected (0.37 sec)Records: 33760  Duplicates: 0  Warnings: 0

mysql.general_log也不能改成innodb

mysql> alter table  mysql.general_log engine=myisam;Query OK, 242956 rows affected (2.41 sec)Records: 242956  Duplicates: 0  Warnings: 0mysql> alter table  mysql.general_log engine=innodb;ERROR 1579 (HY000): This storage engine cannot be used for log tables"

官方文档

7bab22c482418128cfca81646249857f.png

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

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

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

像朋友请教了下

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

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

更改日志表存储引擎并添加索引

mysql.general_log表

set sql_log_bin=0;SET @old_log_state = @@global.general_log;SET GLOBAL general_log = 'OFF';ALTER TABLE mysql.general_log ENGINE = MyISAM;SET GLOBAL general_log = @old_log_state;

mysql.slow_log表

set sql_log_bin=0;set @old_slow_log_state=@@global.slow_query_log;set global slow_query_log='OFF';ALTER TABLE mysql.slow_log ENGINE = MyISAM;alter table mysql.slow_log add index idx_query_time(query_time);set global slow_query_log=@old_slow_log_state;

注意问题

更改日志表的存储引擎需要先关闭日志表,还需要不记录会话的binlog日志

不然,主从复制中,从库会出现sql线程错误

LAST_ERROR_MESSAGE: Worker 1 failed executing transaction '5a459629-1e13-11e9-a99d-74eacb7427c5:377210591' at master log mysql-bin.001278, end_log_pos 40623782; Error 'You cannot 'ALTER' a log table if logging is enabled' on query. Default database: ''. Query: 'ALTER TABLE mysql.slow_log ENGINE = MyISAM'

归档日志表

归档mysql.general_log表

USE mysql;DROP TABLE IF EXISTS general_log2;CREATE TABLE general_log2 LIKE general_log;RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;

归档mysql.slow_log表

USE mysql;DROP TABLE IF EXISTS slow_log2;CREATE TABLE slow_log2 LIKE slow_log;RENAME TABLE slow_log TO slow_log_backup, slow_log2 TO slow_log;
 

参考

 

转载于:https://www.cnblogs.com/YangJiaXin/p/10679854.html

你可能感兴趣的文章
讨论Spring整合Mybatis时一级缓存失效得问题
查看>>
Maven私服配置Setting和Pom文件
查看>>
Xcode10 library not found for -lstdc++ 找不到问题
查看>>
Mysql 8.0.13如何重置密码
查看>>
发布功能完成
查看>>
excel 合并单元格
查看>>
How to Create Modifiers Using the API QP_MODIFIERS_PUB.PROCESS_MODIFIERS
查看>>
待飞笔记(第一天 )
查看>>
解惑好文:移动端H5页面高清多屏适配方案
查看>>
traefik添加多证书
查看>>
忽略UserInterfaceState.xcuserstate
查看>>
ReactNative--Flexbox布局
查看>>
java实现读取文件大全
查看>>
[Cordova] 无法显示Alert视窗
查看>>
借助过度区选择阈值
查看>>
评论列表显示及排序,个人中心显示
查看>>
JavaScript 实现鼠标拖动元素
查看>>
js 模糊查询 (360接口)
查看>>
python+rabbitMQ实现生产者和消费者模式
查看>>
“模态”对话框和“后退”按钮
查看>>