一個某某庫大概360W,為了提高查詢效率,做點優化,使用optimize table table.name;出現Table does not support optimize, doing recreate + analyze instead 果斷谷歌,查到一段E文。。。
Everytime you do optimize MySQL, by using mysqlcheck -A -o or using ./mysql_optimize from here. You may see the output
Table does not support optimize, doing recreate + analyze instead.
It is because the table that you are using is InnoDB.
You can optimize the InnoDB tables by using this.
復制代碼
代碼如下:
ALTER TABLE table.name ENGINE='InnoDB';
This will create a copy of the original table, and drop the original table, and replace to the original place.
Although this is safe, but I suggest you do backup and test first before doing this.
原來如此,大致意思是說innodb的數據庫不支持optimize,可以用 ALTER TABLE table.name ENGINE='InnoDB'; 該方法會對舊表以復制的方式新建一個新表,然后刪除舊表。雖然這個過程是安全的,但是在進行操作時還是先進行備份為好
還有一種方式:
You can make OPTIMIZE TABLE work on other storage engines by starting mysqld with the --skip-new or --safe-mode option. In this case, OPTIMIZE TABLE is just mapped toALTER TABLE.