每个表独立表空间的好处之一是可以从文件大小直接看出表大小。例如:



















3.测试数据和查询语句的产生步骤
主要步骤参照本系列第一篇文章《Oracle 11g R2企业版评测》。然后需要针对SQL Server的特性作修改。
Tpc-h的qgen产生的查询语句基本上满足了MySQL的语法要求,只需要将limit 前面一行的分号去掉即可。为了标识查询的编号,我们在每个查询前面插入prompt 序号。
将修改完成后的22个查询语句保存为mysql_tpch.sql文件。
MySQL的查询计时是默认打开的,因此不需要设置。
4.数据压缩测试
表压缩是INNODB的一个有用的功能,可以显著减少数据在磁盘上占用的空间。
为了启用表压缩功能,必须满足2个先决条件。
1.设置前文提到的innodb_file_per_table参数,启用单个表独立innodb数据文件;
2.设置innodb_file_format=barracuda,指定innodb文件格式为Barracuda。
然后在创建表时就可以指定ROW_FORMAT=COMPRESSED选项来创建压缩表,默认是不压缩的。下面比较一下创建非压缩表和压缩表的时间和空间占用情况。


















可以看出,创建压缩表的时间大约是非压缩表的2倍,占用的磁盘空间大约是非压缩表的1/2。
下面再比较一下查询的性能。




















可以看出单个表一个innodb数据文件的查询性能要好于多个表存放在同一个数据文件,而不压缩(ROW_FORMAT=COMPACT)的表比压缩后的表查询又快1倍。
这里只是一个表的情况,下面,我们将对8个表添加主外键后再比较它们的大小。
另外,压缩的表进行DML操作的效率较低,因此不适用于频繁数据更改的表。