mysql设计规范之性能优化

 性能优化 – 综合
理解业务,切合业务特色的优化效果最好
业务规划,容量预估,创建基线模型
压测数据采集,预留峰值
尽一切努力减小IO(磁盘、网络)
转变随机IO为顺序IO
努力提升内存利用率
上线前作好评估审核前端

性能优化 – 架构设计
保持优雅:越小越好,单库100G内
垂直拆分:按功能
水平拆分:按key哈希
单实例下数据表数量不高于1024
单表数据量尽可能不高于1000万
主库写,从库只读、统计、汇总
前端作好一切cache安全

性能优化 – 硬件
NUMA架构,CPU直接和内存打交道
CPU再也不是瓶颈,MySQL多核支持不佳
设备愈来愈廉价,大内存解决不少问题
SSD应用愈来愈普遍,将来是主力
RAID卡可有效提高IOPS及数据安全
RAID卡必须配备BBU,FORCE WB
RIAD卡的条带设置有讲究
FushionIO仍是贵族性能优化

性能优化 – 系统
升级到64位
内核
IO调度:deadline,noop
VM管理:vm.swappiness=0
文件系统:xfs、ext4
全B+树,高效
分配组,提升并发度
延迟分配,减小IO
mount:nobarrier、data=ordered,writeback
加大请求队列:nr_requests
关闭NUMA网络

性能优化 – MySQL
化繁为简
读写分离
加大内存分配
建立合适的索引
减小锁,提升并发
合并随机IO为顺序IO
柔风细雨优于暴风骤雨
屡次批量提交优于频繁提交
使用XtraDB 或 MySQL 5.5+session

性能优化 – 调优工具
systemtap
sar
gdb
gcore
oprofile
pmp (Poor Man's Profiler)
dstat架构

性能优化 – 误区
分配内存越多越好,可能致使OS Swap
session级内存分配过大,致使OOM
索引越多越好,可能致使更多IO
Qcache设置过大,实际效果差
人云亦云,不本身动手实践
 并发

相关文章
相关标签/搜索