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
12345678910111213/*DATABASE VERSION CONTROL========================*/ /* The universal pagesize of thedatabase */#define UNIV_PAGE_SIZE (2 * 8192) /* NOTE! Currently, this hasto be apowerof 2 *//* The 2-logarithmof UNIV_PAGE_SIZE: */#define UNIV_PAGE_SIZE_SHIFT 14 /* Maximum numberof parallel threadsin 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,所以设置数据页分别情况如下:
123#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之前下过mysql现在重新下载mysql
例⼦:
更改innodb的数据页为8K,相应修改为:
12345678910111213/*DATABASE VERSION CONTROL========================*/ /* The universal pagesize of thedatabase */#define UNIV_PAGE_SIZE 8192 /* NOTE! Currently, this hasto be apowerof 2 *//* The 2-logarithmof UNIV_PAGE_SIZE: */#define UNIV_PAGE_SIZE_SHIFT
13 /* Maximum numberof parallel threadsin a parallelized operation */#define UNIV_MAX_PARALLELISM 32
重新编译,然后测试测试,再测试。Good luck!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论