文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

在我之前的测试:使用tpcc-mysql来对三星存储的Percona服务器进行测试中我对比了不同的三星设备。很多SSD的内部页(internal page)大小为4k,同时InnoDB的默认页大小为16k。我怀疑使用不同的innodb_page_size可能会影响系统的整体性能。

幸运的是,MySQL从5.7开始就支持了innodb_page_size选项,所以你能够设置不同的InnoDB的页大小,而不是使用默认的16k。这个选项一直是不怎么方便使用。他不能修改已经存在的数据库的innodb_page_size,但是你能新建一个用了这个参数的新的数据库,并且舒心整个数据集。这个对于生产环境可能是个严重的问题。对不同的表或者索引也可以指定innodb_page_size,并且你还能使用ALTER TABLE foo page_size=4k这个命令来修改他。

第 1 段(可获 1.69 积分)

不管怎样,我们都要尝试使用innodb_page_size=4k来继续我们的测试,先让我们来看一下使用我之前文章里说到的环境,测试的结果。

我们看到固定内存大小的情况下PM1725好于SM863,同时在有足够内存的情况下结果几乎一致。

但是innodb_page_size修改为4k和16k的结果会是怎么样呢?

下面是直接对比结果图:

具体数据(NOTPM下,越多越好):

Buffer Pool, GiBpm1725_16kpm1725_4ksam850_16ksam850_4ksam863_16ksam863_4kpm1725 4k/16k
542427.5773287.071931.542682.2914709.6948841.041.73
1578991.67134466.862750.856587.7231655.1893880.361.70
25108077.56173988.055156.7210817.2356777.82133215.301.61
35122582.17195116.808986.1511922.5993828.48164281.551.59
45127828.82209513.6512136.5120316.91123979.99192215.271.64
55130724.59216793.9919547.8124476.74127971.30212647.971.66
65131901.38224729.3227653.9423989.01131020.07220569.861.70
75133184.70229089.6138210.9423457.18131410.40223103.071.72
85133058.50227588.1839669.9024400.27131657.16227295.541.71
95133553.49226241.4139519.1824327.22132882.29223963.991.69
105134021.26224831.8139631.0324273.07132126.29222796.251.68
115134037.09225632.8039469.3424073.36132683.55221446.901.68

 

第 2 段(可获 3.46 积分)

结果比较有趣的是,用了4k的页面大小性能大概提升了70%,而且只是对PM1725或SM863,但是低端的三星850pro,使用了4k的innodb_page_size后结果反而没有之前的16k好。

我想70%的性能提升肯定不能忽略,即使修改innodb_page_size需要额外的工作,我觉得这也是有必要的。

同时MySQL8.0很有可能把修改这个参数变得更加容易。

第 3 段(可获 1.14 积分)

文章评论