编辑手记:也许Oracle 12.2在内核上的智能改进只能让你眼前一亮,那今天基于Big Data和数据仓库的性能优化增强则会让你伸手触Oracle的强大灵魂。细腻中霸气侧漏,这就是Oracle 12.2.
1Partitioning:External Tables(外部表)
外部分区表提供了将分区的Hive表映射到Oracle数据库生态系统以及在基于Hadoop分布式文件系统(HDFS)的数据存储之上提供声明分区的功能。
Oracle数据库基于外部HDFS的数据存储功能,使得数据库分区能够实现更高级别的查询性能和增强的数据维护。
2Enhancing Declarative Constraint Support(增强声明约束支持)
在内部和外部表上定义为声明性和非强制性的约束更全面地用于查询处理优化,同时增加了内部和外部表的声明性NOT NULL约束以及外部表的所有声明性约束(唯一性,主键和主键 - 外键关系)的支持。
允许外部数据的声明性约束定义有助于提高查询性能,同时优化任何复杂SQL操作的资源消耗,而不管数据是否驻留在数据库内。
3Oracle Parallel Query Services on Oracle RAC Read-Only Nodes(Oracle RAC只读节点上的Oracle并行查询服务)
Oracle RAC只读节点上的Oracle并行查询服务表示可扩展的并行数据处理体系结构。 该架构允许分配专用于并行执行查询的大量处理引擎。
Oracle并行处理服务器场允许用户在大型集群系统上部署可扩展的处理架构,专门用于并行查询操作。
4Dimensional In-Database Analysis
分析视图通过星型模式提供商业智能层,从而可以轻松地使用层次结构、级别、聚合数据和计算的度量扩展数据集。
CREATE ATTRIBUTE DIMENSION
CREATE HIERARCHY
CREATE ANALYTIC VIEW
分析视图允许数据仓库和商业智能应用程序开发人员使用时间序列和其他计算来扩展星型模式,使数据对于业务用户更有价值,并且无需在应用程序中定义计算。
可以使用简单的SQL查询来查询分析视图,从而通过消除对复杂SQL生成器的需求来简化应用程序开发。计算可以在分析视图中定义,可以通过在SQL选择列表中包括度量名称来选择。
分析视图提高了应用程序的一致性。通过在数据库中集中定义聚合和计算规则,可以减少或消除不同报告工具中不一致结果的风险。
5Enhancing SQL Plan Management(增强SQL执行计划管理)
SQL执行计划管理(SPM)利用更大的计划信息池(包括自动工作负载存储库(AWR))作为SQL计划基准的源。 SPM还得到增强,为客户提供更具选择性的计划捕获和更容易的验证。客户可以利用SQL计划管理来满足其特定的应用程序需求。
从自动工作负载存储库(AWR)快照加载计划。您必须指定快照范围的开始和结束。或者,您可以应用过滤器以仅装入满足指定条件的计划。默认情况下,优化程序在下次数据库执行SQL语句时使用加载的计划。
直接从位于SGA的共享池中的共享SQL区域加载语句的计划。通过对模块名称,模式或SQL ID应用过滤器,可以标识要捕获的SQL语句或SQL语句集。下次数据库执行SQL语句时,优化程序将使用这些计划。
当使用提示手动调整应用程序SQL时,直接从共享SQL区域装载计划很有用。因为您可能无法更改SQL以包括提示,填充SQL计划基线可确保应用程序SQL使用最佳计划。
将SQL工作负载的计划捕获到STS中,然后将计划加载到SQL计划基准中。下次数据库执行SQL语句时,优化程序将使用这些计划。从STS批量装载执行计划是防止数据库升级后计划回退的有效方法。
使用DBMS_SPM软件包定义登台表DBMS_SPM.PACK_STGTAB_BASELINE以将基准复制到登台表中,并使用Oracle数据泵将表转移到另一个数据库。在目标数据库上,使用DBMS_SPM.UNPACK_STGTAB_BASELINE从暂存表中解压缩计划,并将基准放入SMB。
一个用例是从新的应用程序模块向数据库中引入新的SQL语句。供应商可以使用SQL计划基准为新的SQL运送应用程序软件。以这种方式,新SQL使用已知的计划,以在标准测试配置下提供最佳性能。或者,如果您在内部开发或测试应用程序,请从测试数据库导出正确的计划并将其导入生产数据库。
将存储的大纲迁移到SQL计划基准。迁移后,您可以使用存储的概要保持相同的计划稳定性,同时可以使用SQL计划管理提供的更高级的功能,例如计划演进。
6Scan Rate and In-Memory Columnar Statistics(扫描速率和内存中列的统计)
DBMS_STATS现在支持外部表扫描速率和内存列存储(IM列存储)统计。
如果数据库使用内存中列存储,则可以将im_imcu_count设置为表或分区中的内存压缩单元(IMCU)的数量,并将im_block_count设置为表或分区中的块数。 对于外部表,扫描速率指定以MB /秒为单位扫描数据的速率。
7Band Join Enhancements(带加入增强)
带连接是一种特殊类型的非连字符,其中一个数据集中的键值必须落在第二数据集的指定范围(也就是“带”)内。 当数据库检测到带连接时,数据库更有效地评估带连接的成本,避免不必要的扫描落在定义的带外的行。在大多数情况下,优化的性能与等值连接的效果差不多。
以下示例查询每个员工与其他员工相比,工资差距范围在$100之间的。 因此,带具有$ 200的宽度。 这些例子假设可以比较每个雇员的工资与自己的工资。 以下查询包括部分样本输出:
在不使用带连接优化的时候,执行计划如下:
使用带连接的执行计划如下:
我们看到,在12.2中,不再具有单独的filter的操作。
8Parallel Recursive WITH Enhancements(并行递归WITH增强)
Oracle数据库通过使用专有CONNECT BY子句和符合ANSI标准的递归WITH子句来支持递归查询。并行递归WITH子句允许此类型的查询以并行方式运行。
递归WITH类型查询是典型的在社交图中找到的图形数据,例如Twitter图形或通话记录。递归WITH类型查询也常用于交通网络(例如,用于飞行路径,道路等)。图形数据本质上是循环的,因此,递归查询是图形数据的分析处理的自然候选者。递归WITH确保在图中从单个源节点到单个或多个目的地节点的最短路径的有效计算。双向搜索用于确保从图形中从单个源节点到单个或多个目的地节点的最短路径的有效计算。双向搜索从源节点和目的地节点开始,然后在两个方向上前进搜索。实现诸如贪婪搜索,无中断中间路径的修剪和双向搜索的技术以优化性能。
9Cursor-Duration Temporary Tables Cached in Memory(游标持续时间临时表在内存中缓存)
复杂查询通常会多次处理相同的SQL片段(查询块)以回答业务问题。 这些查询的结果可以在内部存储,以避免对同一查询片段进行多重处理,实现为光标持续时间临时表。 使用这个新功能,这些临时表可以完全驻留在缓存中,而无需将它们写入磁盘。
对于部分较复杂的关键操作,缓存中间结果集有助于提高系统性能,降低I/O资源消耗
10Local TEMP Tablespaces(本地临时表空间)
hub-leaf cluster 环境中的单个叶节点可能溢出到本地TEMP表空间。此功能减少了传输到hub nodes和公共基础架构的数据量,为大量节点实现更好的可扩展性。
11Oracle Database Can Contain Both Read/Write and Read-Only Instances(Oracle数据库可以包含读取/写入和只读实例)
Oracle 12.2在同一数据库中提供两种类型的实例:读/写和只读。
读/写实例是常规的Oracle数据库实例,可以处理对数据的更新(例如,DML语句UPDATE,DELETE,INSERT和MERGE),分区维护操作等。可以直接连接到读/写实例。
只读实例只能处理查询,不能直接更新数据。不能直接连接到只读实例。请注意,存在包含更新和查询数据的并行SQL语句(例如,INSERT INTO <select query>)。在这种情况下,语句的<select query>部分在读/写和只读实例上处理,而INSERT部分仅在读/写实例上处理。
要将实例指定为只读,请将INSTANCE_MODE参数设置为READ_ONLY。 (参数的默认值为READ_WRITE。)
只读实例的引入显着提高了数据仓库工作负载的并行查询的可扩展性,并允许Oracle数据库在数百个物理节点上运行。
12Oracle Advanced Analytics Association Rules Enhancements(Oracle高级分析关联规则增强)
Oracle Advanced Analytics关联规则算法有许多增强功能,包括计算与规则相关联的值,例如销售额。
收集关联规则的补充信息可以帮助识别每个规则对业务的价值是有价值的。 此功能使Oracle Advanced Analytics在构建模型时执行此类计算,这比要求作为后处理步骤执行此计算更简单和更高效。
13Improving Token Management for Binary XML(改进二进制XML的令牌管理)
此功能通过允许以比数据库更低的粒度级别管理令牌表来提高基于客户端的XML编码和解码的效率。 这使得可传输表空间和交换分区等操作更有效率。
通过减少在编码和解码操作期间需要重新加载的令牌的更改,提高了客户端编码和解码二进制XML的效率。 此功能还使得可以使用可传输表空间执行交换分区操作,而不需要重新编码移动的XML。
文章转自数据和云公众号,原文链接