mysql innodb change buffering 简单介绍
2013-01-23 16:08
435 查看
转自:http://www.dbunix.com/?p=3105
线上库的alert.log中出现如下错误信息:
尝试修改三个参数不同值来启动mysqld,修改成如下值时
能够启动mysqld,但无法写操作:
类似bug如下:
暂时解决:
以上信息来自印风同学,这里想简单介绍一下change buffering是什么,到底有什么用?
change buffering是MySQL5.5加入的新特性,change buffering是insert buffer的加强,insert buffer只针对insert有效,change buffering对insert、delete、update(delete+insert)、purge都有效。当修改一个索引块(secondary index)时的数据时,索引块在buffter pool中不存在,修改信息就会被cache在change buffer中,当通过索引扫描把需要的索引块读取到buffer
pool时,会和change buffer中修改信息合并,再择机写回disk。
目的还是为了减少随机IO带来性能损耗,说明白了:把随机IO尽量变成顺序IO。现在SSD盛行,在SSD上随机访问和顺序访问性能几乎差不多的情况下,change buffering特性不会带来多大的性能提升,但对于廉价的机械硬盘,这个参数还是能帮助提高性能的。
change buffering由参数innodb_change_buffering控制:
这篇文章没什么新意,第一天上班,看到印风同学写得邮件,以前没太在意change buffering特性,今天结合文档学习一下,随意记录一下。
MySQL5.5目前用得还不多,所以遇到的bug还有限,大范围推广,还需要做更多测试。
参考:
线上库的alert.log中出现如下错误信息:
120120 11:21:16 InnoDB: Assertion failure in thread 1133807936 in file ibuf0ibuf.c line 4233 InnoDB: Failing assertion: page_get_n_recs(page) > 1
尝试修改三个参数不同值来启动mysqld,修改成如下值时
innodb_purge_threads=0 innodb_change_buffering=changes innodb_force_recovery=4
能够启动mysqld,但无法写操作:
root@test 02:45:26>insert into t values (2); ERROR 1030 (HY000): Got error -1 from storage engine
类似bug如下:
http://bugs.mysql.com/bug.php?id=61104
暂时解决:
可以考虑切到备库,暂时停用change buffering特性
以上信息来自印风同学,这里想简单介绍一下change buffering是什么,到底有什么用?
change buffering是MySQL5.5加入的新特性,change buffering是insert buffer的加强,insert buffer只针对insert有效,change buffering对insert、delete、update(delete+insert)、purge都有效。当修改一个索引块(secondary index)时的数据时,索引块在buffter pool中不存在,修改信息就会被cache在change buffer中,当通过索引扫描把需要的索引块读取到buffer
pool时,会和change buffer中修改信息合并,再择机写回disk。
目的还是为了减少随机IO带来性能损耗,说明白了:把随机IO尽量变成顺序IO。现在SSD盛行,在SSD上随机访问和顺序访问性能几乎差不多的情况下,change buffering特性不会带来多大的性能提升,但对于廉价的机械硬盘,这个参数还是能帮助提高性能的。
change buffering由参数innodb_change_buffering控制:
all:buffer inserts, delete-marking operations, and purges. none:Do not buffer any operations. inserts:Buffer insert operations. deletes:Buffer delete-marking operations. changes:Buffer both inserts and delete-marking. purges:Buffer the physical deletion operations that happen in the background.
这篇文章没什么新意,第一天上班,看到印风同学写得邮件,以前没太在意change buffering特性,今天结合文档学习一下,随意记录一下。
MySQL5.5目前用得还不多,所以遇到的bug还有限,大范围推广,还需要做更多测试。
参考:
http://dev.mysql.com/doc/refman/5.5/en/innodb-performance-change_buffering.html http://blogs.innodb.com/wp/2010/09/mysql-5-5-innodb-change-buffering/[/code]
相关文章推荐
- mysql5.5新特性:innodb_change_buffering
- MySQL5.5数据库innodb_change_buffering怪异问题分析
- mysql5.5新特性:innodb_change_buffering
- 触发器的介绍及MySQL触发器的简单例子
- 简单介绍ubuntu server与desktop关系以及解决ubuntu server下的mysql无法被远程连接
- MySQL 此例简单介绍基于docker的mysql安装与双主互备
- MySQL引擎介绍ISAM,MyISAM,HEAP,InnoDB
- php操作Mysql简单介绍:连接mysql|打开数据库|查询|关闭mysql
- MySQL存储引擎 InnoDB 介绍
- MySQL InnoDB索引介绍及优化
- mysql之innodb的锁分类介绍
- PHP 17: MySQL的简单介绍
- 简单介绍MySQL中的事务机制
- 简单介绍MySQL中GROUP BY子句的使用
- MySQL的MyISAM InnoDB区别简单笔记!
- 一、mysql分表简单介绍
- mysql视图的简单介绍
- Mysql之索引的简单介绍
- Mysql中错误日志、binlog日志、查询日志、慢查询日志简单介绍
- MySQL--引擎介绍MyISAM VS InnoDB