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設置過大,實際效果差
人云亦云,不本身動手實踐
 併發

相關文章
相關標籤/搜索