面试题答案
一键面试适用场景
- 表空间碎片整理:当表经过大量的删除、更新操作后,数据行在磁盘上不再紧凑存储,产生碎片,使用
OPTIMIZE TABLE
可重新组织数据,减少碎片,优化磁盘空间使用。例如,频繁删除旧订单记录的订单表。 - 索引优化:若索引出现损坏或由于数据变化导致索引统计信息不准确,
OPTIMIZE TABLE
会重建索引,提升查询性能。比如频繁插入和删除数据的用户表索引。
注意事项
- 锁表问题:
OPTIMIZE TABLE
在执行过程中会锁定表,期间无法进行读写操作,可能影响业务系统正常运行。所以尽量选择业务低峰期执行。 - 执行时间:对于大数据量的表,执行
OPTIMIZE TABLE
可能花费较长时间,需提前评估时间成本,防止影响业务。 - 日志记录:执行此命令会产生大量的重做日志和二进制日志,可能导致日志文件迅速增大,要确保有足够的磁盘空间存储日志。
- 存储引擎支持:并非所有存储引擎都支持
OPTIMIZE TABLE
,如InnoDB存储引擎,自MySQL 5.6起,OPTIMIZE TABLE
对InnoDB表实际执行的是ALTER TABLE
操作,对于MyISAM存储引擎是典型的优化操作,所以需确认存储引擎。