技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> MySQL --> 更改Innodb 数据页大小优化MySQL

更改Innodb 数据页大小优化MySQL

浏览:2032次  出处信息

     我们知道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!

建议继续学习:

  1. Innodb IO优化-配置优化    (阅读:6424)
  2. Innodb分表太多或者表分区太多,会导致内存耗尽而宕机    (阅读:6008)
  3. Innodb 表和索引结构    (阅读:4605)
  4. Innodb如何使用内存    (阅读:3876)
  5. InnoDB线程并发检查机制    (阅读:3845)
  6. 快速预热Innodb Buffer Pool的方法    (阅读:3841)
  7. InnoDB的缓存替换策略及其效果    (阅读:3536)
  8. 多版本并发控制:PostgreSQL vs InnoDB    (阅读:3517)
  9. Innodb文件表空间结构    (阅读:3475)
  10. InnoDB之Dirty Page、Redo log    (阅读:3308)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1