如何从SGA或AWR获得SQL工作负载?

如果您知道系统何时达到瓶颈,则可以使用 AWR 从特定时隙检索 SQL 工作负载。如果当前运行的 SQL 足以表示应用程序中的高峰时间工作负载,则应直接从 SGA 中提取 SQL,以便进行 IM Advisor 和 IM Simulator recommendation。

从另一个角度看为什么要使用Oracle In-Memory数据库选项

很多人都在谈论为什么或者为什么不在他们的应用程序中使用 Oracle In-memory 数据库,他们中的大多数都过于关注数据库的大小,或者它是否是 OLAP 应用程序。中小型数据库似乎不适合使用 Oracle In-memory数据库选项。但是,如果您的 OLTP 数据库存在性能瓶颈,并且您正在寻找解决方案,我认为 Oracle In-memory数据库选项应该位于您的解决方案列表中,尤其是在计划升级硬件时。

在Oracle In-Memory 数据库中,SQL优化器优化计划空间越来愈大
计划空间是数据库 SQL optimizer 在输入 SQL 语句之前将考虑的潜在处理方法的大小。更大的计划空间大小意味着数据库 SQL optimizer 将考虑处理 SQL 语句的更多潜在方法。因此,您的 SQL 语句有更多运行更快的机会。使用 Oracle In-Memory 数据库新的 In-Memory数据访问方法,Oracle SQL 优化器将在 SQL 语句执行之前考虑更大的计划空间。由于乘数效应,新的 In-Memory 执行计划步骤可能会导致计划空间大小发生巨大扩展。例如, In-Memory 包含 5 个表的 SQL 语句,每个表的访问方法的”Table Access Inmemory Full”步骤,结果是 C(5,1)+C(5,2)+C(5,3)+C(5,4)C(5,5)=5=10=10=5=1=31。但不要忘记,此乘法器适用于原始计划空间树中的每个执行计划,这意味着新计划空间大小可能比原始计划空间大 31 倍。

OLTP 数据库如何从 In-Memory 数据库中获得优势?
OLTP 数据库是面向事务的应用程序,它要求每个事务都有快速的响应时间,但这并不意味着在工作时间没有用于联机报告或数据整合的复杂 SQL。如果此类慢速的 SQL 语句与其他联机事务同时运行,则整体性能将受到影响。如果硬件升级是其中一个选项,应考虑使用 Oracle In-Memory作为替代解决方案之一。
下面的示例向您展示了OLTP SQL语句如何从使用Oracle In-Memory数据库选项中获益。
下面是一个典型的 OLTP SQL,对所有表都进行了分析,原始执行计划显示了一个 Oracle 自适应计划,其中哈希联接或嵌套循环将在执行的初始阶段确定。此 SQL 的运行时间约为 1 分 35 秒。

L让我们使用强制提示将 EMPLOYEE 表放入Oracle In-Memory中,然后 Oracle 访问它时,采用”Table Access Inmemory Full”扫描,下面的基准测试显示,“Auto 1” SQL仅花费0.45秒就完成了,比原始执行计划快200多倍。该解决方案表明,对EMPLOYEE表引入新的“Table Access Inmemory Full”扫描,创建了比原来更好的执行计划。

对于OLTP的SQL,不需要将所有表放入 In-Memory
使用 OLTP 数据库时,我们不希望将所有表填充到In-Memory,从而给联机事务带来过多的开销。因此,对于OLTP 的 SQL 使用 In-Memory SQL 调优的目标不是选择最佳性能解决方案,而是具有较少In-Memory表的最经济高效的解决方案,且其性能改进仍是可以接受的。
如下面: “Auto 3” 解决方案把包含的所有表都被放入In-Memory,但改进仅比 “Auto 1” 高 0.01 秒,后者只需要将一个表放入In-Memory。因此,”Auto 1″显然是一个更可取的选择。

Oracle应该根据 In-Memory 的大小为 In-Memory 选项装载
实际上,Oracle In-Memory数据库不仅仅有利于OLAP用户,而是对于所有数据库用户(比如OLTP用户)来说,都是一个很好的SQL性能增强工具。鉴于Oracle In-Memory 数据库选项定价过高,限制了该新技术的快速适应,建议Oracle根据 In-Memory 大小来决定价格。换句话说,更小的尺寸和更低的价格肯定会帮助 Oracle
In-Memory数据库可广泛渗透到所有数据库用户,包括 OLTP 用户。

Author: Richard To (Richard.to@tosska.com), CTO of Tosska Technologies Limited

TIM™试用版限制

使用本试用版,请注意以下限制:

  1. IM SQL Tuning Auto Scenario 最多可以生成10个 auto scenarios。
  2. IM Advisor and IM Simulator 最多接受来自SGA或AWR的100条SQL。
  3. IM Advisor 的智能级别可以设置范围为2到5。

TIM™-系统需求

在安装Tosska In-Memory Maestro (TIM™) for Oracle®之前,请确保您的系统满足以下最低硬件和软件要求:
 

CPU 1.8 GHz处理器
内存 至少2gb内存,建议4gb内存
硬盘空间 用于32位安装的100mb磁盘空间
用于64位安装的200mb磁盘空间
操作系统 Microsoft Windows®7 32位和64位
Microsoft Windows®8 32位和64位
Microsoft Windows®10 32位和64位
.NET Framework Microsoft .NET Framework 4.5
PDF Viewer Adobe Acrobat Reader® 7.0 或更高版本(浏览安装指南)
数据库客户端 Oracle® SQL*Net
Oracle® v9 Client (Net9)
Oracle® v10 Client (Net10)
Oracle® v11 Client (Net11)
Oracle® 12c Client
Oracle® Instant Client
数据库服务器 Oracle® database 11G R2, 12C R1, 12C R2

哪些人会是TIM™的用户?

如果您对Oracle® 新的功能 In-memory 有以下一个或多个问题,那么您应该考虑使用TIM™:

  • 在有限大小的 in-memory 内, 放入 in-memory 内的表方案是什么?
  • 对于AWR中的特定时间段或SGA中的当前SQL工作负载,最好的放入 in-memory 内的表方案是什么?
  • 相比我预选的进入in-memory的表方案,还有更好的方案吗?
  • 有没有一种解决方案,在牺牲不太多性能的前提下降低对 in-memory需求?
  • 是否可以为给定的SQL工作负载提供精确的执行计划变化和成本估计,给出推荐的解决方案?
  • 如果我将这些推荐表放入Oracle® in-memory内,对特定SQL有什么影响?
  • 对于一条SQL语句,如果把所有表都放入in-memory内,但并不是最佳解决方案,那么对于这条关键的SQL语句,哪个才是最优的解决方案呢?

TIM™ – 完整的描述

关于 Tosska In-memory Maestro (TIM™) for Oracle®

Tosska In-memory Maestro (TIM™) for Oracle® 使用我们专有的人工智能引擎,自动执行In-memory SQL 最优化过程,并为给定的SQL工作负载提供In-memory对象推荐。它还提供了友好的In-memory模拟功能,使用户可以为一个SQL或给定的SQL工作负载虚拟地评估In-memory的表对象,而无需实际填充这些表对象。

关键功能

TIM™的主要功能包括 IM SQL Tuning模块,该模块在In-memory环境中优化SQL语句,具有不折不扣的性能调优能力;IM Advisor使用Tosska专有的人工智能引擎,为AWR或SGA提供空前未有的In-memory对象推荐。使用TIM™的IM Simulator,用户可以对给定的SQL工作负载进行虚拟In-memory对象模拟,而无需实际填充所选的表对象。TIM™还提供了一些工具,使您可以更轻松地管理IM环境。IM对象管理器是一个图形化工具,它可以帮助用户通过单击来管理In-memory中的对象,而IM Configuration是一个工具,它可以帮助用户查看数据库当前内存中的设置,并启用或设置新的In-memory配置。

连接和配置

要开始使用TIM™,用户必须使用连接管理器与目标数据库建立连接。然后,用户可以使用IM配置工具查看数据库当前In-memory的状态、不同大小池的使用情况和In-memory使用面板中显示的设置,并使用In-memory选项面板启用或设置新的In-memory配置。


IM SQL Tunning

对于任务关键型SQL语句,用户可能希望使用Oracle In-memory功能优化其 SQL 以获得最佳性能。TIM™提供了一个创新的功能,帮助用户评估和调优SQL,并假设将相关表对象填充到 In-memory或从 In-memory中反填充。一个专有的人工智能引擎是嵌入式的,以彻底探索大多数表候选项的组合,这是手动SQL调优无法实现的,它对于具有许多表联接的复杂 SQL 语句调优特别有用。

IM SQL Tuning调优模块提供一个SQL文本面板,用户可以在此面板中输入或粘贴SQL语句进行调优。使用User Scenario函数,用户可以模拟SQL语句的场景,如果某些表正在通过特定的检索操作放入in-memory或从in-memory中删除,并查看对SQL执行计划的影响。

另外,TIM™还提供了“Auto Scenario”选项,用户可以按下这个按钮来尝试SQL语句的大多数in-memory对象组合与必要的提示,最后显示惟一的执行计划方案,以便进行基准测试。

用户可以使用TIM™中提供的测试运行选项选择一个或多个场景来测试运行,以实际执行用于基准测试的场景。使用Compare SQL scenario功能,用户可以并排查看两个SQL语句/方案,显示SQL文本、执行计划和统计信息,便于比较。执行计划中的任何差异将会被突出显示。


IM Advisor

由于in-memory大小的限制,用户必须非常小心地选择要填充到in-memory内的表,并为给定的SQL工作负载提供最佳工作。SQL工作负载是在特定时间从Oracle AWR或SGA捕获的一组SQL语句,可能有多达数千条SQL语句正在访问数百个表。因此,如何在给定的in-memory大小内选择要填充到in-memory内的表始终是一个难题。此外,用户可能想知道,是否有能够提供与给定工作负载的内存要求较少的解决方案。

最大内存大小由用户给出;TIM™可以推荐In-memory需求较少的解决方案。

借助 Tosska 专有的人工智能引擎,IM Advisor 能够在 AWR 或 SGA 的 SQL 工作负载的一定配额或时间段内找到 IM 对象的最佳建议。建议的 IM 对象将对给定的工作负载产生最大影响。这意味着用户可以使用此模块来提高来自 AWR 的特定时隙 SQL 工作负载或来自 SGA 的当前 SQL 工作负载的性能。

当创建一个新的advisor会话时,将要求用户从SGA或AWR中提取SQL,以组成一个用于推荐IM对象的SQL工作负载。一旦提取SQL完成,将显示IM Advisor界面,还将显示捕获的SQL数量和成功取得执行计划的有效SQL。您可以通过在此界面上随时单击超链接QL 详细信息查看SQL的详细信息。


IM Simulator

IM 模拟器用于模拟许多几乎选定的内存中表对象,这些对象会影响从 SGA 或 AWR 捕获的 SQL 工作负载。用户可以使用该模块来提高一天中特定小时的数据库性能;例如,如果用户希望提高一天的高峰时间性能,则用户可以在该时间时段内从 SGA 或 AWR 中提取 SQL工作负载 。取到SQL后,还将显示 SQL 相的列表,以供用户执行影响模拟。用户可以选择任意表,并将它们放入内存中,以查看对捕获的 SQL 工作负载的影响。


IM Objects Manager

TIM™为用户提供了一个非常方便的工具来管理他们的IM对象,使用各种类型的选项将其更改为In-memory内的IM对象,或者在“All objects”页面中将其从In-memory内取出。顶部还显示一个IM对象占用图,以便用户轻松地了解对象的大小和分布。用户还可以使用“In-memory 对象”页面来查看那些已经放入In-memory 内的对象。