全部博文(2065)
分类: Mysql/postgreSQL
2010-03-20 15:12:24
高负载下MySQL优化
[摘自 金凯生
优化重点
1、 硬件优化
升级硬件
优化硬件驱动配置
2、 MySQL优化
配置优化
编译参数优化
部署方案优化
3、 系统及应用优化更有效
高负载判断
硬件相关
服务器Load超过经验阀值(top)
查看IO是否繁忙(iostat)
查看服务器连接数是否超标(netstat)
数据库自身指标
并发数(mysqladmin status)
慢查询数
硬件之间的相互影响
|
状态 |
受影响硬件 |
原因 |
导致结果 |
磁盘I/O |
使用率高 |
CPU高 |
频繁读写 |
Load高 |
CPU |
使用率高 |
无 |
慢查询、跨表统计等 |
系统变慢、Load高 |
内存 |
占用swap分区 |
CPU高 |
大量的临时表空间占用 |
系统变慢load高 |
网卡 |
一般不会出问题、因为网卡流量都满的话其他的早就无法支持了 |
服务器之磁盘相关
1、 磁盘IO读写压力
频繁的增、删、改操作
读写分离
调整磁盘子系统参数(提高读写频率)
/proc/sys/vm/dirty_ratio
/proc/sys/vm/dirty_backgroud_ratio
/proc/sys/vm/dirty_writeback_centisecs
/proc/sys/vm/dirty_expire_centisecs(5s---2s)
修改文件系统(ext3 - XFS)
说明:文件系统是非常影响到磁盘IO的效率的!
服务器之内存、CPU
内存成为高负载原因
内存耗尽
Mysql占用了swap分区
服务器其他程序占用内存
CPU成为高负载原因
慢查询
频繁的锁表操作
MySQL配置优化之连接数
连接数过多处理办法
提高mysql连接数阀值
降低前台与DB的连接次数
减少慢查询、提高响应时间
减少或合并锁表操作,提高响应时间
分表分库
分服务器
主从结构、集群
MySQL 配置优化
1、中心工作调节各种类型缓存大小
2、缓存过小、会降低命中。这样直接操作表了影响性能
3、缓存过多,增加内存开销
4、缓存类型
读、写、索引、查询、排序、临时表、关键字等
结束
应用级优化才是王道
1、通过优化select语句
2、调整业务策略较少连接数
3、分解慢查询,提高执行效率