当前位置: 首页 > news >正文

[译]Innodb 性能优化基础

问一个基础的问题--如果你有一个16G内存的服务器,专用于mysql大型的Innodb数据库.应该做什么样的设置?
 
硬件
如果你的Innodb数据库很大,内存是首要的.16-32G现在很便宜了.CPU方面 2个双核的core 就非常好了.但是这跟应用也有很大的关系.第三是IO系统-DASRAID是很好的选择.一般来说6-8块硬盘就够了,有时可能需要更多.而且新的2.5"SAS硬盘,小却速度快.RAID10对于数据存储和主要是读的场合下十分好.需要冗余性的话RAID5也不错但注意对于RAID5的随机写操作.
 
操作系统
首先 运行64位的操作系统.现在还有很多32位的系统带着很大的内存运行着.建议不要这么做.如果系统是linux,对数据库的目录使用LVM可以获得更高效的备份.ext3文件系统大部分情况下都不会出问题,如果碰到问题的话,试试XFS.如果你使用innodb_file_per_table而且表很多的话可以使用noatimenodiratime选项,但是这样做效果不是很大.Also make sure you wrestle OS so it would not swap out MySQL out of memory.
(最后这句话不知道该如何翻译)
 
MYSQL Innodb 设置
最重要的地方有:
innodb_buffer_pool_size 设为内存的70%-80%都是安全的.我在一个16G的机器上把它设成12G.
UPDATE 关于它具体的查看[url]http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/[/url]
innodb_log_file_size 这取决于你需要的回复速度.256M这个数值是适当的恢复时间和良好性能之间的一个好的平衡.
innodb_log_buffer_size=4M 大多数情况4M足够,除非正将很大的blob数据导入到Innodb中可以增加一点.
innodb_flush_log_at_trx_commit=2 如果你不是很关心ACID,可以容许在系统完全crash的情况下丢失最后一两秒的事务,那么可以设置这个值.它可以极大的提高""的写事务的效率.
innodb_thread_concurrency=8 这个值取决于你的程序,可能高或者低.8是代表起始值.
innodb_flush_method=O_DIRECT 避免双缓冲(double buffering)和降低swap的压力.大多数情况下可以提高性能.但是注意如果你RAID cache不够的话,IO的操作会有麻烦.
innodb_file_per_table 如果你的表不多可以使用这个选项.这样你就不会有不受控的innodb主表空间的增长,这个主表空间是不能重新定义的.这个选项在4.1版中引入,现在可以放心使用.
 
查看你的程序是否可以运行在READ-COMMITED 隔离模式下,如果可以,就可以设为默认的transaction-isolation=READ-COMMITTED.这个选项有一些性能的优势,特别是在5.0,5.1版和行级别的复制方面.
 
其他的可以参考[url]http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/[/url][url]http://www.mysqlperformanceblog.com/mysql-performance-presentations/[/url]
 
应用程序的优化
如果原来是MyISAM,现在你可能需要对应用做一些修改.首先确保你在进行数据库更新的时候使用事务,这对数据一致性和性能都有好处.
其次如果你的应用有写操作的话要注意处理死锁问题.
第三你要重新检视你的表结构,尽可能利用Innodb的优势--主键的群集(clustering by primary key),在所有的索引里面有主键,让主键简单.使用主键来快速查询(在连接中使用),large unpacked indexes (try to be easy on indexes).
 
使用这些基本的innodb性能优化技术,你就会比一般按照默认配置来运行mysql用户上了一个层次.

本文转自yahoon 51CTO博客,原文链接:http://blog.51cto.com/yahoon/76592,如需转载请自行联系原作者

相关文章:

  • 部署SCVMM2008
  • WORD项目符号和编号求助~~~~~~~
  • 11.14 ,11.15Apache和PHP结合(上下);11.16 ,11.17Apache默认虚拟主机(上下)
  • linux+tomcat+oracle_第五步
  • Android之使用文件进行IPC
  • Microsoft Windows2000 advanced server,浏览器是IE5.0升级到IE6.0时出现问题的解决办法...
  • Google替代搜索
  • 面试算法
  • 让“云”无处不在-Citrix Xenserver之三 license server
  • javascript 中的变量提升与函数提升
  • Linux shell笔记
  • Linux文件查找命令find,xargs详述【转】
  • 论调用约定
  • testngpp - next generation unit test framework for c/c++
  • WizKnowledge的插入代码插件
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • docker python 配置
  • JAVA SE 6 GC调优笔记
  • JavaScript 一些 DOM 的知识点
  • Java的Interrupt与线程中断
  • Java读取Properties文件的六种方法
  • Java-详解HashMap
  • Java应用性能调优
  • npx命令介绍
  • OSS Web直传 (文件图片)
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • VUE es6技巧写法(持续更新中~~~)
  • 关于字符编码你应该知道的事情
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 基于遗传算法的优化问题求解
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 如何设计一个比特币钱包服务
  • postgresql行列转换函数
  • 阿里云服务器如何修改远程端口?
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • # centos7下FFmpeg环境部署记录
  • $(function(){})与(function($){....})(jQuery)的区别
  • (Python) SOAP Web Service (HTTP POST)
  • (第一天)包装对象、作用域、创建对象
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (算法二)滑动窗口
  • (一一四)第九章编程练习
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • .gitignore文件设置了忽略但不生效
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET6 命令行启动及发布单个Exe文件
  • .NET建议使用的大小写命名原则
  • .NET上SQLite的连接
  • .NET值类型变量“活”在哪?
  • .net专家(高海东的专栏)