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

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

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

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

“ SSD 的写入放大 - Write amplification ”

假设每次随机写入 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”) ,因此能源消耗的降低更多。

【编辑推荐】

  1. 数据库如何抵抗随机IO的问题、方法与现实
  2. 一步一步设计你的数据库之不可轻视的需求分析
  3. 养成一个SQL好习惯带来一笔大财富
  4. MySQL中创建及优化索引组织结构的思路

 

 

责任编辑:艾婧 来源: sunvince的专栏
相关推荐

2011-09-01 10:54:28

OceanBase数据库海量

2011-09-01 10:10:56

OceanBase海量淘宝

2011-08-19 13:28:25

海量数据索引优化

2011-06-01 09:42:53

数据库IO

2011-03-28 08:47:46

海量数据库管理中韩数据库专家

2011-05-12 09:19:36

海量数据库管理

2011-06-03 09:22:04

OracleOracle应用服务器

2015-10-28 17:39:04

ORACLE AIO异步IO

2015-10-28 14:45:35

ORACLE AIO异步IO

2013-04-26 16:18:29

大数据全球技术峰会

2011-03-28 17:07:14

海量数据库

2011-04-01 15:07:29

数据库自动化

2011-06-01 10:59:59

Oceanbase海量数据库

2011-01-05 15:15:01

数据库

2022-09-15 07:05:39

技术架构扩展难题

2018-01-12 14:13:05

华为数字化转型企业业务

2010-08-17 11:17:44

TMC架构超百G

2011-03-01 15:16:08

淘宝Oracle

2009-02-01 13:33:13

Oracle数据库配置

2020-12-14 18:51:21

数据库海量数据
点赞
收藏

51CTO技术栈公众号