문제

I have a bunch of tables (InnoDB) within several databases (MySQL 8), that I run Garbage Collect scripts on, on daily basis, removing stale records that are no longer needed. All tables do have indexes on them.

Would it make sense / be at all beneficial to optimize all tables, say every week, to increase performance? If so, is there are good command to run, to do so?

I tried doing

sudo mysqlcheck -o --all-databases

But get the following error message:

note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
도움이 되었습니까?

해결책

Don't bother. InnoDB mostly takes care of itself. OPTIMIZE temporarily squeezes out some wasted space, but new waste occurs as inserts/etc happen. The performance benefit of OPTIMIZE is next to nil.

다른 팁

Those messages are normal for InnoDB. You can continue doing so.

The InnoDB Storage Engine performs OPTIMIZE TABLE mydb.mytable; like this

ALTER TABLE mydb.mytable ENGINE=InnoDB;
ANALYZE TABLE mydb.mytable;

I have mentioned this over the years:

I recommend doing analyze daily or weekly

sudo mysqlcheck --analyze --all-databases

Then, do the optimize once a month or once a quarter.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 dba.stackexchange
scroll top