mysql独占表空间性能测试

1. 功能比较

  • InnoDB引擎默认是使用的共享表空间,即所有innodb的表数据都在同一个ibdata文件。

这样的话缺点非常明显,当你drop表的时候,这个ibdata的是不会减小的,也就是不能回收表空间。并且,备份表文件的时候是非常痛苦的,因为你不能针对某些表或者库进行备份。

  • 开启 innodb_file_per_table 参数,使用独立表空间

使用独立表空间,每张表的数据和索引会使用一个独立的表空间文件。drop表的可以回收空间;备份可以直接备份这个表的数据文件。

2. 性能比较

  • 既然独立表空间在功能上比共享表空间方便很多,那么,开启 innodb_file_per_table 是否对性能产生影响?

测试工具是sysbench,测试参数是 10个连接,1000万数据,OLTP测试。innodb_file_per_table开启和关闭各测试5次并取平均值进行对比。

P.S. 测试用的机器配置比较低,2cpu、2g内存,所以tps和qps整体都很低。忽略这渣配置吧,主要比较结果。

测试结果

测试结果

开启innodb_file_per_table时比关闭时,qps提高3.4%

开启innodb_file_per_table时比关闭时,tps提高3.2%

通过功能上的对比和性能上的对比,使用独占表空间都要优于共享表空间,建议在配置文件中加入 innodb_file_per_table=1 这一行