Autonomous Database on Dedicated Exadata Infrastructure 中的高性能特性

本文介绍了 Autonomous Database on Dedicated Exadata Infrastructure 中的关键性能优化功能。

请注意,在本节中,“您”一词广泛用于指组织中负责执行某些任务的任何用户。在某些情况下,这是应用程序 DBA,而在其他情况下,它是应用程序开发人员。

Autonomous Database 包含多项功能,可自动监视、分析和优化数据库性能。有关 Oracle Autonomous Database 的 SQL 优化和性能管理功能的完整列表,以及如何使用这些功能的说明,请参阅 Oracle Database 19c SQL Tuning GuideOracle Database 23ai SQL Tuning Guide

您可以在下面查看 Autonomous Database 的主要性能优化功能的广泛分类。

提示:

在下图中,您可以单击要进一步浏览的功能。


预定义数据库服务

应用如何连接到数据库,以及如何对数据库的 SQL 调用进行编码,从而确定应用事务处理和报告操作的整体性能。

Autonomous Database 建立连接时,应用与数据库交互的性能取决于您连接到哪个数据库服务。Autonomous Database 提供了连接到数据库时要使用的多组数据库服务。这些连接服务旨在支持不同类型的数据库操作,如 Predefined Database Service Names for Autonomous Databases 中所述。

提示:

确保查看预定义数据库服务的关键特征以及根据这些特征比较不同数据库服务集的表,以确定哪个数据库服务更适合应用程序的性能要求。

连接池

Autonomous Database 建立连接时,您可以使用连接池来降低重复创建和销毁单个连接的性能开销。这是另一个对应用程序与数据库交互性能产生巨大影响的因素。

通常,仅在设计或增强应用程序以提供连续可用性时才考虑使用连接池。但是,使用连接池而不是单个连接几乎可以使每个事务处理应用程序受益。连接池具有以下优点:

  • 减少创建新连接对象的次数。
  • 提升连接对象重用。
  • 加快获取连接的过程。
  • 控制用于维护连接的资源量。
  • 减少手动管理连接对象所需的编码工作量。

专用连接功能

Oracle Net Services(以前称为 SQL*Net)提供了各种连接功能,可提高特定连接方案中的性能。Oracle Database 19c Net Services Administrator's GuideOracle Database 23ai Net Services Administrator's Guide 中介绍了这些功能。
  • 托管标记是此类功能之一,在某些事务处理应用程序中非常有用。如果您的应用重复连接到同一数据库服务,则托管标记允许将所有此类连接定向到同一数据库实例,从而绕过连接数据库端通常执行的负载平衡处理。有关详细信息,请参阅 Oracle Database 19cOracle Database 23ai 中的 COLOCATION_TAG of Client Connections

  • 共享服务器配置Autonomous Database 支持的另一项功能,用于维护不使用连接池设计的旧应用程序。共享服务器体系结构使数据库服务器允许许多客户机进程共享很少的服务器进程。这会增加应用程序可以支持的用户数。使用这些传统应用程序的共享服务器体系结构,无需对应用程序本身进行任何更改即可进行扩展。

    您可以在预配自治容器数据库 (Autonomous Container Database,ACD) 时启用共享服务器连接,此设置适用于其中创建的所有数据库。有关说明,请参见 Create an Autonomous Container Database

    有关共享服务器的更多详细信息,包括会话多路复用等功能,另请参见 Oracle Database 19c Net Services Administrator's GuideOracle Database 23ai Net Services Administrator's Guide

    为自治容器数据库启用共享服务器连接后,无需更改连接字符串。默认配置设置为“专用”。

    注意:

    无法为在启用了共享服务器的自治容器数据库下创建的特定 Autonomous Database 禁用共享服务器,并且无法为在启用了共享服务器的自治容器数据库下创建的 Autonomous Database 使用专用连接。

SQL 性能优化功能

优秀的应用程序从编写良好的 SQL 开始。Oracle Autonomous Database 提供了许多功能,使您能够构建高性能应用程序并验证 SQL 和 PL/SQL 代码。下面列出了以下某些功能:

  • 自动索引
  • 优化程序统计信息和提示
  • 自动解决 SQL 计划退化
  • 自动隔离失控 SQL 语句
  • SQL 计划管理
  • SQL 优化集
  • SQL 跟踪

开发应用时,您可以快速了解这些功能如何影响您编写的 SQL 代码,并使用 Oracle Database Actions(内置在 Autonomous Database 中)和 Oracle SQL Developer(在开发系统上安装的免费应用)提供的 SQL 工作表来改进代码。

SQL 跟踪

当应用程序操作花费的时间比预期的要长时,获取在此操作过程中执行的所有 SQL 语句的跟踪以及详细信息(例如,该 SQL 语句在语法分析、执行和提取阶段所花费的时间)将帮助您确定并解决性能问题的原因。您可以在 an Autonomous Database 上使用 SQL 跟踪来实现此目的。

默认情况下,在 Autonomous Database 中禁用 SQL 跟踪。必须启用它才能开始收集 SQL 跟踪数据。有关启用和使用 SQL 跟踪的详细说明,请参阅在 Autonomous Database 上使用 SQL 跟踪

优化程序统计信息

Autonomous Database 会自动收集优化程序统计信息,这样您就不需要手动执行此任务,这有助于确保统计信息是最新的。在 Autonomous Database 中启用自动统计信息收集,并在标准维护窗口中运行。

注意:

有关维护窗口时间和自动优化程序统计信息收集的详细信息,请参阅 Oracle Database 19c Administrator’s GuideOracle Database 23ai Administrator's Guide

有关优化程序统计信息的更多信息,请参见 Oracle Database 19c SQL Tuning GuideOracle Database 23ai SQL Tuning Guide

优化程序提示

优化程序提示是 SQL 语句中向优化程序传递指令的特殊注释。除非某些条件阻止,否则优化程序将使用提示为该语句选择执行计划。

优化程序的 Autonomous Database 默认值和 PARALLEL 提示因工作负载而异:
  • Autonomous Data WarehouseAutonomous Database 和 Data Warehouse 忽略优化程序提示,默认 SQL 语句中有 PARALLEL 个提示。

    如果应用程序依赖于提示,则可以通过在会话或系统级别使用 ALTER SESSIONALTER SYSTEM 将参数 OPTIMIZER_IGNORE_HINTS 设置为 FALSE 来启用优化程序提示。

    例如,以下命令在会话中启用提示:
    ALTER SESSION 
      SET OPTIMIZER_IGNORE_HINTS=FALSE;

    还可以通过在会话或系统级别使用 ALTER SESSIONALTER SYSTEMOPTIMIZER_IGNORE_PARALLEL_HINTS 设置为 FALSE,在 SQL 语句中启用 PARALLEL 提示。

    例如,以下命令在会话中启用 PARALLEL 提示:
    ALTER SESSION 
      SET OPTIMIZER_IGNORE_PARALLEL_HINTS=FALSE;
  • 自治事务处理默认Autonomous Database 荣誉优化程序提示和 SQL 语句中的 PARALLEL 提示。

    您可以使用 ALTER SESSIONALTER SYSTEM 在会话或系统级别将参数 OPTIMIZER_IGNORE_HINTS 设置为 TRUE 来禁用优化程序提示。

    例如,以下命令在会话中禁用提示:

    ALTER SESSION 
      SET OPTIMIZER_IGNORE_HINTS=TRUE;

    还可以通过在会话或系统级别使用 ALTER SESSIONALTER SYSTEMOPTIMIZER_IGNORE_PARALLEL_HINTS 设置为 TRUE 来禁用 SQL 语句中的 PARALLEL 提示。

    例如,以下命令在会话中启用 PARALLEL 提示:

    ALTER SESSION 
      SET OPTIMIZER_IGNORE_PARALLEL_HINTS=TRUE;

自动索引

自动索引功能可自动执行 Autonomous Database 中的索引管理任务。默认情况下,在 Autonomous Database 中禁用自动索引。

手动创建索引需要对数据模型、应用程序和数据分布有深入的了解。过去,DBA 负责选择要创建哪些索引,但有时 DBA 不会在条件发生变化时修改其选择或维护索引。因此,改进的机会丧失了,使用不必要的指数可能成为履约责任。

Autonomous Database 中的自动索引功能可监视应用工作负载并自动创建和维护索引。

提示:

有关演示这些说明的“试用”替代方法,请运行 Oracle Autonomous Database Dedicated for Developers and Database Users Workshop 中的 Lab 14:Automatic Indexing
启用自动索引编制
  • 使用 DBMS_AUTO_INDEX.CONFIGURE 过程启用自动索引。例如,执行下面的语句可以在数据库中启用自动索引,并将任何新的自动索引创建为可见索引,以便它们可以在 SQL 语句中使用。
    EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
  • 使用 DBMS_AUTO_INDEX 软件包报告自动任务并设置自动索引首选项。

    注意:

    注意:启用自动索引时,默认情况下会启用自动索引的索引压缩。
禁用自动索引
使用 DBMS_AUTO_INDEX.CONFIGURE 过程禁用自动索引。例如,执行下面的语句将禁用数据库中的自动索引,以便不创建新的自动索引。但是,现有自动索引仍处于启用状态。
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');

有关更多信息,请参见Oracle Database 19c Administrator’s Guide 中的 Managing Auto IndexesOracle Database 23ai Administrator’s Guide

快速摄取

快速摄取可优化高频单行数据插入到数据库中的处理。快速摄取使用大型池在将插入写入磁盘之前缓冲插入,从而提高数据插入性能。

快速入门的目的是支持生成大量信息数据的应用程序,这些数据在聚合中具有重要价值,但不一定需要完整的 ACID 保证。物联网 (Internet of Things,IoT) 中的许多应用都具有快速的“触发和遗忘”类型的工作负载,例如传感器数据、智能计量表数据甚至交通摄像头。对于这些应用程序,数据可能会以高容量收集并写入数据库,以供日后分析。

快速摄取与常规 Oracle Database 事务处理有很大不同,在常规 Oracle Database 事务处理中记录数据,在“写入”数据库(即提交)后永远不会丢失数据。为了实现摄取吞吐量上限,将绕过正常的 Oracle 事务处理机制,应用程序负责检查是否已将所有数据写入数据库。添加了特殊 API,可以调用这些 API 来检查数据是否已写入数据库。

有关快速摄取和使用此功能所涉及的步骤的概述,请参阅《 Oracle Database 19c Performance Tuning Guide 》《 Oracle Database 23ai Performance Tuning Guide 》中的 Using Fast Ingest

要对 Autonomous Database 使用快速摄取,您必须:
  • 启用优化程序以使用提示:根据需要在会话或系统级别将 optimizer_ignore_hints 参数设置为 FALSE

    根据您的 Autonomous Database 工作负载类型,默认情况下,optimizer_ignore_hints 可以在系统级别设置为 FALSE。有关更多信息,请参见 Optimizer Statistics

  • 为快速摄取创建表:有关适用于快速摄取的表(具有指定特征的表不能使用快速摄取)的限制,请参阅 Oracle Database 19c Performance Tuning GuideOracle Database 23ai Performance Tuning Guide

Oracle Scheduler 的预定义作业类

Autonomous Database 包含预定义的 job_class 值,可与 Oracle Scheduler 一起使用。通过这些作业类,可以将具有共同特征和行为的作业分组到较大的实体中,以便通过控制分配给每个类的资源来确定这些类的优先级。

通过预定义的作业分类,您可以确保关键作业具有优先级和足够的资源来完成。例如,对于要加载数据仓库的关键项目,您可以将所有数据仓库作业组合为一个类,并通过分配高百分比的可用资源来优先处理其他作业。还可以将相对优先级分配给职务分类中的职务。

预定义的 job_classTPURGENTTPHIGHMEDIUMLOW 映射到相应的使用者组。使用这些作业类可以指定使用 DBMS_SCHEDULER.CREATE_JOB 运行作业的使用者组。

DBMS_SCHEDULER.CREATE_JOB 过程支持 Autonomous Databasejob_type 参数的 PLSQL_BLOCKSTORED_PROCEDURE 作业类型。

例如:使用以下命令创建要在 HIGH 使用者组中运行的单个常规作业:

BEGIN
   DBMS_SCHEDULER.CREATE_JOB (
     job_name => 'update_sales',
     job_type => 'STORED_PROCEDURE',
     job_action => 'OPS.SALES_PKG.UPDATE_SALES_SUMMARY',
     start_date => '28-APR-19 07.00.00 PM Australia/Sydney',
     repeat_interval => 'FREQ=DAILY;INTERVAL=2',
     end_date => '20-NOV-19 07.00.00 PM Australia/Sydney',
     auto_drop => FALSE,
     job_class => 'HIGH',
     comments => 'My new job');
END;
/

提供 Oracle Scheduler 的注释:

  • 要对特定角色或特权使用 DBMS_SCHEDULER.CREATE_JOB,可能需要其他授权。ADMIN 用户和具有 DWROLE 的用户具有所需的 CREATE SESSIONCREATE JOB 权限。如果用户没有 DWROLE,则 CREATE SESSIONCREATE JOB 特权需要授权。

  • 对于在 Autonomous Database 上运行的 Oracle Scheduler 作业,将忽略 instance_id 作业属性。

有关 Oracle Scheduler 和 DBMS_SCHEDULER.CREATE_JOB 的更多信息,请参见 Scheduling Jobs with Oracle Scheduler in Oracle Database 19cOracle Database 23ai

有关作业属性的信息,请参见 Oracle Database 19c 中的 SET_ATTRIBUTE ProcedureOracle Database 23ai

性能监视和优化工具

某些情况(例如工作负载变化、应用和数据库服务器的资源限制,或者仅仅是网络瓶颈)可能会导致应用性能问题。Oracle 提供各种工具来帮助您监视性能、诊断性能问题以及优化应用或数据库以解决问题。下面列出了其中一些:
工具 详细资料
性能中心

Oracle Cloud Infrastructure (OCI) 控制台中提供的功能丰富的工具。性能中心还内置了 Oracle Database Actions 和 Oracle Enterprise Manager。

有关详细信息,请参阅使用性能中心监视数据库性能

Autonomous Database 度量

Autonomous Database 度量可帮助您衡量有用的定量数据,例如 CPU 和存储利用率、成功和失败的数据库登录次数和连接尝试次数、数据库操作、SQL 查询和事务处理等。您可以使用度量数据来诊断 Autonomous Database 资源的问题并进行故障排除。

有关详细信息,请参阅使用 Autonomous Database Metrics 监视数据库,例如先决条件、使用情况以及可用于 Autonomous Database on Dedicated Exadata Infrastructure 的指标列表。

自动工作量资料档案库 (AWR) 和自动数据库诊断监视器 (ADDM)

另外两个常用的工具是自动工作量资料档案库 (Automatic Workload Repository,AWR) 和自动数据库诊断监视器 (Automatic Database Diagnostic Monitor,ADM)。

AWR 存储 Oracle 数据库的性能相关统计信息,ADDM 是一个诊断工具,用于定期分析 AWR 数据,查找任何性能问题的根本原因,提供更正问题的建议,并确定系统的非问题区域。由于 AWR 是历史性能数据的存储库,因此 ADDM 可以在事件发生后分析性能问题,从而在重现问题时通常可以节省时间和资源。

有关使用这些工具的说明以及有关数据库性能监视和优化的详细信息,请参阅 Oracle Database 19c Performance Tuning GuideOracle Database 23ai Performance Tuning Guide

此外,您还可以从性能中心获得 AWR 和 ADDM。有关详细信息,请参阅使用性能中心监视数据库性能

有关数据库性能监视和调优的快速介绍,请参阅 Oracle Database 19c 2 Day + Performance Tuning GuideOracle Database 23ai 2 Day + Performance Tuning Guide