欢迎来到天天文库
浏览记录
ID:24265620
大小:51.00 KB
页数:3页
时间:2018-11-13
《innodb性能调节提示--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、InnoDB性能调节提示>> 如果Unix的top工具或者B相似的数量)。 如果你存储变长字符串,或者列可能包含很多NULL值,则使用VARCHAR列类型而不是CHAR类型。一个CHAR(N)列总是占据N个字节来存储,即使字符串更短或字符串的值是NULL。越小的表越好地适合缓冲池并且减少磁盘I/O。 当使用roat=pact(MySQL5.1中默认的InnoDB记录格式)和可变长度字符集,比如GB2312或sjis,CHAR(N)将占据可变数量的空间,至少为N字节。 在一些版本的GNU/Linux和Unix上,用Unix的fsync()(InnoDB默认
2、使用的)把文件刷新到磁盘,并且其他相似的方法是惊人的慢。如果你不满意数据库的写性能,你可以试着设置参数innodb_flush_method值为O_DSYNC,虽然O_DSYNC在多数系统上看起来更慢。 当在Solaris10上,为x86_64架构(AMDOpteron)使用InnoDB存储引擎,重要的是使用forcedirectio选项来安装任何为存储与InnoDB相关的文件而使用的数据系统。(默认在Solaris10/x86_64上不使用这个文件系统安装选项)。使用forcedirectio失败会导致InnoDB在这个平台上的速度和性能严重下降。 当导入
3、数据到InnoDB中之时,请确信MySQL没有允许automit模式,因为允许automit模式会需要每次插入都要刷新日志到磁盘。要在导入操作规程中禁止automit模式,用SETAUTOMIT和MIT语句来包住导入语句: SETAUTOMIT=0; /*SQLimportstatements...*/ MIT; 如果你使用mysqldump选项--opt,即使不用SETAUTOMIT和MIT语句来包裹,你也使得快速的转储文件被导入到InnoDB表中。 小心大宗插入的大回滚:InnoDB在插入中使用插入缓冲来节约磁盘I/O,但是在相应的回滚中没有使用这
4、样的机制。一个磁盘绑定的回滚可以用相应插入花费时间的30倍来执行。杀掉数据库进程没有是帮助的,因为回滚在服务器启动时会再次启动。除掉一个失控的回滚的唯一方法是增大缓冲池使得回滚变成CPU绑定且跑得快,或者使用专用步骤,请参阅15.2.8.1节,强制恢复。 也要小心其它大的磁盘绑定操作。用DROPTABLE或CREATETABLE来清空一个表,而不是用DELETEFROMtbl_name。 如果你需要插入许多行,则使用多行插入语法来减少客户端和服务器之间的通讯开支: INSERTINTOyourtableVALUES(1,2),(5,5),...; 这个提
5、示对到任何表类型的插入都是合法的,不仅仅是对InnoDB类型。 如果你在第二个键上有UNIQUE约束,你可以在导入会话中暂时关闭唯一性检查以加速表的导入: SETUNIQUE_CHECKS=0; 对于大表,这节约了大量磁盘I/O,因为InnoDB可以使用它的插入缓冲来在一批内写第二个索引记录。 如果你对你的表有FOREIGNKEY约束,你可以在导入会话过程中通过关闭外键检查来提速表的导入: SETFOREIGN_KEY_CHECKS=0; 对于大表,这可以节约大量的磁盘I/O。 如果你经常有对不经常更新的表的重发查询,请使用查询缓存: [mysq
6、ld] query_cache_type=ON query_cache_size=10M>>>>这篇文章来自..,。
此文档下载收益归作者所有