Innodb IO优化-配置优化

标签: MySQL优化设计 InnoDB I/O | 发表时间:2012-12-16 15:32 | 作者:OurMySQL
出处:http://ourmysql.com

   对于数据库来讲大多瓶颈都出现在IO问题上,所以现在SSD类的设备也才能大行其道。那数据库的IO这块有什么可以优化的吗? 我这里大致谈一下我的看法,希望能达到一个抛砖引玉的效果。

   这里谈一下数据库本身的配置方面

    具体如下:

   配置方面对于IO优化的原则:尽可能能缓存,减少读对数据库的随机IO的请求;同时减少写的随机IO的随时发生,利用各种buffer去缓存。下面来看一下这块的参数:

  • _buffer_pool_size : 这是Innodb最重要的一个配置参数,这个参数控制Innodb本身的缓大小,也影响到,多少数据能在缓存中。建议该参数的配置在物理内存的70%-80%之间。

  • innodb_flush_method: 这个控制Innodb的IO形为,什么:fsync, O_DSYNC之类的,这里不做过多介绍, 建议使用: O_DIRECT, 这样减少操作系统级别VFS的缓存使用内存过多和Innodb本身的buffer的缓存冲突,同时也算是给操作系统减少点压力。

  • innodb_io_capacity: 这个参数据控制Innodb checkpoint时的IO能力,一般可以按一块SAS 15000转的磁盘200个计算,6块盘的SAS做的Raid10这个值可以配到600即可。如果是普通的SATA一块盘只能按100算。(innodb-plugin, Percona有这个参数)

  • innodb_max_dirty_pages_pct : 这个参数据控制脏页的比例如果是innodb_plugin或是MySQL5.5以上的版本,建议这个参数可以设制到75%-90%都行。如果是大量写入,而且写入的数据不是太活跃,可以考虑把这个值设的低一点。 如果写入或是更新的数据也就是热数据就可以考虑把这个值设为:95%

  • innodb_log_file_size : 这个可以配置256M以上,建议有两个以前的日志文件(innodb_log_files_in_group). 如果对系统非常大写的情况下,也可以考虑用这个参数提高一下性能,把文件设的大一点,减少checkpiont的发生。 最大可以设制成:innodb_log_files_in_group * innodb_log_file_size < 512G(percona, MySQL 5.6) 建议设制成: 256M -> innodb_buffer_pool_size/innodb_log_file_in_group 即可。

  • innodb_log_buffer_size : 如果没在大事务,控制在8M-16M即可。

  •     其它对IO有影响的参数(以5.6为准)

  • innodb_adaptive_flushing 默认即可

  • innodb_change_buffer_max_size 如果是日值类服务,可以考虑把这个增值调到 50

  • innodb_change_buffering 默认即可

  • innodb_flush_neighors 默认是开的, 这个一定要开着,充分利用顺序IO去写数据。

  • innodb_lru_scan_depth: 默认即可 这个参数比较专业。

  • innodb_max_purge_lag 默认没启用,如果写入和读取都量大,可以保证读取优先,可以考虑使用这个功能。

  • innodb_random_read_ahead 默认没开启,属于一个比较活跃的参数,如果要用一定要多测试一下。 对用passport类应用可以考虑使用

  • innodb_read_ahead_threshold 默认开启:56 预读机制可以根据业务处理,如果是passprot可以考虑关闭。如果使用innodb_random_read_ahead,建议关闭这个功能

  • innodb_read_io_threads 默认为:4 可以考虑8

  • innodb_write_io_threads 默认为:4 可以考虑8

  • sync_binlog 默认即可: 0

  • innodb_rollback_segments 默认即可: 128

  •    另外5.6的undo log也可以独立配置了,建议单独配置出来。

相关文章

标签: , ,

相关 [innodb io 优化] 推荐:

Innodb IO优化-配置优化

- - OurMySQL
   对于数据库来讲大多瓶颈都出现在IO问题上,所以现在SSD类的设备也才能大行其道. 那数据库的IO这块有什么可以优化的吗. 我这里大致谈一下我的看法,希望能达到一个抛砖引玉的效果.    这里谈一下数据库本身的配置方面.    配置方面对于IO优化的原则:尽可能能缓存,减少读对数据库的随机IO的请求;同时减少写的随机IO的随时发生,利用各种buffer去缓存.

Mysql Innodb 引擎优化

- 彦强 - 阿辉的空间
作/译者:吴炳锡,来源:http://imysql.cn/ & http://www.mysqlsupport.cn 转载请注明作/译者和出处,并且不能用于商业用途,违者必究. InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎. InnoDB锁定在行级并且也在SELECT语句提供 一个Oracle风格一致的非锁定读.

hadoop的IO和MapReduce优化参数

- - CSDN博客系统运维推荐文章
           在MapReduce执行过程中,特别是Shuffle阶段,尽量使用内存缓冲区存储数据,减少磁盘溢写次数;同时在作业执行过程中增加并行度,都能够显著提高系统性能,这也是配置优化的一个重要依据.            下面分别介绍I/O属性和MapReduce属性这两个类的部分属性,并指明其优化方向.

访问日志IO性能优化

- - CSDN博客推荐文章
在高并发量的场景下磁盘IO往往是性能的瓶颈所在,访问日志涉及到频繁的写操作,所以这部分要尽可能地优化,不然将拖累系统的整体性能. 针对文件记录及数据库记录两种方式可以有以下措施提高写性能,. 将日志写入文件的一般操作步骤是打开-写入-关闭,但假如在需要频繁写入日志的场景下,这种方式在性能上肯定会存在问题,因为每次打开关闭都是需要成本开销的,所以必须要想想是否有别的更好的方式,竟然问题出现在打开关闭的次数,那么解决问题思路就从这里下手,可以在第一次打开写入日志后不进行关闭操作,保持打开的状态,下一次写入则无需再次打开可直接写入.

MySQL Innodb 存储引擎参数优化

- jinbiaozhao - 服务器运维与网站架构|Linux运维|互联网研究
InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎. InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读. 这些特色增加了多用户部署和性能. 没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间.

MySQL MyISAM/InnoDB高并发优化经验

- jinbiaozhao - 服务器运维与网站架构|Linux运维|互联网研究
最近做的一个应用,功能要求非常简单,就是 key/value 形式的存储,简单的 INSERT/SELECT,没有任何复杂查询,唯一的问题是量非常大,如果目前投入使用,初期的单表 insert 频率约 20Hz(次/秒,我喜欢这个单位,让我想起国内交流电是 50Hz),但我估计以后会有 500Hz+ 的峰值.

mysql中 innodb表的count()优化

- - haohtml's blog
作/译者:叶金荣(imysql#imysql.com>),来源: http://imysql.com,欢迎转载. 起因:在innodb表上做count(*)统计实在是太慢了,因此想办法看能不能再快点. 现象:先来看几个测试案例,如下. 一、 sbtest 表上的测试. 填充了 100万条 记录.

梦幻西游服务器 IO 的一点优化

- zz - 云风的 BLOG
关注梦幻西游服务器的性能问题,是源于前几天跟同事的聊天. 谈到能否把梦幻西游服务器做成无盘站,或是放进虚拟机里,便于日常维护管理. 意外的了解到,现在磁盘 IO 性能居然成了梦幻西游服务器的瓶颈. 据我所知,梦幻西游的服务器数据储存是这样做的:. 主游戏进程不负责储存,一切都在内存中. 所有玩家的数据就是内存数据结构.

修改numa和io调度优化mysql性能

- 高春辉 - C1G军火库
单机单实例,建议关闭NUMA,关闭的方法有三种:. 1.硬件层,在BIOS中设置关闭;. 2.OS内核,启动时设置numa=off;. 3.可以用numactl命令将内存分配策略修改为interleave(交叉). 修改mysql.server 330行加上numactl. numastat 查看内存分配.

MySQL InnoDB存储引擎参数详解及优化

- - 运维生存时间
这是InnoDB表的目录共用设置. 如果没有在 my.cnf 进行设置,InnoDB 将使用mysq. l的datadir目录为缺省目录. 如果设定一个空字串,可以innodb_data_file_path中设定绝对路径. 数据文件的完整路径由 innodb_data_home_dir 与这里所设定值的组合.