`

更改Innodb 数据页大小优化MySQL

阅读更多

原文链接http://www.mysqlsupport.cn/change_innodb_page_size/

作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究。
我们知道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_SHIFT14

/* Maximum number of parallel threads in a parallelized operation */
#define UNIV_MAX_PARALLELISM32

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_SHIFT12 if UNIV_PAGE_SIZ=4K
#define UNIV_PAGE_SIZE_SHIFT13 if UNIV_PAGE_SIZ=8K
#define UNIV_PAGE_SIZE_SHIFT15 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_SHIFT13

/* Maximum number of parallel threads in a parallelized operation */
#define UNIV_MAX_PARALLELISM32

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

分享到:
评论

相关推荐

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

    实际上,虽然MySQL官方并未提供修改InnoDB数据页大小的直接选项,但是有经验的DBA可以通过修改源代码来实现这一目标。这个过程涉及到对MySQL源代码的深入理解和编译,因此需要谨慎操作。以下是修改InnoDB数据页大小...

    mysql 5.6 新特性-innodb

    - **第二层优化**:优化了并发读取计数器的处理方式,通过使用缓存行大小对齐的计数器数组来减少缓存一致性问题,从而进一步提高并发性能。 2. **Buffer Pool Flushing**: - 原有的模糊检查点策略(Fuzzy ...

    MySQL InnoDB 查询优化实现分析

    ### MySQL InnoDB 查询优化实现分析 #### 一、目的与背景 本文旨在深入探讨 MySQL + InnoDB 存储引擎在实现查询优化时所采取的方法及其内部机制。通过具体实例和详细的技术解析,揭示 InnoDB 如何高效处理各种查询...

    InnoDB数据页结构1

    InnoDB数据页是MySQL数据库中InnoDB存储引擎管理数据的基本单位,每个数据页通常有16KB的大小。数据页不仅包含用户记录,还包含其他元数据信息,帮助InnoDB有效地存储和检索数据。以下是数据页结构的详细分析: 1. ...

    MySQL Innodb 参数详解与优化实践

    ### MySQL Innodb 参数详解与优化实践 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,其InnoDB存储引擎因其高可靠性和事务处理能力而备受青睐。为了充分发挥InnoDB的优势并针对特定场景进行性能...

    MySQL数据页功能性能测试innodb-page-size

    数据页的大小可以通过参数 `innodb_page_size` 进行调整,该参数自 MySQL 5.6 版本起引入,允许设置为 8KB、4KB 或者默认的 16KB。在数据库初始化时就需要设定该值,一旦数据表被创建,再尝试更改此参数会导致错误。...

    MySQL性能优化InnoDB buffer pool flush策略

    MySQL 中 InnoDB 存储引擎使用 buffer pool 来缓存从磁盘读取到内存的数据页。Buffer pool 通常由数个内存块加上一组控制结构体对象组成。内存块的个数取决于 buffer pool instance 的个数,但是在 5.7 版本中开始...

    MySQL InnoDB存储引擎特性全揭秘

    - **物理逻辑日志**:记录了对数据页所做的物理更改,用于崩溃恢复。 - **没有 Oracle 归档重做日志**:InnoDB 不支持归档重做日志,所有重做日志文件都会循环使用。 #### 表空间的内部组织结构 表空间内部由多...

    windows平台mysql优化配置

    在Windows平台上对MySQL进行优化配置是一项重要的任务,它不仅能够提升数据库系统的性能,还能确保数据处理的效率与安全性。本文将详细介绍如何针对Windows平台下的MySQL服务器进行合理的配置优化,帮助读者更好地...

    mysql性能优化.pptx

    - **MySQL配置文件优化**:修改`my.cnf`文件,优化如`innodb_buffer_pool_size`、`query_cache_size`等关键设置。 - **第三方配置工具**:利用如MySQLTuner、pt-query-digest等工具进行自动化调优。 6. **服务器...

    MySQL InnoDB小结1

    重做日志(Redo Log)用于记录事务对数据页的更改,确保在系统崩溃时能够恢复未完成的事务。此外,还有undo日志,用于回滚事务。 InnoDB的缓冲池(Buffer Pool)是内存中的一大块区域,用于缓存数据和索引页,减少...

    mysql修改最大连接数等优化mysql

    - **监控和调整InnoDB缓冲池大小**:InnoDB缓冲池是InnoDB表数据和索引的缓存区域,适当增大缓冲池的大小可以显著提高查询性能。 - **定期维护表结构**:定期执行`OPTIMIZE TABLE`操作可以帮助整理表结构,减少碎片...

    MySQLjsnm-InnoDBccyq_InnoDB_MYSQL_

    深入理解这些InnoDB的关键特性,可以帮助你在设计和优化MySQL数据库时做出更明智的决策。通过jb51.net提供的资源,你将有机会深入了解InnoDB的工作机制,并学习如何利用这些特性来提升数据库的性能和稳定性。无论是...

    InnoDB性能调节提示

    MySQL的InnoDB存储引擎在处理大量数据和高并发事务时,其性能调优至关重要。以下是一些关于如何配置和优化InnoDB性能的关键提示: 1. **监控InnoDB状态**: 使用`SHOW INNODB STATUS`命令可以查看InnoDB引擎的状态...

    mysql优化,mysql优化

    - 缓冲池(如InnoDB Buffer Pool):对于处理大量数据的MySQL实例,增大InnoDB Buffer Pool的大小可以减少磁盘I/O,提高性能。但要注意,过度配置可能导致内存不足,影响其他系统进程。 - 查询缓存(Query Cache)...

    mysql innodb引擎 知识点总结

    6. **页大小**:InnoDB默认的页大小为16KB,这是其物理存储的基本单位。数据、索引和其他元数据都存储在这些页中。 7. **自增ID**:InnoDB表有一个特殊的内置列,即自动增长列(通常为主键),每次插入新行时,该列...

    Mysql(默认使用引擎是innoDB).pdf

    优化MySQL数据库通常涉及多个方面,如使用合适的数据类型和大小、合理设计数据库表结构、优化SQL语句、合理利用索引以及调整MySQL的配置参数等。例如,通过EXPLAIN关键字可以分析SQL查询的执行计划,从而发现是否...

    XtraDB、InnoDB 内部结构示意图

    标题《XtraDB、InnoDB 内部结构示意图》表明文章将重点介绍MySQL数据库中XtraDB和InnoDB存储引擎的内部架构。...文章还对比了标准InnoDB与XtraDB在配置和特性上的差异,帮助读者更好地理解和优化MySQL数据库的性能。

    MySQL的体系结构及InnoDB表引擎的配置.pdf

    - **InnoDB数据文件和日志文件的位置与大小**:可以通过设置参数来指定InnoDB表空间的存储位置和大小,以优化I/O性能。 5. **日志管理**: - **重做日志(innodb_log_file_size)**:记录事务的更改,用于崩溃...

Global site tag (gtag.js) - Google Analytics