博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[译]Innodb 性能优化基础
阅读量:6113 次
发布时间:2019-06-21

本文共 2019 字,大约阅读时间需要 6 分钟。

问一个基础的问题--
如果你有一个
16G
内存的服务器
,
专用于
mysql
大型的
Innodb
数据库
.
应该做什么样的设置
?
 
硬件
如果你的Innodb
数据库很大,
内存是首要的.16-32G
现在很便宜了.CPU
方面 2
个双核的core 
就非常好了.
但是这跟应用也有很大的关系.
第三是IO
系统-DAS
RAID
是很好的选择.
一般来说6-8
块硬盘就够了,
有时可能需要更多.
而且新的2.5"
SAS
硬盘,
小却速度快.RAID10
对于数据存储和主要是读的场合下十分好.
需要冗余性的话RAID5
也不错但注意对于RAID5
的随机写操作.
 
操作系统
首先 
运行64
位的操作系统.
现在还有很多32
位的系统带着很大的内存运行着.
建议不要这么做.
如果系统是linux,
对数据库的目录使用LVM
可以获得更高效的备份.ext3
文件系统大部分情况下都不会出问题,
如果碰到问题的话,
试试XFS.
如果你使用innodb_file_per_table
而且表很多的话可以使用noatime
nodiratime
选项,
但是这样做效果不是很大.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,如需转载请自行联系原作者
你可能感兴趣的文章
【BZOJ】1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路(floyd)
查看>>
cmake总结
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>
IIS7如何显示详细错误信息
查看>>
ViewPager切换动画PageTransformer使用
查看>>
coco2d-x 基于视口的地图设计
查看>>
C++文件读写详解(ofstream,ifstream,fstream)
查看>>
Android打包常见错误之Export aborted because fatal lint errors were found
查看>>
Tar打包、压缩与解压缩到指定目录的方法
查看>>
新手如何学习 jQuery?
查看>>
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
mysql-python模块编译问题解决
查看>>
熟练掌握doc命令下的文件操作
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
【Linux】linux经常使用基本命令
查看>>
Java 内存区域和GC机制
查看>>
更新代码和工具,组织起来,提供所有博文(C++,2014.09)
查看>>