数据库存储空间中碎片产生的原因 及如何回收碎片

数据库存储空间中碎片产生的原因 及如何回收碎片,第1张

以MySQL为例,碎片的存在十分影响性能

MySQL 的碎片是 MySQL 运维过程中比较常见的问题,碎片的存在十分影响数据库的性能,本文将对 MySQL 碎片进行一次讲解。

判断方法:

MySQL 的碎片是否产生,通过查看

show table status from table_nameG

这个命令中 Data_free 字段,如果该字段不为 0,则产生了数据碎片。

产生的原因:

1. 经常进行 delete *** 作

经常进行 delete *** 作,产生空白空间,如果进行新的插入 *** 作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用,久而久之就产生了碎片;

演示:

创建一张表,往里面插入数据,进行一个带有 where 条件或者 limit 的 delete *** 作,删除前后对比一下 Data_free 的变化。

删除前:

删除后:

Data_free 不为 0,说明有碎片;

2. update 更新

update 更新可变长度的字段(例如 varchar 类型),将长的字符串更新成短的。之前存储的内容长,后来存储是短的,即使后来插入新数据,那么有一些空白区域还是没能有效利用的。

演示:

创建一张表,往里面插入一条数据,进行一个 update *** 作,前后对比一下 Data_free 的变化。

CREATE TABLE `t1` ( `k` varchar(3000) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8

更新语句:update t1 set k='aaa'

更新前长度:223 Data_free:0

更新后长度:3 Data_free:204

Data_free 不为 0,说明有碎片;

产生影响:

1. 由于碎片空间是不连续的,导致这些空间不能充分被利用;

2. 由于碎片的存在,导致数据库的磁盘 I/O *** 作变成离散随机读写,加重了磁盘 I/O 的负担。

清理办法:

MyISAM:optimize table 表名;(OPTIMIZE 可以整理数据文件,并重排索引)

Innodb:

1. ALTER TABLE tablename ENGINE=InnoDB;(重建表存储引擎,重新组织数据)

2. 进行一次数据的导入导出

碎片清理的性能对比:

引用我之前一个生产库的数据,对比一下清理前后的差异。

SQL执行速度:

select count(*) from test.twitter_11

修改前:1 row in set (7.37 sec)

修改后:1 row in set (1.28 sec)

结论:

通过对比,可以看到碎片清理前后,节省了很多空间,SQL执行效率更快。所以,在日常运维工作中,应对碎片进行定期清理,保证数据库有稳定的性能。

1.内部碎片:

当一个进程装入到固定大小的分区块(比如页)时,假如进程所需空间小于分区块,则分区块的剩余的空间将无法被系统使用,称为内部碎片。

2.外部碎片:

指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。

3.存储管理中都可能产生的碎片:

除了内部碎片和外部碎片,在“分页存储”中,可能产生“页内碎片”,页内碎片是由于进程的最后一页经常装不满一块而形成了不可利用的碎片。

扩展资料

在数据存储领域中,碎片(fragmentation)是指存储空间使用效率低下,结果导致功能、运行效率变低或二者兼而有之的现象。碎片化所造成的影响取决于具体的存储系统以及碎片化的种类。

大部分情况下,碎片化都会导致都会导致存储空间的浪费,此时“碎片”一词亦可指代闲置的空间本身。对于其他的一些系统来说(比如FAT文件系统),数据量一定的前提下,用于存储数据所占的存储空间是一定的,和碎片化的程度无关。

参考资料来源:百度百科-外部碎片

不会的。因为这只会重新调整地理数据库在磁盘中的存储方式。

【拓展】数据库碎片整理:对个人地理数据库或文件地理数据库进行碎片整理。数据库碎片整理 *** 作会重新调整地理数据库在磁盘中的存储方式,因而通常会减小地理数据库的大小并提高性能。

用法:

当个人地理数据库大于 250 MB 时,建议对数据库进行碎片整理。

如果频繁对某个数据库执行数据输入、删除或常规编辑,则应对该数据库进行定期碎片整理以确保最佳性能。

如果在 ArcMap 中打开了某个数据库以供编辑,则无法对其进行碎片整理。要对数据库进行碎片整理,可从“内容列表”中移除引用了该数据库中包含的表或要素类的所有图层。

开始行动:个人和文件地理数据库以二进制文件形式存储在磁盘驱动器中。添加、移除或编辑数据时,这些文件会产生碎片,降低数据库的整体性能。数据库碎片整理工具通过对这些二进制文件进行碎片整理,可重新整理数据库在磁盘中的存储方式,从而减少磁盘中数据库的大小并改善数据库性能。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10822133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存