mysql 整理表_mysql8 参考手册--对表进行碎片整理

随机插入二级索引或从二级索引中删除可能导致索引碎片化。碎片意味着磁盘上索引页的物理排序与页上记录的索引排序不接近,或者64页块中有许多未使用的页已分配给索引。

碎片的一个症状是表占用的空间超过了它应 “占用”的空间。到底有多少是很难确定的。所有InnoDB数据和索引都存储在B树中,它们的填充因子可能在50%到100%之间变化。碎片化的另一个症状是,这样的表扫描花费的时间比“ 应该 ”花费的时间更多 :

SELECT COUNT(*) FROM t WHERE non_indexed_column <> 12345;

前面的查询要求MySQL执行全表扫描,这是大型表的最慢查询类型。

为了加快索引扫描,您可以定期执行 “ null ” ALTER TABLE 操作,这会导致MySQL重建表:

ALTER TABLE tbl_name ENGINE=INNODB

您还可以使用ALTER TABLE tbl_name FORCE执行“null”ALTER操作来重建表。

ALTER TABLE tbl_name ENGINE=INNODB和ALTER TABLE tbl_name FORCE都使用联机DDL。

执行碎片整理操作的另一种方法是使用mysqldump将表转储到文本文件,删除表,然后从转储文件重新加载它。

如果对索引的插入总是递增的,并且只从末尾删除记录,那么InnoDB文件空间管理算法保证索引中不会出现碎片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值