使用OPTIMIZE TABLE填补MySQL数据”空洞”. 碎片整理

字体大小: 中小 标准 ->行高大小: 标准

我们在使用MySQL的时候通常会使用到TEXT和BLOB这两个类型的数据结构.

但是TEXT和BLOB通常会引起一些性能的问题.特别注意的就是在执行了大量的删除操作的时候.

删除操作会在数据表内留下很大很大的”空洞”数据,这样数据库的效率就会下降.

为了”去除空洞”我们要定期的对表进行碎片的整理: 使用OPTIMIZE TABLE方法可以对表的碎片进行整理.

1:创建一个测试表mdowen. 添加了字段,id和context. 他们的类型分别的varchar和text

CREATE TABLE mdowen (id VARCHAR(100),context text);

(0 row(s) affected)

Execution Time : 00:00:00:047

Transfer Time  : 00:00:01:266

Total Time     : 00:00:01:313

 

2:我们往mdowen这个表内插入大量的字符串
INSERT INTO mdowen VALUES (1,REPEAT(‘www.myhandan.com’,100))
(1 row(s) affected)

INSERT INTO mdowen VALUES (2,REPEAT(‘www.myhandan.com’,100))

(1 row(s) affected)
INSERT INTO mdowen VALUES (3,REPEAT(‘www.myhandan.com’,100))
(1 row(s) affected)
3.重复插入大量数据

INSERT INTO mdowen  SELECT * FROM mdowen

(196608 row(s) affected)

Execution Time : 00:00:18:266

Transfer Time  : 00:00:00:000

Total Time     : 00:00:18:266

 

4.这个时候我们找到数据的目录,查看当前表的数据大小.

这个时候我的mdowen.MYD 的文件大小已经是619008KB了.

 

5.这个时候我们执行一个删除语句,.删除id为1的数据

DELETE FROM mdowen WHERE id = 1

(131072 row(s) affected)

6.删除id为1的数据之后我们再看mdowen.MYD文件的大小

这个时候我们看到,.虽然我们已经删除了id为1的数据,但是文件的大小还是619008KB.没有发生变化.
这个时候,数据文件内就已经需要进行碎片整理了.

 

7.这个时候我们执行 OPTIMIZE TABLE
mdowen;

现在我们再看mdowen.MYD文件的大小.发现文件的大小已经由原来的619008KB变为了412672KB.

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/67640.html