现在的位置: 首页 > 综合 > 正文

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

2018年04月15日 ⁄ 综合 ⁄ 共 1265字 ⁄ 字号 评论关闭

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”)
,因此能源消耗的降低更多。

抱歉!评论已关闭.