您的位置:首页 > 数据库 > MySQL

mysql设计规范之性能优化

2016-06-06 00:00 579 查看
性能优化 – 综合
理解业务,切合业务特点的优化效果最好
业务规划,容量预估,建立基线模型
压测数据采集,预留峰值
尽一切努力减少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+

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

性能优化 – 误区
分配内存越多越好,可能导致OS Swap
session级内存分配过大,导致OOM
索引越多越好,可能导致更多IO
Qcache设置过大,实际效果差
人云亦云,不自己动手实践
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: