对数据库瓶颈贡献最大的、恐怕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
By David Lin
2013-06-13
Only those who dare to fail greatly can ever achieve greatly