要扩展到
@MitchWheat’s answer(1直接回答第一个):
OPTIMIZE TABLE在执行一些表压缩后执行ANALYZE TABLE.相当于OPTIMIZE TABLE mydb.mytable;如果表是MyISAM是这样的:
ALTER TABLE mydb.mytable ENGINE=MyISAM;
ANALYZE TABLE mydb.mytable;
MyISAM数据
对于datadir / var / lib / mysql中的MyISAM表mydb.mytable,您有以下文件:
> /var/lib/mysql/mydb/mytable.frm
> /var/lib/mysql/mydb/mytable.MYD(数据)
> /var/lib/mysql/mydb/mytable.MYI(索引)
OPTIMIZE TABLE mydb.mytable会缩小表的.MYD和.MYI文件.
这与InnoDB不同.以下是它的不同之处:
每个表的数据和索引都存储在外部表空间文件中.对于datadir是/ var / lib / mysql和表mydb.mytable,它将存储如下:
> /var/lib/mysql/mydb/mytable.frm
> /var/lib/mysql/mydb/mytable.ibd
执行OPTIMIZE TABLE mydb.mytable时,mytable.ibd会缩小.
只存在/var/lib/mysql/mydb/mytable.frm.表mydb.mytable的所有数据和索引页都存储在系统表空间文件/ var / lib / mysql / ibdata1中.
执行OPTIMIZE TABLE mydb.mytable