数据库与 SSD 的实践与探索 张瑞  @ Alibaba
SSD 技术介绍 <ul><li>SSD 技术介绍: </li></ul><ul><ul><li>存储技术: </li></ul></ul><ul><ul><ul><li>NAND , NOR </li></ul></ul></ul><ul><...
SSD 的性能特点 <ul><li>SSD vs  硬盘: </li></ul><ul><li>SSD : </li></ul><ul><ul><li>IOPS :随机读 35000 ,随机写 5000 </li></ul></ul><ul><...
SSD 的磨损问题 <ul><li>擦除对性能的影响: </li></ul><ul><ul><li>写入单位 page(4K) ,擦除单位 block(512K) </li></ul></ul><ul><ul><li>改写  =  读取 + 擦...
SSD 磨损数据分析 <ul><li>读取 SSD 的 S.M.A.R.T. 信息 </li></ul><ul><ul><li>通过 RAID 控制器读取 SSD 的信息 </li></ul></ul><ul><ul><li>LSI RAID ...
数据库 IO 特点分析 <ul><li>数据库基于磁盘设计 </li></ul><ul><ul><li>Sequential logging </li></ul></ul><ul><ul><li>In-place update </li></u...
数据库和 SSD 应用场景分析 <ul><li>SSD 作为数据主存储 </li></ul><ul><ul><li>简单,依赖硬件优劣 </li></ul></ul><ul><ul><li>性能好,代价高 </li></ul></ul><ul>...
Flashcache 方案简介 <ul><li>Flashcache 简介 </li></ul><ul><ul><li>开源混合存储方案 </li></ul></ul><ul><ul><li>Device mapper 层插件 </li></u...
Flashcache 特性分析 <ul><li>简单使用: </li></ul><ul><ul><li>创建: flashcache_create </li></ul></ul><ul><ul><li>加载: flashcache_load <...
SSD 数据库最佳实践 <ul><li>数据库使用 SSD 的意义 </li></ul><ul><ul><li>CPU 与 IO 性能不均衡 </li></ul></ul><ul><ul><li>提升单机性能 </li></ul></ul><u...
SSD 数据库优化实践 <ul><li>日志文件放在磁盘上 </li></ul><ul><li>控制数据库刷盘的频率 </li></ul><ul><li>增加 spare area :改善写性能 </li></ul><ul><li>IO 调度算...
<ul><li>共享存储方案 </li></ul><ul><ul><li>使用内置 SSD 的存储 </li></ul></ul><ul><ul><li>SSD 存放热点数据   </li></ul></ul><ul><li>Oracle fl...
<ul><li>应用场景: </li></ul><ul><ul><li>DELL R510 , 24G memory , 12 * SAS 磁盘 (RAID10) </li></ul></ul><ul><ul><li>12 节点,单机 1T 数...
<ul><li>SSD 替代磁盘 ? </li></ul><ul><li>MLC 替代 SLC  ? </li></ul><ul><li>Fusion-io or SSD  ? </li></ul><ul><li>Flashcache 只是过渡...
联系方式: Email : [email_address] Twitter : hellodba 新浪微博: hellodba 技术博客: www.HelloDB.net Q & A
Upcoming SlideShare
Loading in …5
×

数据库与ssd的实践与探索-2011数据库技术大会

14,568 views
14,423 views

Published on

Published in: Technology
1 Comment
13 Likes
Statistics
Notes
No Downloads
Views
Total views
14,568
On SlideShare
0
From Embeds
0
Number of Embeds
11,133
Actions
Shares
0
Downloads
0
Comments
1
Likes
13
Embeds 0
No embeds

No notes for slide

数据库与ssd的实践与探索-2011数据库技术大会

  1. 1. 数据库与 SSD 的实践与探索 张瑞 @ Alibaba
  2. 2. SSD 技术介绍 <ul><li>SSD 技术介绍: </li></ul><ul><ul><li>存储技术: </li></ul></ul><ul><ul><ul><li>NAND , NOR </li></ul></ul></ul><ul><ul><ul><li>SLC , MLC </li></ul></ul></ul><ul><ul><li>接口类型: </li></ul></ul><ul><ul><ul><li>SATA , SAS , FC , PCIe </li></ul></ul></ul><ul><ul><li>生产厂家: </li></ul></ul><ul><ul><li>Intel , Fusion-io , STEC , SandForce , HUAWEI </li></ul></ul>
  3. 3. SSD 的性能特点 <ul><li>SSD vs 硬盘: </li></ul><ul><li>SSD : </li></ul><ul><ul><li>IOPS :随机读 35000 ,随机写 5000 </li></ul></ul><ul><ul><li>Throughput : 连续读 250M ,连续写 170M </li></ul></ul><ul><ul><li>Latency : 75us </li></ul></ul><ul><li>磁盘: </li></ul><ul><ul><li>IOPS :随机读 160 ,随机写 160 </li></ul></ul><ul><ul><li>Throughput : 连续读 170M ,连续写 130M </li></ul></ul><ul><ul><li>Latency : 6ms </li></ul></ul><ul><li>SSD 性能分析: </li></ul><ul><ul><li>巨大的 IOPS 优势 </li></ul></ul><ul><ul><li>IO 延时非常低 </li></ul></ul><ul><ul><li>吞吐量相比磁盘无明显优势 </li></ul></ul><ul><ul><li>SSD 需要擦除操作 </li></ul></ul>
  4. 4. SSD 的磨损问题 <ul><li>擦除对性能的影响: </li></ul><ul><ul><li>写入单位 page(4K) ,擦除单位 block(512K) </li></ul></ul><ul><ul><li>改写 = 读取 + 擦除 + 写入 </li></ul></ul><ul><ul><li>擦除的代价高,延时 2ms </li></ul></ul><ul><ul><li>擦除的次数是有限的 </li></ul></ul><ul><ul><li>擦除导致写性能下降 </li></ul></ul><ul><li>SSD 硬件层的作用: </li></ul><ul><ul><li>FTL :物理逻辑地址映射 </li></ul></ul><ul><ul><li>Reclamation :回收策略,异步擦除 </li></ul></ul><ul><ul><li>Wear leveling :均衡写磨损,提升寿命 </li></ul></ul><ul><ul><li>Spare area :减小写入放大,提升写性能 </li></ul></ul><ul><li>厂商数据: </li></ul><ul><ul><li>擦除次数: SLC : 10 万次, MLC : 1 万次 </li></ul></ul><ul><ul><li>写入数据量:随机写 2PB , Intel X25-E(64G) </li></ul></ul>
  5. 5. SSD 磨损数据分析 <ul><li>读取 SSD 的 S.M.A.R.T. 信息 </li></ul><ul><ul><li>通过 RAID 控制器读取 SSD 的信息 </li></ul></ul><ul><ul><li>LSI RAID 控制器 + Intel X25-E 64G </li></ul></ul><ul><ul><li>Megacli + Smartmontools </li></ul></ul><ul><li>SSD 的 S.M.A.R.T. 数据 </li></ul><ul><ul><li>Media Wearout Indicator </li></ul></ul><ul><ul><li>Re-allocated Sector Count </li></ul></ul><ul><ul><li>Host Writes Count </li></ul></ul><ul><li>数据分析与结论 </li></ul><ul><ul><li>写入 40T 数据,磨损率 1% </li></ul></ul><ul><ul><li>SLC 比 MLC 更耐磨损 </li></ul></ul><ul><ul><li>写入数据量与磨损消耗符合预期 </li></ul></ul><ul><ul><li>定期分析,磨损值耗尽前,预防性更换 </li></ul></ul><ul><ul><li>磨损可以预测,寿命无法预测 </li></ul></ul><ul><ul><li>磨损是否是线性的? </li></ul></ul>
  6. 6. 数据库 IO 特点分析 <ul><li>数据库基于磁盘设计 </li></ul><ul><ul><li>Sequential logging </li></ul></ul><ul><ul><li>In-place update </li></ul></ul><ul><li>日志文件顺序写 </li></ul><ul><ul><li>同步写入,响应延迟低 </li></ul></ul><ul><ul><li>连续位置的随机写 IO </li></ul></ul><ul><li>数据文件随机写 </li></ul><ul><ul><li>异步写入 </li></ul></ul><ul><ul><li>大量的随机写 IO </li></ul></ul><ul><li>瓶颈分析 </li></ul><ul><ul><li>IOPS : </li></ul></ul><ul><ul><li>小 IO ,数据文件随机读,随机写,日志文件写 </li></ul></ul><ul><ul><li>吞吐量: </li></ul></ul><ul><ul><ul><li>大 IO ,数据文件连续读 </li></ul></ul></ul>
  7. 7. 数据库和 SSD 应用场景分析 <ul><li>SSD 作为数据主存储 </li></ul><ul><ul><li>简单,依赖硬件优劣 </li></ul></ul><ul><ul><li>性能好,代价高 </li></ul></ul><ul><li>SSD 存放日志文件 </li></ul><ul><ul><li>提升日志响应延迟 </li></ul></ul><ul><ul><li>适合放在传统磁盘 </li></ul></ul><ul><li>SSD 存放热点数据 </li></ul><ul><ul><li>适用于热点数据明显 </li></ul></ul><ul><ul><li>性价比高,不灵活 </li></ul></ul><ul><li>Flashcache 方案 </li></ul><ul><ul><li>应用透明 </li></ul></ul><ul><ul><li>性价比高 </li></ul></ul>
  8. 8. Flashcache 方案简介 <ul><li>Flashcache 简介 </li></ul><ul><ul><li>开源混合存储方案 </li></ul></ul><ul><ul><li>Device mapper 层插件 </li></ul></ul><ul><ul><li>支持 WT 和 WB 模式 </li></ul></ul><ul><ul><li>应用透明 </li></ul></ul>/dev/sda /dev/sdb /dev/mapper/cachedev 这就是 Flashcache : 将两个块设备,虚拟成一个带缓存的块设备 File System VFS http://orczhou.com
  9. 9. Flashcache 特性分析 <ul><li>简单使用: </li></ul><ul><ul><li>创建: flashcache_create </li></ul></ul><ul><ul><li>加载: flashcache_load </li></ul></ul><ul><ul><li>移除: dmsetup remove </li></ul></ul><ul><li>Flashcache 特性: </li></ul><ul><ul><li>脏块阀值: dirty_thresh_pct=90 </li></ul></ul><ul><ul><li>缓存策略: cache_all=0 </li></ul></ul><ul><ul><li>快速删除: fast_remove=1 </li></ul></ul><ul><ul><li>写入合并: write_merge=1 </li></ul></ul><ul><ul><li>回收策略: reclaim_policy=1 </li></ul></ul><ul><ul><li>支持预加载 </li></ul></ul><ul><li>性能分析: </li></ul><ul><ul><li>WB 优于 WT </li></ul></ul><ul><ul><li>性能与命中率成正比 </li></ul></ul>
  10. 10. SSD 数据库最佳实践 <ul><li>数据库使用 SSD 的意义 </li></ul><ul><ul><li>CPU 与 IO 性能不均衡 </li></ul></ul><ul><ul><li>提升单机性能 </li></ul></ul><ul><ul><li>改善用户体验 </li></ul></ul><ul><li>SSD 方案 </li></ul><ul><ul><li>SSD + 硬件 RAID 卡 + RAID 5 </li></ul></ul><ul><ul><li>写 cache 很重要 ( 电池保护 ) </li></ul></ul><ul><ul><li>可靠性高,性能高 </li></ul></ul><ul><li>Flashcache 方案 </li></ul><ul><ul><li>Fusion-io + SAS 磁盘 </li></ul></ul><ul><ul><li>容量与性能平衡 </li></ul></ul><ul><ul><li>性价比高 </li></ul></ul>
  11. 11. SSD 数据库优化实践 <ul><li>日志文件放在磁盘上 </li></ul><ul><li>控制数据库刷盘的频率 </li></ul><ul><li>增加 spare area :改善写性能 </li></ul><ul><li>IO 调度算法: Deadline , NOOP </li></ul><ul><li>MySQL : Percona , Innodb plugin </li></ul><ul><li>减小 page size : 16K -> 8K </li></ul><ul><li>关闭 MySQL 预读 </li></ul><ul><li>文件系统: ext3 , xfs </li></ul>
  12. 12. <ul><li>共享存储方案 </li></ul><ul><ul><li>使用内置 SSD 的存储 </li></ul></ul><ul><ul><li>SSD 存放热点数据 </li></ul></ul><ul><li>Oracle flashcache 方案 </li></ul><ul><ul><li>11gR2 + Oracle Linux </li></ul></ul><ul><ul><li>数据库内置功能 </li></ul></ul><ul><ul><li>仅支持 WT 模式 </li></ul></ul><ul><li>无共享存储方案 </li></ul><ul><ul><li>单机配置 SSD + Dataguard </li></ul></ul><ul><ul><li>高可用如何解决? </li></ul></ul><ul><li>Oracle Exadata </li></ul><ul><ul><li>存储节点内置 flash 存储 </li></ul></ul><ul><ul><li>利用 flashcache 特性提升性能 </li></ul></ul>Oracle 使用 SSD 的方案
  13. 13. <ul><li>应用场景: </li></ul><ul><ul><li>DELL R510 , 24G memory , 12 * SAS 磁盘 (RAID10) </li></ul></ul><ul><ul><li>12 节点,单机 1T 数据,热点数据 200G </li></ul></ul><ul><ul><li>单次访问 IO 量大,用户响应缓慢 </li></ul></ul><ul><ul><li>数据库压力低, QPS 无法提高 </li></ul></ul><ul><ul><li>系统切换后,预热 = 故障 </li></ul></ul><ul><ul><li>MySQL 的缺陷:数据分布离散, Cache 命中率低 </li></ul></ul><ul><li>优化法则: </li></ul><ul><ul><li>减少物理 IO 数量 </li></ul></ul><ul><ul><li>减小 IO 响应延迟 </li></ul></ul><ul><li>优化方案: </li></ul><ul><ul><li>fusion-io 320G + Flashcache </li></ul></ul><ul><ul><li>降低系统预热的时间 </li></ul></ul><ul><ul><li>减小数据库集群规模 </li></ul></ul><ul><ul><li>提升用户体验 </li></ul></ul>Flashcache 应用场景分析
  14. 14. <ul><li>SSD 替代磁盘 ? </li></ul><ul><li>MLC 替代 SLC ? </li></ul><ul><li>Fusion-io or SSD ? </li></ul><ul><li>Flashcache 只是过渡方案 ? </li></ul><ul><li>SSD + Infiniband+iSER+ = 廉价的高性能存储 ? </li></ul><ul><li>存储厂商如何应对 ? </li></ul><ul><li>SSD-based Database </li></ul><ul><li>数据库如何优化 ? </li></ul>未来的发展方向
  15. 15. 联系方式: Email : [email_address] Twitter : hellodba 新浪微博: hellodba 技术博客: www.HelloDB.net Q & A

×