索引碎片清理

本文介绍了如何查询MySQL数据库中的索引碎片,并提供了针对MyISAM和InnoDB引擎表的碎片整理方法。通过`OPTIMIZE TABLE`和`ALTER TABLE`命令,可以有效地整理碎片,提高数据库读写性能。同时解释了索引碎片对数据库性能的影响,包括浪费存储空间和增加磁盘I/O。
摘要由CSDN通过智能技术生成
 #查询数据库表中索引碎片大小等
SELECT
 concat( TRUNCATE ( sum( data_length )/ 1024 / 1024, 2 ), 'MB' ) AS data_size,    #所有数据大小
 concat( TRUNCATE ( sum( max_data_length )/ 1024 / 1024, 2 ), 'MB' ) AS max_data_size, #最大可存数据大小
 concat( TRUNCATE ( sum( data_free )/ 1024 / 1024, 2 ), 'MB' ) AS data_free,   #索引碎片
 concat( TRUNCATE ( sum( index_length )/ 1024 / 1024, 2 ), 'MB' ) AS index_size  #索引大小
       FROM
        information_schema.TABLES
       WHERE
               TABLE_SCHEMA = '数据库名';
show table status like 'orders';  #查看表索引碎片
针对MyISAM引擎表使用
optimize table orders;            #整理碎片   optimize会锁表,时间很长建议空闲操作
针对InnoDB引擎表使用
alter table orders engine = innodb; #该操作会重建表的存储引擎,重组数据和索引的存储
 

MySQL 碎片就是 MySQL 数据文件中一些不连续的空白空间,这些空间无法再被全部利用,久而久之越来多,越来越零碎,从而造成物理存储和逻辑存储的位置顺序不一致。这些碎片的产生既浪费了空间,同时也因为数据从连续规则的存储方式变为随机分散的存储方式,磁盘 IO 会变的繁忙,数据库读写性能也随之下降 说白了就是删除数据后,之前的索引树会生成垃圾需要重新生成索引树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值