香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > MYSQL >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

修改Innodb的数据页大小以优化MySQL的方法


时间:2020-11-02 13:39 作者:admin610456


我们知道Innodb的数据页是16K,而且是一个硬性的规定,系统里没更改的办法,希望将来mysql/' target='_blank'>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!

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)