淘宝海量数据库之六-克服随机IO难题 oceanbase

from: http://blog.sina.com.cn/s/blog_3fc85e260100qwv8.html

磁盘随机 IO 性能常常是数据库性能的决定因素,即使是 15000RPM SAS 盘,单盘也很难超过 300IOPS ,对于传统关系数据库,磁盘随机 IO 是个多年的老大难问题,目前尚无令人满意的解决方案,风轻扬的博客 ( 数据库如何抵抗随机 IO :问题、方法与现实, http://wangyuanzju.blog.163.com/blog/static/13029201132154010987/ ) 一文中提到了一些关于此问题进展。

与传统磁盘相比, SSD 固态盘提供了非常好的随机读性能,单盘可达 35000IOPS (4KB) 甚至更高,并提供 512MB/s 或以上的读出带宽。但通常 SSD 盘的随机写性能甚至比一般磁盘更差,这是因为,尽管 SSD 的读和写都以 4KB (page) 为单位,但 SSD 写入前需要先擦除已有内容,而擦除以块 (block) 为单位,一个块 (block) 通常是 128 个连续的页 (page) ,即 512KB 。假如写入的页 (page) 内有内容,即使是写入一个字节, SSD 也需要把整个 128 (512KB) 内容先读到内存,与要写入的内容融合,擦除这 128 页所在的块 (block) ,然后再重新写入整个 512KB 数据,这就是 SSD 盘的写入放到效应。

淘宝海量数据库之六-克服随机IO难题

( 图片来自于“ SSD 的写入放大 - Write amplification ”,

http://iqalantam.blog.163.com/blog/static/5393552201121481111304/)

假设每次随机写入 1KB ,即便 SSD 能够提供 1K / 秒的随机写入能力,根据上面的分析,对应的写入放大将把 SSD 512MB/s 的读出带宽全部消耗掉,也就是说,这种情况下, SSD 已经无法提供读服务。因此,在传统关系数据库中,普通 SSD 难以获得令人满意的性能。

淘宝海量数据库 OceanBase 采用与经典关系数据库不同的设计: OceanBase既 实现了增删改在内的跨行跨表写事务,又完全摒弃了随机写,除了操作日志 (commit log) 总是顺序追加写入到普通 SAS 盘上,剩下的写请求就是对响应时间要求不是很高的批量顺序写, SSD 盘完全可以轻松应对,而许多响应查询请求的随机读,更可以充分发挥 SSD 良好的随机读性能

从测试结果来看, OceanBase 在一台装有多块 SSD 盘的服务器上获得了数万 QPS 的查询性能 ( 大约是所有 SSD 盘的聚合 QPS 40% 左右,因此还有提升空间 ) ,这使得一台装备 SSD 盘的服务器可以提供 5-10 台同样配置但装备 15000RPM SAS 盘的服务器。尽管 SSD 盘大约是同样容量的 SAS 盘价格的 3~4 倍,在 OceanBase 数据库环境下,由于机器数量的大幅度减少,不仅机器采购成本降低了,机架、网络带宽等运维费用更是大幅度降低,总体成本也降低很多。

此外,由于 SSD 盘的功耗 ( 0.06W-3.5W) 明显低于 SAS (12W-15W 3.5”) ,因此能源消耗的降低更多。

你可能感兴趣的:(能源,Blog)