What does "Table does not support optimize, doing recreate + analyze instead" mean?

  • 11,000
  • Tác giả: admin
  • Ngày đăng:
  • Lượt xem: 11
  • Tình trạng: Còn hàng

That's really an informational message.

Likely, you're doing OPTIMIZE on an InnoDB table (table using the InnoDB storage engine, rather than thở the MyISAM storage engine).

InnoDB doesn't tư vấn the OPTIMIZE the way MyISAM does. It does something different. It creates an empty table, and copies all of the rows from the existing table into it, and essentially deletes the old table and renames the new table, and then runs an ANALYZE đồ sộ gather statistics. That's the closest that InnoDB can get đồ sộ doing an OPTIMIZE.

The message you are getting is basically MySQL server repeating what the InnoDB storage engine told MySQL server:

Table does not tư vấn optimize is the InnoDB storage engine saying...

"I (the InnoDB storage engine) don't tự an OPTIMIZE operation lượt thích my friend (the MyISAM storage engine) does."

"doing recreate + analyze instead" is the InnoDB storage engine saying...

"I have decided đồ sộ perform a different mix of operations which will achieve an equivalent result."

EDIT

This needs đồ sộ reviewed for accuracy. Observed behavior from MySQL 5.7 and also on MariaDB 10.3 Point đồ sộ emphasize, InnoDB and MyISAM are two different storage engines. They operate differently. Is why the messags we see is different.

We are issuing the DDL statements đồ sộ MySQL database server. The MySQL server receives the statement, does the usual syntax kiểm tra parsing, tokens, ... and resolves references đồ sộ tables, columns with lookups in the dictionary.


Beware - tự not use this if you are low on disk space as it is likely đồ sộ cause your server đồ sộ lập cập out trying đồ sộ recreate the very large table. --Danny Staple

Yes, beware diskspace limitation. And how long operation will hold EXCLUSIVE (blocking) lock on the table. If we understand what operations the optimizer is coming up with; typically for large volume of data, I opt for partitioning, which allows operating on standalone tables that can be swapped into (REPLACE) an existing partition.