MySQL硬件加速:Flash存儲技術
對數據庫瓶頸貢獻最大的、恐怕I/O是當仁不讓了、
市面上、網絡上一抓一大把的調優理論、都是對I/O下手
然、隨著硬件技術的飛速發展、I/O已經不再是數據庫瓶頸的頭號殺手
那些墨守成規的DBA們、是時候轉變思路啦、醒醒哈、別睡著了
大家伙先看一下MySQL I/O 分析
① InnoDB redo&binlog
同步寫入底層磁盤,順序小IO
IO響應時間要求 <2ms
② 數據文件
數據文件寫:異步IO,後台寫,隨機小IO
數據文件隨機讀:索引查詢,單塊讀,隨機小IO
數據文件順序讀:全表掃描,多塊讀,連續大IO
IO響應時間要求 <5ms
對I/O 響應要求還是比較苛刻的、也難怪早期硬件品質低下時瓶頸出自I/O
不過、別急、在存儲方面、天空一聲巨響、Flash閃亮登場、立馬風靡IT界、血洗I/O
㈠ Flash 存儲技術概況
① 類型
● NAND,NOR
● SLC,MLC
② 接口類型
● SATA
● SAS
● FC
● PCIE
③ 生產廠家
● Intel,Fusionio
● STEC,SandForce
● HUAWEI
㈡ 性能數據比拼
Flash
① IOPS:隨機讀10000-60000,隨機寫5000-60000
② Throughput: 連續讀200M-600M,連續寫200M-600M
③ Latency:30us
Disk
① IOPS:隨機讀 160,隨機寫 160
② Throughput : 連續讀170M,連續寫130M
③ Latency:6ms
㈢ Flash 存儲原理
⑴ Flash 需要擦除
● 允許直接寫入,不允許更新
● 更新 = 讀取 + 寫入 + 擦除
● 擦除代價大,延時2ms
● 寫入單位與擦除單位、單位不一致
● 擦除次數有次數限制
⑵ Firmware的功能
● FTL:物理邏輯地址映射
● Reclamation:回收策略,異步擦除
● Wear leveling:均衡寫磨損,提升壽命
● Reserved space:減小寫入放大,提升寫性能
㈣ Flash 技術的運用
⑴ Flash Disk
① 高IOPS,低容量
② 避免過多的頁擦除和寫放大
③ Flash不適合存放redo
⑵ Flash Cache
① Writeback & writethrough
② 加速讀性能,適合網站型OLTP
③ 注意內存消耗
㈤ 數據庫I/O調整
⑴ MySQL參數
innodb_flush_log_at_trx_commit
innodb_flush_method
innodb_io_capacity
⑵ 塊設備,文件系統
Linux IO策略NOOP,CFQ,DEADLINE
/proc/sys/vm/swappiness
mount -o noatime,nodiratime,barrier=0
⑶ Raid卡緩存控制
BBWC開啟
預讀緩存,寫緩存writeback