最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

修改Innodb的数据页大小以优化MySQL的方法实例详解

来源:动视网 责编:小采 时间:2020-11-09 08:53:47
文档

修改Innodb的数据页大小以优化MySQL的方法实例详解

修改Innodb的数据页大小以优化MySQL的方法实例详解:这篇文章主要介绍了修改Innodb的数据页大小以优化MySQL的方法,Innodb是MySQL下一个颇具人气的数据引擎,需要的朋友可以参考下我们知道Innodb的数据页是16K,而且是一个硬性的规定,系统里没更改的办法,希望将来MySQL也能也Oracle一样支持多种数据页的大
推荐度:
导读修改Innodb的数据页大小以优化MySQL的方法实例详解:这篇文章主要介绍了修改Innodb的数据页大小以优化MySQL的方法,Innodb是MySQL下一个颇具人气的数据引擎,需要的朋友可以参考下我们知道Innodb的数据页是16K,而且是一个硬性的规定,系统里没更改的办法,希望将来MySQL也能也Oracle一样支持多种数据页的大


这篇文章主要介绍了修改Innodb的数据页大小以优化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,K,在大也没意义了。
同时更改了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!

文档

修改Innodb的数据页大小以优化MySQL的方法实例详解

修改Innodb的数据页大小以优化MySQL的方法实例详解:这篇文章主要介绍了修改Innodb的数据页大小以优化MySQL的方法,Innodb是MySQL下一个颇具人气的数据引擎,需要的朋友可以参考下我们知道Innodb的数据页是16K,而且是一个硬性的规定,系统里没更改的办法,希望将来MySQL也能也Oracle一样支持多种数据页的大
推荐度:
标签: 大小 mysql 优化
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top