Oracle Database In-Memory 十岁了!2014年7月,Oracle CEO 拉里·埃里森宣布了Oracle Database In-Memory的诞生,这项创新的技术使得数据驱动型企业可以更敏捷和有效地满足业务实时分析的需求。

Database In-Memory非常适合于混合事务/分析处理架构,即HTAP架构。HTAP也称为Translytical,Oracle在这一领域有很深的技术积累和很强的技术优势,详见之前文章:Oracle数据库的HTAP能力。除了Database In-Memory,在Oracle内存计算家族中,还包括其他非常重要的成员,包括TimesTen,Exadata,以及23ai中的True Cache,对应于只读缓存,可写缓存,独立数据库,闪存缓存,一致性缓存等丰富的内存计算应用场景,关于在何种情况下应采用哪种内存计算技术,可参见之前公众号的文章:Oracle内存计算应用模式。

本文分为“温故”和“知新”两部分,第一部分我们将简单回顾Database In-Memory的四大技术创新。然后我们将重点介绍23ai中的Database In-Memory新特性。关于Database In-Memory的详细技术介绍,可参考之前的文章:加速度:走进Oracle Database In-Memory。关于其技术要点和优势,可参考文章:不选择Database In-Memory的10大理由。
Database In-Memory的第1项创新就是其独特的双格式架构。这种架构使用户同时获得了行式内存和列式内存的好处。在后端,Oracle保证了两种内存格式间数据的一致性,并根据负载的特征自动导向适合的内存格式。

第2项创新就是性能的大幅提升。毋庸置疑,用户使用内存的目的就是希望快,但并非仅仅将数据放到内存中那么简单。Database In-Memory具有丰富的特性来支持性能的提升,包括架构,算法和现代化硬件层面。

列式格式:直接访问,并仅需访问需要的列。
压缩:支持以压缩格式进行过滤和扫描。压缩不仅节省内存空间,还是提升性能的重要手段。
存储索引:类似于Exadata的存储索引,可以快速排除不需要的数据,减少I/O。
SIMD矢量处理:SIMD实际是现代化CPU的一项能力,可以在单个CPU指令中批量处理数据。SIMD的高效使用也源于压缩技术可以将原本不同长短的数据统一为等宽的数据。

还需要补充一点,虽然Database In-Memory主要用于提速分析,但由于可以删除之前为提速分析所建的索引,因此也可以提升交易系统更新的速度,节省存储空间。更重要的,免除DBA设计、测试和验证索引的时间。

第3项创新为自动化。这主要是指根据对象的使用热度自动发布对象到内存中,或从内存中驱逐对象。这可以保证宝贵的内存总是用于访问频度较高的数据库对象。

第4项创新是Database In-Memory技术与Exadata的结合。Database In-Memory可将其列式技术延伸到Exadata上的大容量闪存,从而使更多的,更大的数据库对象可以享受Database In-Memory的好处。并且,Database In-Memory的一些高级特性只在Exadata上提供支持,如内存复制技术,这可以在保证性能的同时提供更高的可用性。

接下来,我们将介绍Oracle Database In-Memory在23ai中的新特性。
数据库内置In-Memory Advisor
在23ai之前,In-Memory Advisor需要额外安装到数据库中,其可以判定工作负载是否适合于Database In-Memory。而在23ai中,数据库已经内置了In-Memory Advisor,因此使用更加方便。需要额外安装的版本仍然有用,例如可以安装到11g数据库中进行分析。

自动 In-Memory 管理
自动 In-Memory 管理增强包括两方面。第一是Automatic In-Memory(AIM)的增强。23ai之前,Join Group和优化数值类型等高级特性需要人工判断何时启用,并手工设置。而在23ai中,AIM可选择性地启用或禁用这些高级功能,具体取决于哪种功能带来的好处较大。这可提高应用程序性能,还可节省内存空间,并无需人工干预。

另一项增强是可以根据负载类型的变化(DML密集型还是OLAP密集型)自动调整行式内存(Buffer Cache)和列式内存(In-Memory Column Store)的大小。


在21c中,Database In-Memory支持内存混合扫描功能,此项功能对于并非所有列发布到列式内存的情形也可以提速,这是从横向的维度。同样针对内存不足的情况,混合Exadata扫描可以综合内存和闪存中的列式数据进行分析提速。

这是一项小的SQL语法增强。对于一个列数非常多的表,如果只发布很少的列,这个特性就非常有用。而23ai之前,需要先设定整个表,然后再逐列排除。




最后,再回顾一下Database In-Memory 10年来的技术发展历程,未来还有什么新的技术创新,我们拭目以待。

编辑:小炒肉




