暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

23ai中的Database In-Memory:10 周年深度探索

甲骨文云技术 2024-09-29
379

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具有丰富的特性来支持性能的提升,包括架构,算法和现代化硬件层面。

对于性能提升,以下4项技术是较重要的:
  1. 列式格式:直接访问,并仅需访问需要的列。

  2. 压缩:支持以压缩格式进行过滤和扫描。压缩不仅节省内存空间,还是提升性能的重要手段。

  3. 存储索引:类似于Exadata的存储索引,可以快速排除不需要的数据,减少I/O。

  4. 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)的大小。

混合 Exadata 扫描

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

可选择 In-Memory 列


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

向量化查询增强:多级Join和聚合

此功能是对21c推出的内存深度矢量化框架的增强,通过充分利用 SIMD 功能来进一步提高哈希连接和分组聚合性能。新的优化包括多级哈希连接支持、内存分组聚合支持以及对多连接键和其他连接方法的支持。
此功能提高了连接和聚合的性能,而连接和聚合是分析查询的基础。这可以实现更快的实时分析性能,并且不需要更改应用程序 SQL。
内存优化的数据类型

Oracle 18c中支持内存优化的数值类型,通过内部紧凑等宽的优化格式存储数字,从而可以充分利用SIMD的能力。而内存优化的日期类型采用内存表达式框架,即通过预计算来提速。用户可以提取 DATE数据类型的组件(如 DAY、MONTH、YEAR)并将其发布到列式内存中,从而显著提高基于日期的分析查询的性能。
自治数据库支持In-Memory
自治数据库终于支持In-Memory了,包括自治数据库共享版和专用版。用户可以使用 INMEMORY 子句标记表或分区,表扫描将透明地触发 In-Memory 发布,发布将透明地触发内存空间的增长。当有空间压力时,AIM 将优先考虑发布最热的对象。总之,内存一定比闪存快,自治数据库用户又多了一种分析提速的手段。

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


编辑:小炒肉

文章转载自甲骨文云技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论