当前位置:首页 > 业绩展示 > 国际业绩

Mysql表空间收缩_MySQL示例清除表空间碎片的详细说明

2021-03-31 13:17:49浏览: 123次 来源:网络整理 作者:佚名

MySQL清除表空间碎片的详细示例

碎片化的原因

(1)表的存储将被分段。每当删除一行内容时,该空间将变为空白并留空。一段时间内执行大量删除操作将导致这种保留。空空间变得大于用于存储列表内容的空间;

(2)执行插入操作时,MySQL会尝试使用空白空间,但是如果空白空间尚未被适当大小的数据占用,则仍然无法完全占用空白空间,并且会形成碎片;

(3)当MySQL扫描数据时,它扫描的对象实际上是列表容量要求的上限,即在写入数据的区域中位于峰值位置的部分;

例如:

一个表有10,000行,每行为10个字节,这将占用100,000个字节的存储空间。执行删除操作时,仅剩一行。实际的内容只有10个字节,但是当MySQL读取它时,它仍然将其视为一个100,000字节的表进行处理。因此,碎片越多,对查询性能的影响就越大。

查看表片段大小

(1)检查表的碎片大小

mysql>显示表状态,例如“表名”;

结果中“ Data_free”列的值为片段大小

([2)列出所有已碎片化的表

mysql>选择table_schema数据库,table_name,data_free,引擎

来自information_schema.tables

其中table_schema不在('information_schema','mysql')和data_free> 0;

清除表碎片

([1) MyISAM表

mysql>优化表表名

([2) InnoDB表

mysql> alter table表名engine = InnoDB

引擎不同,OPTIMIZE操作不同yabo亚博app ,MyISAM因为索引和数据是分开的,所以OPTIMIZE可以组织数据文件并重新排列索引。

OPTIMIZE操作将临时锁定表,并且数据量越大,花费的时间越长。毕竟,这不是一个简单的查询操作。因此,无论将命中率设置为“低”mysql 收缩表空间,都不宜在程序中放置“优化”命令,当访问次数增加时,总体命中率也将增加,这肯定会对程序的运行效率产生很大影响程序。更好的方法是成为一个外壳,定期检查mysql中的information_schema.TABLES字段,并查看DATA_FREE字段mysql 收缩表空间,如果它大于0LB彩票网站 ,则表示存在碎片

推荐

清除片段将临时锁定表。数据量越大,花费的时间越长。您可以制作脚本并在访问时间短时定期执行该脚本。例如,在每个星期三的清晨检查DATA_FREE字段,如果它大于您认为的警告值,则只需清除一次即可。

如果您有任何疑问,请留言或访问本网站的社区进行讨论,感谢您的阅读,希望对大家有所帮助亚博yabo888vip登录 ,感谢您对本网站的支持!

上一篇 如何征服双子座男孩