知识大全 Mysql Innodb引擎优化(参数篇)
Posted 分配
篇首语:不畏过往,不惧将来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Mysql Innodb引擎优化(参数篇)相关的知识,希望对你有一定的参考价值。
Mysql Innodb引擎优化(参数篇) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
介绍
InnoDB给MySQL提供了具有提交 回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎 InnoDB锁定在行级并且也在SELECT语句 提供一个Oracle风格一致的非锁定读 这些特色增加了多用户部署和性能 没有在InnoDB中扩大锁定的需要 因为在InnoDB中行级锁定适合非常 小的空间 InnoDB也支持FOREIGN KEY强制 在SQL查询中 你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来 甚至在同一个查询中也可以混合
Innodb 的创始人 Heikki Tuuri
Heikki Tuuri在Innodb的Bug社区里也是很活跃的 如果遇到Bug也可以直接提到社区 得到作者的解答
为什么要学习Innodb的调优
目前来说 InnoDB是为Mysql处理巨大数据量时的最大性能设计 它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的 在数据量大的网站或是应用中Innodb是倍受青睐的
另一方面 在数据库的复制操作中Innodb也是能保证master和slave数据一致有一定的作用
参数调优内容
内存利用方面
日志控制方面
文件IO分配 空间占用方面
其它相关参数
1 内存利用方面
首先介绍一个Innodb最重要的参数
innodb_buffer_pool_size
这个参数和MyISAM的key_buffer_size有相似之处 但也是有差别的 这个参数主要缓存innodb表的索引 数据 插入数据时的缓冲 为Innodb加速优化首要参数
该参数分配内存的原则 这个参数默认分配只有 M 可以说是非常小的一个值 如果是一个专用DB服务器 那么他可以占到内存的 % % 这个参 数不能动态更改 所以分配需多考虑 分配过大 会使Swap占用过多 致使Mysql的查询特慢 如果你的数据比较小 那么可分配是你的数据大小+10% 左右做为这个参数的值 例如 数据大小为50M 那么给这个值分配innodb_buffer_pool_size=64M
设置方法
innodb_buffer_pool_size= G
这个参数分配值的使用情况可以根据show innodb status\\G;中的
BUFFER POOL AND MEMORY
Total memory allocated ;
去确认使用情况
第二个
innodb_additional_mem_pool
作用 用来存放Innodb的内部目录
这个值不用分配太大 系统可以自动调 不用设置太高 通常比较大数据设置 M够用了 如果表比较多 可以适当的增大 如果这个值自动增加 会在error log有中显示的
分配原则
用show innodb status\\G;去查看运行中的DB是什么状态(参考BUFFER POOL AND MEMORY段中) 然后可以调整到适当的值
BUFFER POOL AND MEMORY
Total memory allocated ; in additional pool allocated
参考 in additional pool allocated
根据你的参数情况 可以适当的调整
设置方法
innodb_additional_mem_pool= M
2 关于日值方面
innodb_log_file_size
作用 指定日值的大小
分配原则 几个日值成员大小加起来差不多和你的innodb_buffer_pool_size相等 上限为每个日值上限大小为 G 一般控制在几个LOG文件相加大小在2G以内为佳 具体情况还需要看你的事务大小 数据大小为依据
说明 这个值分配的大小和数据库的写入速度 事务大小 异常重启后的恢复有很大的关系
设置方法
innodb_log_file_size= M
innodb_log_files_in_group
作用 指定你有几个日值组
分配原则 一般我们可以用2-3个日值组 默认为两个
设置方法
innodb_log_files_in_group=
innodb_log_buffer_size
作用 事务在内存中的缓冲
分配原则 控制在 M 这个值不用太多的 他里面的内存一般一秒钟写到磁盘一次 具体写入方式和你的事务提交方式有关 在Oracle等数据库了解这个 一般最大指定为3M比较合适
参考 Innodb_os_log_written(show global status 可以拿到)
如果这个值增长过快 可以适当的增加innodb_log_buffer_size
另外如果你需要处理大理的TEXT 或是BLOB字段 可以考虑增加这个参数的值
设置方法
innodb_log_buffer_size= M
innodb_flush_logs_at_trx_mit
作用 控制事务的提交方式
分配原则 这个参数只有3个值 0 1 2请确认一下自已能接受的级别 默认为1 主库请不要更改了
性能更高的可以设置为0或是2 但会丢失一秒钟的事务
说明
这个参数的设置对Innodb的性能有很大的影响 所以在这里给多说明一下
当这个值为 时 innodb 的事务LOG在每次提交后写入日值文件 并对日值做刷新到磁盘 这个可以做到不丢任何一个事务
当这个值为 时 在每个提交 日志缓冲被写到文件 但不对日志文件做到磁盘操作的刷新 在对日志文件的刷新在值为 的情况也每秒发生一次 但需要注意的 是 由于进程调用方面的问题 并不能保证每秒100%的发生 从而在性能上是最快的 但操作系统崩溃或掉电才会删除最后一秒的事务
当这个值为 时 日志缓冲每秒一次地被写到日志文件 并且对日志文件做到磁盘操作的刷新 但是在一个事务提交不做任何操作 mysqld进程的崩溃会删除崩溃前最后一秒的事务
从以上分析 当这个值不为1时 可以取得较好的性能 但遇到异常会有损失 所以需要根据自已的情况去衡量
设置方法
innodb_flush_logs_at_trx_mit=
文件IO分配 空间占用方面
innodb_file_per_table
作用 使每个Innodb的表 有自已独立的表空间 如删除文件后可以回收那部分空间
分配原则 只有使用不使用 但DB还需要有一个公共的表空间
设置方法
innodb_file_per_table=
innodb_file_io_threads
作用 文件读写IO数 这个参数只在Windows上起作用 在LINUX上只会等于4
设置方法
innodb_file_io_threads=
innodb_open_files
作用 限制Innodb能打开的表的数据
分配原则 如果库里的表特别多的情况 请增加这个 这个值默认是300
设置方法
innodb_open_files=
请适当的增加table_cache
其它相关参数
这里说明一个比较重要的参数
innodb_flush_method
作用 Innodb和系统打交道的一个IO模型
分配原则 Windows不用设置
Unix可以设置 fsync() or O_SYNC/O_DSYNC
如果系统可以禁止系统的Cache那就把他禁了
Linux可以选择 O_DIRECT
直接写入磁盘 禁止系统Cache了
设置方法
innodb_flush_method=O_DIRECT
innodb_max_dirty_pages_pct
作用 控制Innodb的脏页在缓冲中在那个百分比之下 值在范围 默认为
这个参数的另一个用处 当Innodb的内存分配过大 致使Swap占用严重时 可以适当的减小调整这个值 使达到Swap空间释放出来 建义 这个值最大在90% 最小在15% 太大 缓存中每次更新需要致换数据页太多 太小 放的数据页太小 更新操作太慢
设置方法
innodb_max_dirty_pages_pct=
动态更改需要有Super权限
set global innodb_max_dirty_pages_pct= ;
总结
cha138/Article/program/MySQL/201311/29325相关参考
知识大全 巧用MySQL InnoDB引擎锁机制解决死锁问题[1]
巧用MySQLInnoDB引擎锁机制解决死锁问题[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
MySQL性能优化的参数有哪些? 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 此文章主要向大家
我们知道MySQLCluster产品用的主要的引擎为NDB很多人说对于NDB来说执行SQL语句的性能很差但是我觉得主要是没有仔细的探索 对于数据库来说要判断他的性能如何无非是要看两点 对于数据
MySQL数据库存储引擎详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 存储引擎是什么?
如何选择合适的MySQL存储引擎 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! MySQL有多种
知识大全 用Java+MySQL+PHP轻松构建跨平台的搜索引擎
用Java+MySQL+PHP轻松构建跨平台的搜索引擎 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
MySQL5.1.41发布 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!该版本对InnoDB存储引
MySQL优化简明指南浅析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一在编译时优化MySQ
MySQL数据库优化(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库优化是一项很复杂
MySQL性能优化实战 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这段时间由于线上数据库经常