实验环境
MySQL: 5.1.53-community
Navicat:9.0.15.0 Premium
Operating System:Windows Vista Business 32 bit SP2
CPU:T9300
Memory: DDR2 800 2G*2 =4G
Hard Driver:Seagate 7200 16M
查询MySQL的版本语句:select version();
实验目的:使用optimize table tablename 语句来解决大文本数据空洞的问题,并且计算使用Navicat对大型数据库表进行备份和恢复数据库表所占用的时间。
创建数据库表,并设置数据库引擎为MYISAM,默认字符为utf8。content字段类型为text。
重复插入数据到表中,数据表中的数据将以倍数进行增长。
当执行插入33554432条数据的执行时间是4分58.03秒。
统计总共插入数据库表中的数据条数。
使用Navicat将数据导出之后的大小和时间,左边为数据库文件的大小,右边是导出语句的条数和时间。可见5K多万条数据导出来之后所占用的磁盘空间接近3G。
将数据导入到数据库中,使用了7255.073秒,才把数据导入到数据库中。
数据库没有优化之前的大小。
统计使用optimize table test 语句优化表后的数据库文件大小,比没有优化之前缩小了大约300M大小的存储空间。如果在删除数据之后,不使用optizize 优化表的话,数据库将还是保持6K多万条数据的大小。
删除数据库表还是蛮快的。
总结:在我们进行对MySQL数据库进行备份的时候,如果数据库采用的引擎是MYISAM,最好先将数据库进行优化,之后再对数据库进行备份。这样可以为我们节省一大部分磁盘空间。再者考虑到导入数据的速度,建议大家将导出的数据库文件设置成固定的大小,那样将数据库文件导入的时候就可以进行多进程同时导入,可以节省很大一部分时间。