IT技术博客大学习 共学习 共进步

推荐使用innodb_plugin

MySQL支持 2009-11-30 20:20:46 累计浏览 2,622 次

     innodb-plugin 出现差不多有一年了。从功能上性能上都表现的不错。自MySQL-5.1.38后发行的版本中已包括了该功能。(推荐使用MySQL-5.1.40)

    http://dev.mysql.com/doc/refman/5.1/en/innodb.html

    http://planet.mysql.com/entry/?id=20926

    该版本的特性:

    http://www.innodb.com/wp/products/innodb_plugin/license/third-party-contributions-in-innodb-plugin-1-0-4/

    Multiple Background Threads

    ==把后面进程的IO进程,细化并可以分配成多个.以前Linux下该IO只能是四个.现在可以最大调到64个.

    Master Thread I/O Capacity Tuning

    ==内部IO限制.我们现在用的Innoddb内部有同时可以操作100个IO限制.这个限制对于现在高端的磁盘显的太少了

    Asynchronous Read Ahead

    ==这是 Google and Percona 的一个Patch对增强MySQL的IO性能及Buffer中读取速度有所改善.

    Group Commit

    ==该功能是MySQL一直支持的,但支持的不够好.在5.1.38的innodb-plugin-1.0.4中的支持是使用的percona的支持.把该性能支持的更好.

    Adaptive Flushing

    ==自适应的刷新脏页,该功能也是来自percona的支持.对于Innodb checkpoint在原来的情况下在某种条件的触发下要进行一个checkpoint因为某些机制,有时并不能很好的完成,

    出现系统的抖动现象.如:文件的锁问题,文件系统fsync一大片更新数据,对系统io冲击较大。若分隔成多个小数据fsync,能够减少对读的影响。同时结合mysql代码,发现mysql保证两次fsync之间至少有20ms的sleep,这样的话,若将一次fsync变成多次小数据操作,应该能够减少慢查询的比例。(从目前来看,杜绝是不太可能的)。这也是为什么近几年来percona,innodb的barrauda在推独表空间的一个原因吧.

    对于该Patch的引入,它利用10%的IO去做checkpoint从而减少对系统的压力.

    Additional Patches

    ==这部分是Sun的支持.加入了对Solaris的一些特别支持.

    对我们有用的是: 对innodb spin loops做了更好的处理.增大了spin的值.

    对DBA增加一个诱人的地方:

    创建非cluster index时,不用是在Copy表这样一个复杂过程了.

    另外:

     加入了一种新的Innodb文件格式:barracuda ,据说该文件格式对性能提升很高.但要求使用独立表空间.

    http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

    该功能需要加入innodb_file_format=barracuda ,并且需要在配置中文件中声明:innodb_file_per_table

    所以需要使用该功能的朋友建义Dump出来数据后在[mysqld]中设置这两个参数后在导入:

以下是代码片段:
[mysqld]
ignore_builtin_innodb
plugin_dir=/usr/local/mysql/lib/plugin
plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so
innodb_file_format=barracuda
innodb_file_per_table

    Innodb plugin是一个比较让人企待的版本.其实这些功能基本上都被pernoca公司在mysql5.0中实现了.而且我以前使用相关的版本后都是表现良好的.

     所以我觉的对于MySQL5.1.38可以导一份基于独立表空间的数据做一个对比.

    文中提及的percona: http://www.percona.com/

    Google: http://code.google.com/p/google-mysql-tools/wiki/Mysql5Patches

    更多关于innodb 的信息可以参考:http://www.innodb.com

建议继续学习

  1. Innodb IO优化-配置优化 (累计阅读 7,605)
  2. Innodb分表太多或者表分区太多,会导致内存耗尽而宕机 (累计阅读 7,568)
  3. Innodb 表和索引结构 (累计阅读 6,044)
  4. InnoDB线程并发检查机制 (累计阅读 5,606)
  5. Innodb如何使用内存 (累计阅读 5,104)
  6. Innodb文件表空间结构 (累计阅读 5,067)
  7. 快速预热Innodb Buffer Pool的方法 (累计阅读 4,985)
  8. InnoDB的缓存替换策略及其效果 (累计阅读 4,783)
  9. 多版本并发控制:PostgreSQL vs InnoDB (累计阅读 4,564)
  10. InnoDB之Dirty Page、Redo log (累计阅读 4,483)