(1)随机I/O 数据文件(.ibd):启用独立表空间(innodb_file_per_table=1)。 UNDO区域(ibdata)存储了数据前像,MySQL满足MVCC需要读取UNDO中的前像数据,可能导致随机读取。长时间事务或查询可能增加随机读取次数。 (2)顺序I/O 事务日志(ib_logfile)、二进制日志(binlog.xxxx)、doublewrite buffer(ibdata)、insert buffer(ibdata)、慢查询日志、错误日志、通用日志等。 何时运行OPTIMIZE TABLE:除非进行大量影响数据分布的操作(如大量数据删除或导入),一般不需定期重建索引或OPTIMIZE TABLE。 定期运行OPTIMIZE TABLE不现实,可能导致生产系统不可用。 OPTIMIZE TABLE优化InnoDB主键的物理组织,其他索引不受影响。 数据和索引分布需要时间平衡。 MySQL 5.1建议:删除大部分表数据或频繁更改包含可变长度行的表(如含VARCHAR、BLOB或TEXT列),应使用OPTIMIZE TABLE。 MySQL磁盘空间瓶颈原因:数据库规划不足、业务快速发展、数据爆炸式增长。 业务需预留1到2年数据增长空间,预计数据规模海量时考虑分库分表。