2

今天准备聊一下存储设备的进步数据库发展的关系。

一般来说硬件设备无非就是CPU,内存和存储设备。根据木桶理论,制约数据库进步的最短的木板就是存储设备。

木桶原理又称短板理论,木桶短板管理理论,所谓“木桶理论”也即“木桶定律”。
其核心内容为:一只木桶盛水的多少,并不取决于桶壁上最高的那块木块,
而恰恰取决于桶壁上最短的那块。木桶原理是由美国管理学家彼得提出的。
也可称为短板效应。

而这个短板在摩尔定律的加持下,CPU和内存的快速发展的同时,和存储设备(HDD硬盘)之间的差距也越来越巨大。

摩尔定律是由英特尔(Intel)创始人之一戈登·摩尔提出来的。意思是:在价格
不变的基础上,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,
性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。
这一定律揭示了以集成电路为基础的CPU和内存的发展速度,但不幸的是,传统的机械硬盘
(HDD)并不在摩尔定律的范畴内。

这时候,有一个神奇的存储设备出现了。没错, 固态驱动器(Solid State Disk或Solid State Drive,简称SSD)。

提到SSD,就顺便提一下一个传奇的公司: 朗科,和一个传奇的产品:U盘。因为SSD的主流产品,采用了和U盘相同的技术:闪存(flash memory)

SSD的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质,
另外一种是采用DRAM作为存储介质。最新还有英特尔的XPoint颗粒技术。

基于闪存的固态硬盘:
基于闪存的固态硬盘(IDEFLASH DISK、Serial ATA Flash Disk):采用FLASH芯片作为存储介质,
这也是通常所说的SSD。它的外观可以被制作成多种模样,例如:笔记本硬盘、微硬盘、存储卡、U盘等样式。
这种SSD固态硬盘最大的优点就是可以移动,而且数据保护不受电源控制,能适应于各种环境,适合于个人用户使用。
寿命较长,根据不同的闪存介质有所不同。SLC闪存普遍达到上万次的PE,MLC可达到3000次以上,
TLC也达到了1000次左右,最新的QLC也能确保300次的寿命,普通用户一年的写入量不超过硬盘的50倍总尺寸,
即便最廉价的QLC闪存,也能提供6年的写入寿命。
可靠性很高,高品质的家用固态硬盘可轻松达到普通家用机械硬盘十分之一的故障率。

基于DRAM类:
基于DRAM的固态硬盘:采用DRAM作为存储介质,应用范围较窄。
它仿效传统硬盘的设计,可被绝大部分操作系统的文件系统工具进行卷设置和管理,
并提供工业标准的PCI和FC接口用于连接主机或者服务器。应用方式可分为SSD硬盘和SSD硬盘阵列两种。
它是一种高性能的存储器,理论上可以无限写入,美中不足的是需要独立电源来保护数据安全。
DRAM固态硬盘属于比较非主流的设备。

基于3D XPoint类
基于3D XPoint的固态硬盘:原理上接近DRAM,但是属于非易失存储。读取延时极低,
可轻松达到现有固态硬盘的百分之一,并且有接近无限的存储寿命。缺点是密度相对NAND较低,
成本极高,多用于发烧级台式机和数据中心。

其实,闪存(flash memory)是1984年由日本公司东芝发明的。第一款固态硬盘在 1989年也被制造出来。但是由于高昂的价格,一直没有被大规模的商业化。时间到了1999年,人们对一种计算机上的外部存储设备“软盘”越来越嗤之以鼻,因外这个东西容量低,体积大,不方便携带。这时候,两个聪明的中国人(邓国顺和成晓华)敏锐的看到了一个商机:在众多的存储设备中缺少一个容量在几十MB,可以通过 通用串行总线( Universal Serial Bus )的,并且不需要外部电源的可读写的小型外部存储。于是他们辞掉的工作,成立了 深圳市朗科(Netac)科技有限公司。并在 1999年11月14日, 向国家知识产权局申请了U盘专利,随后,两位专利申请人分别向美国、欧洲、日本、香港等国家和地区提交了专利申请。2002年7月24日,中国专利得到授权,专利号ZL99117225.6,简称"99专利"。

image.png

这也是早些年中国可以向国外大公司收取专利费的不多的案例。遗憾的是,由于发明类的专利保护期是20年,这个专利已经在2019年11月13日到期了。但是发明人邓国顺作为“ 闪存盘之父”也是应该被铭记的。

话说回来,SSD为什么可以弥补传统机械硬盘(HDD)在I/O通信上的短板呢?还记得HDD的瓶颈吗?对,就是随机I/O的“寻道时间”。而SSD的寻址是由电信号完成的,所以“寻道”时间几乎是可以忽略不计的。

那么是不是SSD就没有任何缺点了吗?我们来继续研究一下闪存(flash memory)。

首先,根据制作工艺,闪存存储器可以分为NOR型和NAND型。
NOR型是为了替代EEPROM而设计,可以按位或者按字节进行访问,NOR型闪存芯片具有可靠性高、随机读取速度快的优势,但擦除和编程速度较慢,容量小,主要用于存储可执行的成都代码。
NAND闪存容量大,按页进行读写,容量大,适合进行数据存储。本文介绍都是基于NAND flash。

与传统机械硬盘(HDD)只有“读”和“写”两个动作相比,NAND flash具有“擦除”、“读”、“写”三个基本动作。

擦除:在衬底施加电压足够长的时间,把电子从浮栅中吸出来,擦除之后,整个block的数据都变成了1。
由于一个block共用一个衬底,所以在擦除时,一次擦除一个block,即擦除的单位为block。

写:写的过程是对浮栅充电子,也称为编程。写之前需要先进行擦除,由于擦除之后,数据都变成了1,
所以需要对要写入0的浮栅进行充电。

读:读取的时候,对晶体管施加一个低电压,如果浮栅中没有电子,那么管子就是导通的,读到1;
如果浮栅中有电子,管子不导通,读到0。读取数据时,因为是否有电子会影响到管子的导通性,
所以可以利用电流感应浮栅里电子捕获量的多寡,靠感应强度转换成二进制的0与1。

SSD的这写特点,都是由于闪存(flash memory)颗粒的结构和读写原理决定的。flash memory的基本存储单元是 - 浮栅晶体管

image.png

上图是浮栅晶体管的结构,最下面的是衬底,源极和漏极。衬底之上,有隧道氧化层、Floating Gate(浮栅层)、氧化层、控制栅极。中间的Floating Gate被绝缘层包围着,电子易进难出,通过对Floating Gate充放电子,来对晶体管进行写入和擦除。在源极( Source)和漏极( Drain)之间电流单向传导的半导体上形成存储电子的浮栅,浮栅上下被绝缘层包围,存储在里面的电子不会因为掉电而消失,所以闪存是非易失性存储器。

下图是浮栅晶体管的写和擦除的原理。
写操作如左图,是在上面的控制栅极加正电压Vpp,使电子通过绝缘层进入浮栅。擦除操作正好相反 ,如右图,是在衬底加正电压Vpp,把电子从浮栅中吸出来 。写入的过程是充电子的过程,如果写入的page之前已经写过,在写入之前,必须先对flash进行擦除0,清除浮栅中的电子。

image.png

数据是以0和1二进制进行保存的,根据浮栅中有没有电子两种状态,可以表示数据的0和1,这样就可以进行数据的存储。一般把有电子的状态记为0,没有电子的状态记为1。

所以,SSD有以下两个缺点。

读写不平衡。
读的速度很快;写入数据时,因为需要通过加压的方式对存储单元进行电子填充,所以速度略慢;
擦除速度最慢,擦除块的时间在ms级。在使用SSD的时,需要考虑到SSD的读写不平衡的特性。

寿命有限。
每个NAND Block都有擦写次数的限制,当超过这个次数时,该Block可能就不能用了:浮栅极充不进电子(写失败),
或者浮栅极的电子很容易就跑出来(比特翻转,0->1),或者浮栅极里面的电子跑不出来(擦除失败)。
这个最大擦写次数按SLC,MLC,TLC依次递减:SLC的擦写次数可达十万次,MLC一般为几千到几万,TLC降到几百到几千。

正是因为SSD有以上缺点,所以例如ORACLE数据库Redo文件并不推荐放早期的SSD上,因为ORACLE的Redo文件需要频繁擦写,这既需要花费额外的“擦写时间”,还十分消耗 flash memory的寿命。但好在随着技术的持续高速发展,上面的缺点已经被逐步改善,现在也没有这个限制了。

Troubleshooting: 'Log file sync' Waits (ドキュメントID 1376916.1)

##### Recommendations

Avoid placing redo logs on older generations of Solid State Disk (SSD) technologies.

Although generally, Solid State Disks write performance is good on average, 
they may endure write peaks which will highly increase some waits on 'log file sync' 
which may result in choppy performance or even transient database hangs. 
(This should be tested, as there are cases where performance is still acceptable 
on SSD despite the uneven IO response times) Oracle Engineered Systems 
(Exadata, SuperCluster and Oracle Database Appliance) have been optimized to 
leverage SSDs and newer related technologies more effectively.

最后提一个有趣的问题,既然flash memory的寿命有限,那为什么我们在使用的过程中没有发现容量逐渐变小呢?

请先思考一下,我们下一篇文章里给出答案。


Scott
39 声望40 粉丝

ORACLE数据库专家,现就职甲骨文SSC部门。