mysql数据页默认大小_修改Innodb的数据页大小以优化MySQL的方法

我们知道innodb的数据页是16k,而且是一个硬性的规定,系统里没更改的办法,希望将来mysql也能也oracle一样支持多种数据页的大小。

但实际应用中有时16k显的有点大了,特别是很多业务在oracle或是sql server运行的挺好的情况下迁到了mysql上发现io增长太明显的情况下,

就会想到更改数据页大小了。

实际上innodb的数据页大小也是可以更改的,只是需要在源码层去更改,然后重新rebuild一下mysql.

更改办法:

(以mysql-5.1.38源码为例)

位置在storage/innobase/include/univ.i ,在univ.i中查找:univ_page_size

/*

database version control

========================

*/

/* the universal page size of the database */

#define univ_page_size (2 * 8192) /* note! currently, this has to be a

power of 2 */

/* the 2-logarithm of univ_page_size: */

#define univ_page_size_shift 14

/* maximum number of parallel threads in a parallelized operation */

#define univ_max_parallelism 32

univ_page_size就是数据页大小,默认的是16k. 后面的备注里标明,该值是可以设置必须为2的次方。对于该值可以设置成4k,8k,16k,32k,64k,在大也没意义了。

同时更改了univ_page_size后需要更改 univ_page_size_shift 该值是2的多少次方为univ_page_size,所以设置数据页分别情况如下:

#define univ_page_size_shift 12 if univ_page_siz=4k

#define univ_page_size_shift 13 if univ_page_siz=8k

#define univ_page_size_shift 15 if univ_page_siz=32k

例子:

更改innodb的数据页为8k,相应修改为:

/*

database version control

========================

*/

/* the universal page size of the database */

#define univ_page_size 8192 /* note! currently, this has to be a

power of 2 */

/* the 2-logarithm of univ_page_size: */

#define univ_page_size_shift 13

/* maximum number of parallel threads in a parallelized operation */

#define univ_max_parallelism 32

重新编译,然后测试测试,再测试。good luck!

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值