• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 修改Innodb的数据页大小以优化MySQL的方法

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

作者:吴炳锡 字体:[增加 减小] 来源:互联网 时间:2017-05-11

吴炳锡通过本文主要向大家介绍了mysql innodb,mysql innodb引擎,mysql engine innodb,mysqlinnodbdialect,mysql5innodbdialect等相关知识,希望本文的分享对您有所帮助

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

   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
</div>

例子:
 更改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
</div>

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 探讨:innodb与myisam在存储上有何特点和区别
  • 深入MySQL存储引擎比较的详解
  • 浅谈MySQL存储引擎选择 InnoDB与MyISAM的优缺点分析
  • 深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较
  • 关于mysql中innodb的count优化问题分享
  • MySQL Innodb表导致死锁日志情况分析与归纳
  • 关于mysql innodb count(*)速度慢的解决办法
  • InnoDB引擎数据库主从复制同步新的分享
  • MyISAM和InnoDB引擎优化分析
  • mysql之innodb的锁分类介绍

相关文章

  • 2017-05-11MySQL中slave监控的延迟情况分析
  • 2018-12-05通过SQLServer 2008 操作 MySQL的方法
  • 2017-08-07mysql数据库根据datetime数据查询某一时间区间的数据数量
  • 2018-12-05MySQL数据库如何备份与恢复?
  • 2017-05-11在MySQL中使用mysqlbinlog flashback的简单教程
  • 2018-12-05mssql存储过程表名和字段名为变量的实现方法
  • 2018-12-05MySQL性能优化的17个要点
  • 2018-12-05MySQL ODBC 3.51 Driver配置时出现Access Denied的问题解决
  • 2018-12-05收藏!MacOSS通过DMG文件安装MySQL之后报错的解决方案
  • 2018-12-05关于mysql中innodb的count优化问题分享

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oracle 11gR2 RAC安装 报【INS-20802】(PRVF-5436) 错误
    • MySQL性能优化
    • Oracle 函数大全
    • mysql自动化安装脚本(ubuntu and centos64)
    • 推荐10篇mysql_error使用实例
    • 推荐10款常用的数字辅助用法,欢迎下载!
    • MySQL下的RAND()优化案例分析
    • python之mysqldb模块在windows下安装方法
    • 【MySQL 02】数据库总结
    • 提高MySQL中数据装载效率

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有