专用 Exadata 基础结构上的自治 AI 数据库中的高性能功能
本文介绍了 Autonomous AI Database on Dedicated Exadata Infrastructure 中的主要性能优化功能。
请注意,在本节中,“您”一词广泛用于指组织中负责执行某些任务的任何用户。在某些情况下,这是应用程序 DBA,而在其他情况下,它是应用程序开发人员。
Autonomous AI Database 包含多项功能,可自动监视、分析和优化数据库性能。有关 Oracle Autonomous AI Database 的 SQL 优化和性能管理功能的完整列表以及如何使用这些功能的说明,请参阅 Oracle Database 19c SQL Tuning Guide 或 Oracle Database 26ai SQL Tuning Guide 。
您可以查看下面介绍的 Autonomous AI Database 的主要性能优化功能的广泛分类。
提示:
在下图中,您可以单击要进一步浏览的功能。预定义数据库服务
应用如何连接到数据库,以及如何对数据库的 SQL 调用进行编码,从而确定应用事务处理和报告操作的整体性能。
提示:
确保查看预定义数据库服务的关键特征以及根据这些特征比较不同数据库服务集的表,以确定哪个数据库服务更适合应用程序的性能要求。连接池
与 Autonomous AI Database 建立连接时,您可以使用连接池来降低重复创建和销毁单个连接的性能开销。这是对应用程序与数据库交互的性能有重大影响的另一个因素。
通常,仅在设计或增强应用程序以提供连续可用性时才考虑使用连接池。但是,使用连接池而不是单个连接几乎可以使每个事务处理应用程序受益。连接池具有以下优点:
- 减少创建新连接对象的次数。
- 提升连接对象重用。
- 加快获取连接的过程。
- 控制用于维护连接的资源量。
- 减少手动管理连接对象所需的编码工作量。
专用连接功能
-
托管标记是这样一种功能,在某些事务处理应用程序中非常有用。如果您的应用多次连接到同一数据库服务,则托管标记允许将所有此类连接定向到同一数据库实例,从而绕过通常在连接数据库端执行的负载平衡处理。有关详细信息,请参阅 Oracle Database 19c 或 Oracle Database 26ai 中的 COLOCATION_TAG of Client Connections 。
-
共享服务器配置是 Autonomous AI Database 支持的另一个功能,用于维护设计时没有连接池的传统应用。共享服务器体系结构使数据库服务器能够允许许多客户机进程共享很少的服务器进程。这会增加应用程序可以支持的用户数。对此类传统应用使用共享服务器体系结构,无需对应用本身进行任何更改即可进行扩展。
您可以在预配自治容器数据库 (Autonomous Container Database,ACD) 时启用共享服务器连接,此设置适用于其中创建的所有数据库。有关说明,请参见 Create an Autonomous Container Database 。
有关共享服务器(包括会话多路复用等功能)的更多详细信息,另请参阅 Oracle Database 19c Net Services Administrator's Guide 或 Oracle Database 26ai Net Services Administrator's Guide 。
为自治容器数据库启用共享服务器连接后,无需更改连接字符串。默认配置设置为“专用”。
注意:
对于在启用了共享服务器的自治容器数据库下创建的特定 Autonomous AI Database ,无法禁用共享服务器,也不能对在启用了共享服务器的自治容器数据库下创建的 Autonomous AI Database 使用专用连接。
SQL 性能优化功能
出色的应用程序从编写良好的 SQL 开始。Oracle Autonomous AI Database 提供多种功能,使您能够构建高性能应用并验证 SQL 和 PL/SQL 代码。下面列出了其中一些功能:
- 自动索引
- 优化程序统计信息和提示
- 自动解决 SQL 计划退化
- 自动隔离失控 SQL 语句
- SQL 计划管理
- SQL 优化集
- SQL 跟踪
在开发应用时,您可以使用 Oracle Database Actions(内置在 Autonomous AI Database 中)和 Oracle SQL Developer(开发系统上安装的免费应用程序)提供的 SQL 工作表来快速了解这些功能如何影响编写的 SQL 代码,从而改进代码。
SQL 跟踪
当应用程序操作花费的时间比预期长时,获取在此操作过程中执行的所有 SQL 语句的跟踪信息,以及该 SQL 语句在语法分析、执行和提取阶段花费的时间等详细信息,将有助于您确定和解决性能问题的原因。您可以在自治 AI 数据库上使用 SQL 跟踪来实现此目的。
Autonomous AI Database 中默认禁用 SQL 跟踪。您必须启用它才能开始收集 SQL 跟踪数据。有关启用和使用 SQL 跟踪的详细说明,请参阅在 Autonomous AI Database 上使用 SQL 跟踪。
优化程序统计信息
Autonomous AI Database 会自动收集优化程序统计信息,以便您无需手动执行此任务,这有助于确保统计信息是最新的。自动统计信息收集在 Autonomous AI Database 中启用,并在标准维护窗口中运行。
注意:
有关维护窗口时间和自动优化程序统计信息收集的更多信息,请参阅 Oracle Database 19c Administrator’s Guide 或 Oracle Database 26ai Administrator's Guide 。
有关优化程序统计信息的更多信息,请参阅 Oracle Database 19c SQL Tuning Guide 或 Oracle Database 26ai SQL Tuning Guide 。
优化程序提示
优化程序提示是 SQL 语句中向优化程序传递指令的特殊注释。除非某些条件阻止,否则优化程序将使用提示为该语句选择执行计划。
PARALLEL
提示因工作负载而异:
-
Autonomous AI Lakehouse :默认 SQL 语句中的 Autonomous AI Database 忽略优化程序提示和
PARALLEL
提示。如果应用程序依赖于提示,则可以通过在会话或系统级别使用
ALTER SESSION
或ALTER SYSTEM
将参数OPTIMIZER_IGNORE_HINTS
设置为FALSE
来启用优化程序提示。例如,以下命令在会话中启用提示:ALTER SESSION SET OPTIMIZER_IGNORE_HINTS=FALSE;
还可以通过在会话或系统级别使用
ALTER SESSION
或ALTER SYSTEM
将OPTIMIZER_IGNORE_PARALLEL_HINTS
设置为FALSE
,在 SQL 语句中启用PARALLEL
提示。例如,以下命令在会话中启用PARALLEL
提示:ALTER SESSION SET OPTIMIZER_IGNORE_PARALLEL_HINTS=FALSE;
-
Autonomous AI Transaction Processing :默认 SQL 语句中的 Autonomous AI Database honors 优化程序提示和
PARALLEL
提示。您可以使用
ALTER SESSION
或ALTER SYSTEM
在会话或系统级别将参数OPTIMIZER_IGNORE_HINTS
设置为TRUE
来禁用优化程序提示。例如,以下命令在会话中禁用提示:
ALTER SESSION SET OPTIMIZER_IGNORE_HINTS=TRUE;
还可以通过在会话或系统级别使用
ALTER SESSION
或ALTER SYSTEM
将OPTIMIZER_IGNORE_PARALLEL_HINTS
设置为TRUE
来禁用 SQL 语句中的PARALLEL
提示。例如,以下命令在会话中启用
PARALLEL
提示:ALTER SESSION SET OPTIMIZER_IGNORE_PARALLEL_HINTS=TRUE;
自动索引
自动索引功能可自动执行 Autonomous AI Database 中的索引管理任务。在 Autonomous AI Database 中,自动索引功能默认处于禁用状态。
手动创建索引需要对数据模型、应用程序和数据分布有深入的了解。过去,DBA 负责选择要创建哪些索引,但有时 DBA 不会在条件发生变化时修改其选择或维护索引。因此,改进的机会丧失了,使用不必要的指数可能成为履约责任。
Autonomous AI Database 中的自动索引功能可监视应用工作负载并自动创建和维护索引。
提示:
有关演示这些说明的“试用”替代方案,请运行 Oracle Autonomous AI 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 或 Oracle Database 26ai Administrator’s Guide 中的 Managing Auto Indexes 。
快速摄取
快速摄取可优化高频单行数据插入到数据库中的处理。快速摄取使用大型池在将插入写入磁盘之前缓冲插入,从而提高数据插入性能。
快速入门的目的是支持生成大量信息数据的应用程序,这些数据在聚合中具有重要价值,但不一定需要完整的 ACID 保证。物联网 (Internet of Things,IoT) 中的许多应用都具有快速的“触发和遗忘”类型的工作负载,例如传感器数据、智能计量表数据甚至交通摄像头。对于这些应用程序,数据可能会以高容量收集并写入数据库,以供日后分析。
快速摄取与通常的 Oracle AI Database 事务处理非常不同,在事务处理中记录数据,并且一旦“写入”数据库(即提交)就不会丢失数据。为了实现最大摄取吞吐量,会绕过普通的 Oracle 事务处理机制,应用程序有责任检查是否所有数据都已写入数据库。已添加特殊 API,可以调用这些 API 来检查是否已将数据写入数据库。
有关快速摄取的概述以及使用此功能所涉及的步骤,请参阅 Using Fast Ingest in Oracle Database 19c Performance Tuning Guide 或 Oracle Database 26ai Performance Tuning Guide 。
-
启用优化程序以使用提示:根据需要在会话或系统级别将
optimizer_ignore_hints
参数设置为FALSE
。根据您的 Autonomous AI Database 工作负载类型,默认情况下,
optimizer_ignore_hints
可以在系统级别设置为FALSE
。有关详细信息,请参阅优化程序统计信息。 - 创建用于快速摄取的表:有关表符合快速摄取条件的限制,请参阅 Oracle Database 19c Performance Tuning Guide 或 Oracle Database 26ai Performance Tuning Guide (具有指定特性的表不能使用快速摄取)。
Oracle Scheduler 的预定义作业类
Autonomous AI Database 包含要与 Oracle Scheduler 一起使用的预定义 job_class
值。通过这些作业类,可以将具有共同特征和行为的作业分组到更大的实体中,以便通过控制分配给每个类的资源来在这些类之间确定优先级。
通过预定义的作业分类,您可以确保关键作业具有优先级和足够的资源来完成。例如,对于要加载数据仓库的关键项目,您可以将所有数据仓库作业组合为一个类,并通过分配高百分比的可用资源来优先处理其他作业。还可以将相对优先级分配给职务分类中的职务。
预定义的 job_class
值 TPURGENT
、TP
、HIGH
、MEDIUM
和 LOW
映射到相应的使用者组。使用这些作业类可以指定使用 DBMS_SCHEDULER.CREATE_JOB
运行作业的使用者组。
DBMS_SCHEDULER.CREATE_JOB
过程支持 Autonomous AI Database 中 job_type
参数的 PLSQL_BLOCK
和 STORED_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 SESSION
和CREATE JOB
权限。如果用户没有DWROLE
,则CREATE SESSION
和CREATE JOB
特权需要授权。 -
对于在 Autonomous AI Database 上运行的 Oracle Scheduler 作业,将忽略
instance_id
作业属性。
有关 Oracle Scheduler 和 DBMS_SCHEDULER.CREATE_JOB
的更多信息,请参见 Scheduling Jobs with Oracle Scheduler in Oracle Database 19c or Oracle Database 26ai 。
有关作业属性的信息,请参阅 Oracle Database 19c 或 Oracle Database 26ai 中的 SET_ATTRIBUTE Procedure 。
性能监视和优化工具
工具 | 详细资料 |
---|---|
性能中心 |
Oracle Cloud Infrastructure (OCI) 控制台中提供的功能丰富的工具。性能中心还内置了 Oracle Database Actions 和 Oracle Enterprise Manager。 有关详细信息,请参阅使用性能中心监视数据库性能。 |
自治 AI 数据库指标 |
自治 AI 数据库度量可帮助您衡量有用的定量数据,例如 CPU 和存储利用率、成功和失败的数据库登录次数以及连接尝试次数、数据库操作、SQL 查询和事务处理等。您可以使用指标数据来诊断和排除 Autonomous AI Database 资源的问题。 有关详细信息,请参阅使用自治 AI 数据库度量监视数据库,例如它先决条件、使用情况以及可用于 Autonomous AI 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 Guide 或 Oracle Database 26ai Performance Tuning Guide 。 此外,您还可以从性能中心获得 AWR 和 ADDM。有关详细信息,请参阅使用性能中心监视数据库性能。 有关数据库性能监视和调优的快速介绍,请参阅 Oracle Database 19c 2 Day + Performance Tuning Guide 或 Oracle Database 26ai 2 Day + Performance Tuning Guide 。 |