MySQL slow_log表無法修改成innodb引擎詳解
阿新 • • 發佈:2020-01-09
背景
從mysql.slow_log 獲取慢查詢日誌很慢,該表是csv表,沒有索引。
想新增索引來加速訪問,而csv引擎不能新增索引(csv引擎儲存是以逗號分割的文字來儲存的),只能改儲存引擎來新增索引了
mysql.slow_log表能改成myisam,不能改成innodb
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: 0 mysql> alter table mysql.general_log engine=innodb; ERROR 1579 (HY000): This storage engine cannot be used for log tables"
官方文件
官方文件說明,日誌表只支援csv引擎和myisam引擎。
為什麼不支援innodb引擎並未說明
基於什麼來考慮不支援innodb表的了?
像朋友請教了下
估計是日誌表 這種引擎會耗費大量的redo,undo 資源吧
這是沒有必要的。。。這些資料不重要。。
更改日誌表儲存引擎
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;
歸檔日誌表
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;
參考
Selecting General Query Log and Slow Query Log Output Destinations
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。