SQL 计划管理:概览
SQL 语句的 SQL 执行计划发生更改时,可能存在性能风险。
SQL 计划发生更改的原因有很多,如优化程序版本、优化程序统计信息、优化程序参数、方案定义、系统设计和 SQL 概要文件创建等。
已在以前版本的 Oracle DB 中引入了各种计划控制技术(如存储的大纲和 SQL 概要文件等),用于解决计划更改导致的性能回归。但是,这些技术都是需要手动干预的被动式进程。
SQL 计划管理是一种随 Oracle Database 11g引入的新功能,通过维护所谓的“SQL 计划基线”来使系统能够自动控制 SQL 计划演变。启用此功能后,只要证明新生成的 SQL 计划与 SQL 计划基线相集成不会导致性能回归,就可以进行此项集成。因此,在执行某个SQL 语句时,只能使用对应的 SQL 计划基线中包括的计划。可以使用 SQL 优化集自动加载或植入 SQL 计划基线;本课稍后将对此进行说明。本课稍后还将讨论各种方案。
SQL 计划管理功能的主要优点是系统性能稳定,不会出现计划回归。此外,该功能还可以节省 DBA 的许多时间,这些时间通常花费在确定和分析 SQL 性能回归以及寻可用的解决方案上。
SQL 计划基线:体系结构
SQL 计划管理 (SPM) 功能引入了支持新计划的计划维护和性能验证所必需的基础结构和服务。
对于多次执行的 SQL 语句,优化程序会为单个 SQL 语句维护一个计划历史记录。优化程序通过维护语句日志来标识可重复的 SQL 语句。如果对某个已记录的 SQL 语句再次进行语法分析或再次执行该语句,则将该 SQL 语句标识为可重复的语句。将某个 SQL 语句标识为可重复之后,由优化程序生成的各种计划将作为包含相关信息(如 SQL 文本、大纲、绑定变量和编译环境等)的计划历史记录得以维护;优化程序将使用这些信息来复制执行计划。
作为自动识别可重复 SQL 语句及创建其计划历史记录的一种替代或补充,系统也支持为一系列 SQL 语句手动植入计划。
计划历史记录包含优化程序在某段时间内为 SQL 语句生成的不同计划。但是,只有计划历史记录中的部分计划可能被接受并得以使用。例如,正常情况下不会使用优化程序生成的新计划,除非该计划得到验证不会导致性能回归。在维护窗口中作为自动化任务运行自动 SQL 优化时,就会自动完成计划验证。oracle11g 创建数据库
SQL 计划基线:体系结构(续)
自动 SQL 优化任务的唯一目标是获得高负载的 SQL 语句。为此,该任务会自动执行一些
操作,例如,使成功的已验证计划成为已接受的计划。一系列可接受的计划组成了一个SQL 计划基线。为一个 SQL 语句生成的第一个计划很显然是可接受的计划,因此,该计
划形成了原始的计划基线。优化程序后来发现的任何新计划都包含在计划历史记录中,但最初都不包含在计划基线中。
语句日志、计划历史记录和计划基线都存储在 SQL 管理库 (SMB) 中;该库还包含 SQL 概要文件。SMB 是数据库字典的一部分,存储在SYSAUX表空间中。SMB 使用自动空间管理(例如,定期清除未使用的计划)。可以对 SMB 进行配置,以更改计划保留策略和设
置空间大小限制。
注:使用 Oracle Database 11g时,如果数据库实例已启动,但SYSAUX表空间为OFFLINE,则优化程序将无法访问 SQL 管理对象。这可能会影响某些 SQL 工作量的性能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论