Oracle Database In-Memory(架构与实践)
上QQ阅读APP看书,第一时间看更新

1.1.1 硬件的发展

摩尔定律是信息技术领域最知名的分析预测之一,指用一美元所能买到的计算机性能,每隔18个月便会增加一倍,这一定律揭示了信息技术进步的速度。内存计算时代的到来也与处理器、内存、磁盘等硬件技术的发展息息相关。

CPU被称为计算机的大脑,第一个单芯片的微处理器Intel 4004由Intel公司于1971年发布。1978年,Intel发布了第一个16位的处理器8086,可寻址1MB内存,从此引入了x86架构。1985年,Intel发布了32位处理器80386,可寻址4GB内存。2004年,Intel发布了第一个64位多核处理器Xeon。在整个CPU的发展进程中,不仅CPU时钟频率越来越高,而且芯片密度越来越大,出现了多CPU和多核架构。AMD于2020年发布的锐龙Threadripper 3990X CPU拥有64核。Intel于2021年发布的至强8358处理器已经具备32核。随着CPU及核数的不断增长,CPU与内存之间的通信出现了瓶颈,于是出现了新的NUMA架构以改进传统对称多处理(SMP)架构的扩展性,非一致内存访问(NUMA)架构将CPU分为多个模块,每个模块都具备本地和远端内存,这也是其称为非一致的原因。NUMA架构一方面提升了系统的扩展性,可以组合出更多CPU、更强处理能力的系统,如SGI UV、Oracle SPARC T5-8、HP Superdome及16路及以上的x86服务器;另一方面,NUMA架构不仅是硬件架构上的改变,同时也影响应用和数据的设计,特别是针对并行计算应用,数据和处理应尽量遵循本地化的原则,毕竟访问远端内存开销很大。分析型内存计算可以很好地利用NUMA架构,一方面分析型数据通常以列式存储,方便进行垂直分区后并行处理;另一方面,分析型数据数值重复度和稀疏度较高,通过与数据压缩技术结合,可进一步缓解内存访问速度和CPU处理速度之间的差异。

在数据库发展的过程中,数据库设计者和使用者一直在尽量避免磁盘I/O。从硬件的角度看,数据处理分为三个部分,即处理器进行计算、存储存放数据以及两者之间的数据传输系统,而这三者中磁盘始终是瓶颈。尽管磁盘的密度越来越高,容量越来越大,但磁盘的I/O处理能力却提升得不多。例如一般磁盘的吞吐量在200MB/s,而内存的数据吞吐量可达到100GB/s。基于闪存的SSD磁盘出现后,读取性能有了较大的提升,但由于其工作原理以及擦写寿命,并不适合写密集型工作负载。机械磁盘的读写延迟一般为10ms,SSD的读和写延迟分别为25μs和300μs,而DRAM的读写延迟为60ns,比机械磁盘快5000倍,即使是与SSD相比,读写速度也要快400倍。最初,由于价格高昂和容量有限,内存仅用于缓存部分数据,随着内存容量的不断增加和价格的大幅下降,将所有数据置于内存成为可能,这时,磁盘不再作为数据的主存储,而是作为数据备份和持久化的设备。根据Gartner的报告,内存价格每年下降幅度为32%。2006年,1GB内存的价格近100美元,2016年只需要不到4美元。内存容量方面,微软Windows Server 2022在x86服务器上最多可支持48TB内存,Red Hat企业版Linux 8在x86服务器上可支持24TB内存。