我们在使用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
INSERT INTO mdowen VALUES (2,REPEAT(‘www.myhandan.com’,100))
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
6.删除id为1的数据之后我们再看mdowen.MYD文件的大小
这个时候我们看到,.虽然我们已经删除了id为1的数据,但是文件的大小还是619008KB.没有发生变化.
这个时候,数据文件内就已经需要进行碎片整理了.
7.这个时候我们执行 OPTIMIZE TABLE
mdowen;
现在我们再看mdowen.MYD文件的大小.发现文件的大小已经由原来的619008KB变为了412672KB.