oracle 执行计划PPT课件
2024版oracle系列培训ppt课件
Oracle PaaS服务为企业提供数据库、应用开发和集成、大数据分析等云平台,加速企业数字 化转型。
Oracle Cloud软件即服务(SaaS)
Oracle提供丰富的SaaS应用,如ERP、CRM、HCM等,满足企业不同业务需求,降低企业 运营成本。
Oracle在大数据处理中的应用实践
数据库安全管理
安全管理策略Leabharlann 阐述Oracle数据库的安全管理策略,包括用户权限管理、 角色管理、数据加密和安全审计等方面的内容。
数据加密与传输安全
讲解Oracle数据库的数据加密技术和传输安全机制,包括 透明数据加密(TDE)、SSL/TLS加密通信等,保障数据的 机密性和完整性。
用户与权限管理
详细介绍如何管理Oracle数据库的用户和权限,包括用户 的创建、授权和撤销等操作,确保只有授权用户才能访问数 据库资源。
TKPROF等,帮助管理员及时发 现和定位性能问题。
SQL优化
详细讲解SQL优化的方法和技巧, 包括SQL语句的编写规范、索引 设计原则、执行计划分析和优化 等,提高SQL语句的执行效率。
系统优化
提供系统层面的优化建议,包括 内存分配、磁盘I/O优化、网络 配置调整等,提升整个数据库系
统的性能表现。
的集合,是数据管理的高级阶段。
数据库的发展历程
02
从文件系统到层次、网状数据库,再到关系数据库和非关系数
据库。
Oracle数据库的特点与优势
03
高性能、高可用性、可扩展性、安全性等。
Oracle数据库体系结构
01
02
03
04
物理存储结构
数据文件、控制文件、重做日 志文件等。
oracle执行计划
oracle执行计划Oracle执行计划。
Oracle执行计划是数据库系统中非常重要的一个概念,它指的是Oracle数据库在执行SQL语句时所选择的最优执行路径。
通过执行计划,我们可以了解到Oracle是如何执行SQL语句的,从而可以对SQL语句进行优化,提高数据库的性能。
在本文中,我们将深入探讨Oracle执行计划的相关内容,包括执行计划的基本概念、执行计划的生成方式、执行计划的解读和优化等方面。
首先,我们来了解一下执行计划的基本概念。
执行计划是Oracle数据库优化器根据SQL语句和数据库对象的统计信息,通过优化算法生成的一种执行路径。
这个执行路径包括了SQL语句的执行顺序、访问方法、连接方式等信息。
通过执行计划,我们可以知道数据库是如何执行SQL语句的,从而可以对SQL语句进行优化,提高数据库的性能。
接下来,我们将介绍执行计划是如何生成的。
在Oracle数据库中,执行计划是由优化器根据SQL语句和数据库对象的统计信息生成的。
优化器会根据SQL语句的复杂度、表的大小、索引的选择等因素,选择最优的执行路径。
在生成执行计划时,优化器会考虑多种执行路径,并选择成本最低的执行路径作为最终的执行计划。
然后,我们将讨论如何解读执行计划。
执行计划通常以树状结构的方式呈现,包括了SQL语句的执行顺序、访问方法、连接方式等信息。
我们可以通过执行计划了解到SQL语句的执行路径,从而可以对SQL语句进行优化。
例如,我们可以通过执行计划了解到是否使用了索引、是否进行了全表扫描等信息,从而可以对SQL语句进行优化,提高数据库的性能。
最后,我们将介绍如何优化执行计划。
通过执行计划,我们可以了解到SQL语句的执行路径,从而可以对SQL语句进行优化。
例如,我们可以通过执行计划了解到是否使用了索引、是否进行了全表扫描等信息,从而可以对SQL语句进行优化,提高数据库的性能。
在优化执行计划时,我们可以考虑对SQL语句进行重写、创建索引、收集统计信息等方式,从而提高数据库的性能。
ORACLE数据库规划与实施方案分析ppt(共47页)
北京邮电大学软件学院
郭文明 2003.06
郭文明 2003.06.05
4.4.1 数据库应用程序类型
–决策支持系统(DSS)
4)如前所述,DSS希望Oracle块一次读取尽可能多的 行。因为DSS查询一般触发整个表扫描,所以希望通过 读取多个连续的块使系统读取的块达到最大值。把 DB_BLOCK_SIZE和DB_FILE_MULTIBLOCK_READ_COUNT参数 设置得尽可能高些。
–基本OFA
1)系统表空间(SYSTEM):系统表空间不具有重建 性,只用于存放数据字典,其他内容如数据段信息 等都应从系统表空间中移出。
北京邮电大学软件学院
郭文明 2003.06
郭文明 2003.06.05
4.4.2.1 ORACLE表空间设计
–基本OFA
2)分离应用程序数据段(DATA):应用程序数据段 应是一个独立的表空间,即数据表空间。建立单独 数据表空间的理由是:应用程序与数据文件分离有 利于减少资源争用,简化文件管理;另外,当数据 段产生碎片时利于管理。
6)使用小型临时段。需要小的排序应在内存中完成,
尽量避免OLTP系统对临时段的请求进入磁盘。
北京邮电大学软件学院
郭文明 2003.06
郭文明 2003.06.05
4.4.1 数据库应用程序类型
–决策支持系统(DSS)
DSS系统通常是一个大型的、包含历史性内容的只读 数据库,通常用于简单的固定查询或特别查询。夜间 处理任务被认为是DSS,查询(选择)是DSS的主要活 动。根据这些要求,我们应该从以下几方面考虑:
北京邮电大学软件学院
郭文明 2003.06
郭文明 2003.06.05
4.4.1 数据库应用程序类型
(仅供参考)oracle执行计划详解
1<在此处插入图片>Explain Plan 命令说明Nancy Guo 郭颖忠Senior Sales Consultant免责声明•SQL 执行计划的说本讲座旨在为您提供有关如何阅读SQL明,并帮助您确定该计划是否满足您的要求。
•本讲座并不能使您一举成为优化器专家,也无法使您SQL具备轻松调整SQL 语句的能力!议题•什么是执行计划,如何生成执行计划?什么是执行计划如何生成执行计划?•一个优秀的优化器计划是什么样的?•理解执行计划•基数•访问方法•联接顺序•联接类型•分区修剪•并行度•执行计划示例<在此处插入图片>什么是执行计划,如何生成执行计划?•执行计划显示在执行一条SQL 语句时必须执行的详细执行计划显示在执行条SQL步骤•这些步骤表示为一组数据库运算符,这些运算符将使这些步骤表示为组数据库运算符这些运算符将使用和生成行•这些运算符及其实施的顺序由优化器使用查询转换及物理优化技术的组合来确定•执行计划通常以表格的形式显示,但它实际上为树形查询SELECT prod category avg(amount sold)SELECT prod_category, avg(amount_sold)FROM sales s, products pWHERE p.prod_id = s.prod_idGROUP BY prod_category;G B 执行计划的表格表示-----------------------------------------------------------Id Operation Name 执行计划的树形表示Group By HASH JOIN Id Operation Name-----------------------------------------------------------0 SELECT STATEMENT1 HASH GROUP BY2HASH JOIN TABLE ACCESS TABLE ACCESS2 HASH JOIN3 TABLE ACCESS FULL PRODUCTS4 PARTITION RANGE ALL5 TABLE ACCESS FULL SALESSALESPRODUCTS ----------------------------------------------------------可以使用两种方法查看执行计划1.EXPLAIN PLAN 命令1EXPLAIN PLAN•显示一条SQL 语句的执行计划,而不实际执行此语句2.V$SQL_PLAN2V$SQL PLAN•在Oracle 9i 中引入的字典视图,它可显示已编译到游标缓存中一个游标的一条SQL 语句的执行计划使用DBMS_XPLAN 包来显示执行计划在某些情况下,使用EXPLAIN PLAN 显示的计划可能与使用V$SQL_PLAN 显示的计划不同V$SQL PLAN示例1 EXPLAIN PLAN 命令和dbms_xplan.display 函数SQL> EXPLAIN PLAN FORSELECT prod_category, avg(amount_sold)FROM sales s, products pp p_p_WHERE p.prod_id = s.prod_idGROUP BY prod_category;ExplainedSQL> SELECT plan_table_outputSQL>SELECT plan table outputFROM table(dbms_xplan.display('plan_table',null,'basic'));------------------------------------------Id Operation NameId O ti N------------------------------------------0 SELECT STATEMENT1 HASH GROUP BY2 HASH JOIN3 TABLE ACCESS FULLPRODUCTS4 PARTITION RANGE ALL5 TABLE ACCESS FULL SALES-------------------------------------------示例2 生成并显示在会话中最后执行的SQL 语句的执行计划SQL>SELECT prod_category, avg(amount_sold)FROM sales s, products pFROM l d tWHERE p.prod_id = s.prod_idGROUP BY prod_category;no rows selectedno rows selectedSQL> SELECT plan_table_outputFROM table(dbms_xplan.display_cursor(null,null,'basic'));------------------------------------------Id Operation Name------------------------------------------0 SELECT STATEMENT0SELECT STATEMENT1 HASH GROUP BY2 HASH JOIN3 TABLE ACCESS FULLPRODUCTS4 PARTITION RANGE ALL4PARTITION RANGE ALL5 TABLE ACCESS FULL SALES-------------------------------------------如何获取执行计划示例3 显示V$SQL_PLAN 中的任何其他语句的执行计划3V$SQL PLAN11.直接:SQL> SELECT plan_table_output FROMtable(dbms_xplan.display_cursor('fnrtqw9c233tt',null,'basic'));2.间接:SQL> SELECT plan_table_outputFROM$l TABLE(db l di l(l id hild b FROM v$sql s, TABLE(dbms_xplan.display_cursor(s.sql_id,s.child_number, 'basic')) tWHERE s.sql_text like 'select PROD_CATEGORY%';注:有关详情,请访问DBMS_XPLAN 参数•DBMS_XPLAN.DISPLAY 接受3 个参数DBMS XPLAN DISPLAY3•计划表的名称(默认为“PLAN_TABLE”),•statement_id(默认为null)•格式(默认为“TYPICAL”)•DBMS_XPLAN.DISPLAY_CURSOR 接受3 个参数•SQL_ID(默认为此会话中最后一个执行的语句),SQL ID(默认为此会话中最后个执行的语句)•子编号(默认为0),•格式(默认为“TYPICAL”)•格式是高度可定制的•Basic•Typical•All•其他低级别参数可显示更多的详细信息<在此处插入图片>个优秀的优化器计划一个优秀的优化器计划是什么样的?一个优秀的优化器计划是什么样的?优化器有两个不同的目标•串行执行:其关注的是开销•开销越低越好•并行执行:其关注的是性能•速度越快越好两个基本问题:•什么是开销?什么是性能•什么是性能?什么是开销?•优化器生成的神奇数字?•执行SQL 语句所需的资源?句所需的资•复杂计算的结果?•执行语句所需时间的估计?实际定义•开销指的是所使用的工作单元或资源的数量•优化器用CPU、内存使用和IO 作为工作单元内存使用和IO•开销是对执行操作时要使用的CPU 和内存量以及磁盘I/O 数的估计开销是Oracle 的一个内部量度性能是什么?•完成尽可能多的查询?•使用最少的资源获得尽可能快的运行速度?•获得最佳的并发率?实际定义•性能指的是对查询的最快响应时间•目标是尽可能快地完成查询操作•优化器不关注执行计划所需的资源<在此处插入图片>理解执行计划SQL 执行计划您在查看计划时能否确定以下项是否正确?•基数•每个对象是否生成正确的行数?•访问方法•是否以最好的方式访问数据?扫描?索引查找?•联接顺序•是否以正确的顺序联接各表以便尽早尽多地消除数据?•联接类型•是否使用了正确的联接类型?•分区修剪•我执行过分区修剪吗?是否消除了足够多的数据?•并行度基数什么是基数?•估算将返回的行数•单值谓词的基数= 行的总数/不同值的总数•例如:共100 行,共10 个不同值=> 基数= 10 行或者,如果为柱状图表示,则是行数密度•*为什么要关注?•它将影响所有方面!访问方法、联接类型、联接顺序等哪些因素会导致基数出错?统计信息陈•统计信息陈旧/缺少•数据偏差•个表有多个单列谓词一个表有多个单列谓词•where 子句谓词中包含函数•复杂表达式,其中包含来自不同表的列基数或选择度估算返回行数的基数使用简单的SELECT COUNT(*) 从每个表应用任何属于该表的WHERE 子句谓词确定正确的基数使用以下代码查看基数SELECT /*+ gather_plan_statistics */p.prod_name as product, sum(s.quantity_sold) as units, FROM sales s products pFROM sales s, products pWHERE s.prod_id =p.prod_idGROUP BY p.prod_name;SELECT * FROM table (DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=>'ALLSTATS LAST'));比较计划中每个操作的估算返回行数与实际返回行数使用SQL 监视器查看基数利用SQL 监视器,您可以比较计划中每个操作的SQL监视器您可以比较计划中每个操作的估算返回行数与实际返回行数有关解决基数问题的建议原因解决方法统计信息陈旧/缺少DBMS_STATS数据偏创建个柱状图数据偏差创建一个柱状图*一个表有多个单列谓词使用DBMS_STATS.CREATE_EXTENDED_STATS创建一个列组在一个联接中使用多个列使用___创DBMS STATS.CREATE EXTENDED STATS建一个列组包含函数的列使用DBMS_STATS.CREATE_EXTENDED_STATS创DBMS STATS CREATE EXTENDED STATS建有关包含函数的列的统计信息复杂表达式,其中包含来自多个表使用4 级或更高的动态抽样级别的列*柱状图会对具有11g 之前的绑定的语句产生令人注目的副作用请谨慎使用访问方法—获取数据访问方法解释完整表扫描读取表中所有行并过滤掉那些不符合WHERE 子句谓词的行。
2024版Oracle培训ppt课件
安全性
Oracle数据库提供全面的安全特性,如数 据加密、访问控制、审计等,确保数据的 安全性。
7
Oracle数据库应用场景
互联网应用
Oracle数据库支持大量并发用 户访问,适用于互联网应用, 如电商网站、社交媒体等。
金融交易系统
Oracle数据库的高性能和高可 用性使其成为金融交易系统的 理想选择。
22
Oracle SQL增强功能介绍
Oracle SQL扩展
Oracle数据库为SQL语言提供了许多扩展功能,如 PL/SQL编程、分区表、物化视图等。这些功能可以 提高数据库的性能、可维护性和灵活性。
数据完整性保障
Oracle数据库提供了ACID事务特性、约束 (constraint)和触发器(trigger)等机制,确保 数据的完整性和一致性。这些功能可以防止脏读、 不可重复读和幻读等问题。
逻辑存储结构
01
02
03
04
表空间
数据库中的逻辑存储单元,由 一个或多个数据文件组成。
2024/1/24
段
表空间中用于存储特定类型数 据的逻辑结构,如表段、索引
段等。
区
段内连续的物理存储空间,由 多个连续的数据块组成。
数据块
Oracle数据库中最小的存储单 位,用于存储实际的数据。
11
内存结构
系统全局区(SGA)
包含数据库实例的数据和控制信息, 如缓存的数据块、共享池、重做日志 缓冲区等。
程序全局区(PGA)
缓存区
用于缓存从磁盘读取的数据块,以减 少磁盘I/O操作。
包含服务器进程的数据和控制信息, 如排序区和会话信息。
2024/1/24
12
Oracle数据库中级培训(执行计划)第7讲PPT课件
补充:GROUP BY 分组基数 Card(group by c1,c2,…,cn)= NDV(c1) ХNDV(c2) Х…ХNDV(cn)
2(n-1)
5
连接基数计算示例
连接选择率和基数计算示例:
select a.city_name,a.city_id,e_count
|
|
| 1 | NESTED LOOPS
|
| 1 | 49 | 3 (0)| 00:00:01 |
|
|
| 2 | PARTITION RANGE SINGLE |
| 1 | 39 | 2 (0)| 00:00:01 | 574 | 574 |
|* 3 | TABLE ACCESS FULL
| FCT_USE_DAY | 1 | 39 | 2 (0)| 00:00:01 | 574 | 574 |
嵌套循环连接 (要点)
嵌套循环连接的相关知识点:
1)嵌套循环连接可以用两幅典型的图来表示。 作为解释嵌套循环连接机制的工具,每副 图有各自的优点和不足。
2)嵌套循环通常用于从驱动表中过滤得到少 数行中的每一行用于连接第二个表以便从 从选取“少数行”。
10
嵌套循环连接(机制一)
该图简单的将一个表中的行与另一个表中的行连接起来, 用箭头表示活动的方向,这种表示使我们很容易看出一个表 中的行与另一个表中对应行之间的联系。
from fct_use_day b where b.dms_time_id=20101001 group by dms_area_id,DMS_SERVICE_TYPE_ID,DMS_ENTRANCE_ID;
oracle ppt 课件
Oracle门店管理系统实现门店的进销存管理、员工排班、销售 分析等功能,提升门店运营效率和客户满意度。
Oracle会员管理系统实现会员信息管理、积分兑换、数据分析 等功能,提高会员忠诚度和商家营销效果。
Oracle数据库的性能优化
根据实际应用需求和系统资源情况,进行性能优化,包括内存优化、磁盘优化等。
Oracle数据库的管理与维护
Oracle数据库的备份与恢复
01
定期备份Oracle数据库,并制定相应的恢复策略,以防止数据
丢失。
Oracle数据库的安全管理
02
包括用户管理、权限管理和审计等,以确保数据的安全性和完
3
Oracle数据库的应用领域
广泛应用于金融、电信、制造、零售等各个行业 ,为企业提供数据存储、处理和分析服务。
Oracle数据库的体系结构
01
Oracle数据库的物理结构
包括数据文件、控制文件、重做日志文件等,这些文件组成了Oracle数
据库的物理存储结构。
02
Oracle数据库的逻辑结构
包括表空间、段、区、块等,这些逻辑结构定义了数据在物理存储上的
Oracle中间件应用场景
介绍Oracle中间件在各个应用场景中的解决方案和 案例。
Oracle开发工具
Oracle开发工具概述
介绍Oracle开发工具的种类和功能。
Oracle开发工具特点
总结Oracle开发工具的特点和优势,如易用性、集成性、高效性等。
Oracle开发工具应用场景
介绍Oracle开发工具在各个应用场景中的解决方案和案例。
Oracle执行计划.ppt
varchar2 (30),
AUTO TRACE
SQL> set autotrace on; SQL> select * from dual; D X Execution Plan ---------------------------------------------------------0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (FULL) OF 'DUAL' Statistics ---------------------------------------------------------0 recursive calls 0 db block gets 3 consistent gets 0 physical reads 0 redo size 372 bytes sent via SQL*Net to client 511 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed SQL>
BEGIN
Oracle执行计划解读
培训教师 : 谢高兴
时 间 : 2006.4.27
SQL执行过程
1,解析SQL
•检查安全性 •检查SQL语法 •查询重新书写 2,执行 •创建执行计划
•捆绑执行计划 •执行执行计划 •读取结果集 3,显示结果集 4,转换字段数据
执行计划
执行计划: Oracle内部的机器级代码,决定如何访问 存储器,得到需要的结果集。
Oracle:计划管理系统课程介绍(PPT 390页)
1-46
工序资源
Besthelp®
Consulting
1-47
现在您应能够: • 设置生产结构 • 查看生产结构
总结
Besthelp®
Consulting
1-48
练习 4-1
• 设置、查看生产结构
Besthelp®
Consulting
1-49
Unit I Lesson 5 设置物料和能力计划
班次1
焊炬
班次1
Besthelp®
Consulting
部门
Besthelp®
Consulting
1-43
部门资源
Besthelp®
Consulting
1-44
工艺路线
A
工序 10 部门 A
资源1
资源2
工序20 部门B
资源1
资源2
Besthelp®
Consulting
1-45
工序
Besthelp®
西部 预测
Item Date Qty Source A 6/1 25 西部
中部 预测
东部 预测
Item Date Qty Source A 6/1 50 中部
Item Date Qty Source A 6/1 10 东部
Besthelp®
Consulting
1-55
冲减预测
=
原始预测
当前预测
+
客户定单
Besthelp®
g
1-3
概述
Oracle 的计划应用产品包括Oracle 主计划/MRP 和 Oracle 的能力计划. Oracle 主计划/MRP 可以帮助您: • 预测 • 主计划 • 离散物料计划 • 重复物料计划
ORACLE执行计划
ORACLE执行计划Oracle执行计划是Oracle数据库用于优化和执行SQL语句的步骤和顺序的一个计划。
在执行SQL语句之前,Oracle会分析SQL语句并生成一个执行计划,然后根据执行计划来执行SQL语句。
执行计划可以帮助开发人员和数据库管理员了解SQL语句的执行过程,找出性能瓶颈,并进行优化调整。
执行计划由一系列步骤和操作符组成,每个操作符表示一个SQL语句执行的特定步骤或操作。
Oracle数据库使用一个优化器来生成执行计划,优化器会考虑多个因素,如表的大小、索引的选择、连接类型等,以选择最佳的执行计划。
执行计划中的操作符可以分为以下几类:1. 表扫描操作符(Table Scan Operator):表示从表中逐行读取数据。
这是最基本和最常见的操作符之一、它可以是全表扫描(Full Table Scan)或索引扫描(Index Scan)。
2. 连接操作符(Join Operator):表示连接两个或多个表的操作。
连接操作是查询复杂性的一个重要组成部分,通过选择最合适的连接类型,可以极大地提高查询的性能。
3. 过滤操作符(Filter Operator):表示对查询结果进行筛选,只返回符合特定条件的数据。
过滤操作可以利用索引或表达式进行优化。
4. 排序操作符(Sort Operator):表示对查询结果进行排序,以按特定的顺序返回数据。
排序操作可以使用内存排序(In-Memory Sort)或磁盘排序(Disk Sort)。
5. 分组操作符(Group By Operator):表示将查询结果按照指定的列进行分组。
分组操作常用于聚合查询,如求和、计数等。
6. 聚合操作符(Aggregation Operator):表示对分组后的数据进行聚合计算。
聚合操作包括求和、计数、平均值等。
7. 索引操作符(Index Operator):表示使用索引来加速查询。
索引操作包括索引扫描、索引唯一扫描等。
Oracle数据库中级培训(执行计划)第6讲
上海全成通信技术有限公司 金刚(seniordba@) 金刚 2009-12
目录
PLAN(执行计划 执行计划) 一. SQL EXECUTION PLAN(执行计划) 成本分析入门) 二. SQL COST(成本分析入门 成本分析入门 表分区)设计 三. PARTITION(表分区 设计 表分区 四. INDEX(索引 索引) 索引 并行) 五. PARALLEL(并行 并行 提示) 六. HINT(提示 提示 七. 设计开发误区
步骤一:人工设置 和存储子系统处理能力。 用户下执行) 步骤一:人工设置CPU和存储子系统处理能力。(在sys用户下执行 和存储子系统处理能力 在 用户下执行 begin dbms_stats.set_system_stats('MBRC',12); dbms_stats.set_system_stats('MREADTIM',30); dbms_stats.set_system_stats('SREADTIM',5); dbms_stats.set_system_stats('CPUSPEED',1500); end; /
案例1:关于 案例 关于CPU成本讨论 关于 成本讨论
步骤三: 步骤三:分析执行计划
1)explain plan for select /*+ cpu_costing ordered_predicates */ * from t1 where v1 = 1 and n2 = 18 and n1 = 998 ;
分析如下: 分析如下: 1)类型转换30000次,比较30000+1500+75=31574 2)类型转换1次, 比较30002 3)类型转换30000次,比较30000+1500+1=31501 4)类型转换1次, 比较30002 5)类型转换30000次,比较1502次 结论: 结论: 1.COST(CPU)= 10,456,833/(1500*5000)=1.39 2.优化技巧,避免数据类型转换 优化技巧, 优化技巧
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
完全放手不管了?
❖ 真的能放心吗?如果真的什么都不用管了, 这个课也不用讲了……
❖ 来看例子
➢ 关于first_rows, first_rows(n) ➢ CBO对数据的计算结果有误 ➢ 绑定变量的不足之处
❖ 怎么办呢?
15
世界的拯救者--Hints
❖ Hints的分类
What is a execution plan?
❖ Execution Plan: To execute a SQL statement, Oracle might need to perform many steps. Each of these steps either retrieves rows of data physically from the database or prepares them in some way for the user issuing the statement. The combination of the steps Oracle uses to execute a statement is called an execution plan. An execution plan includes an access path for each table that the statement accesses and an ordering of the tables (the join order) with the appropriate join method.
Oracle 执行计划
培训目的:1. 掌握执行计划 2. 掌握判断SQL优劣的基本能力 3. 在合适的时候用合适的Hints
1
第一部分
整体概述
THE FIRST PART OF THE OVERALL OVERVIEW, PLEASE SUMMARIZE THE CONTENT
2
提在最前面的问题
❖ 在RBO时代,关于access path,很简单,有index 就用,而对于join方法,编程人员一般会通过调整 关联表之间的先后顺序来获得比较好的运行结果。 有什么缺点呢?
❖ 有了CBO,简单就是两个字------CBO走的是包办婚 姻:有我你放心
❖ 这里讲的内容是最主要的,其他还有一些派生性的 Access Path 和Join方法,多看看实际例子,再参 考一些资料,一下子就明白了。
❖ 你,一个普通公民,准备去地球轨道仓中体 验一下生活,你的行程该怎么走?第一步, 是什么交通工具,第二步是什么交通工 具。。。
❖ 一共大概要花多少时间,能不能做出一个估 计
3
对自己写的SQL有多少把握
❖ 执行一下SQL的时候,会听到一个人在说,我的执行时间是 0.7秒,而另 一个人说,我的是0.9秒
❖ Join Method:
➢ nested loop ➢ sort merge ➢ cartesian ➢ hash join(CBO) ➢ outer join
12
请提问!有问题千万别犹豫!
13
如何选择Access Path 和 Join Order以及Join Method
❖ 形成一个execution plan有多少种选择?
➢ Cluster Scans ➢ Hash Scans ➢ Sample Table Scans
11
Joins
❖ Joins are statements that retrieve data from more than one table.
❖ Join Order To execute a statement that joins more than two tables, Oracle joins two of the tables and then joins the resulting row source to the next table.
4
5
图解
❖ 这是一张SQL语句执行过程图 ❖ 执行计划是SQL语句执行过程中必然用到的 ❖ 执行计划是优化器(Optimizer)的产物 ❖ 两种不同的优化方式(Mode),分别形成了
RBary中的Statistics,而
RBO没有
6
先看货
EXPLAIN PLAN FOR SELECT e.employee_id, j.job_title, e.salary,
d.department_name FROM employees e, jobs j, departments d WHERE e.employee_id < 103
AND e.job_id = j.job_id AND e.department_id = d.department_id;
7
8
9
❖ 非常典型的用法争论:in & exists ❖ 一模一样SQL语句,在配置差多的几台机器上执行,执行时
间差异挺大,在同一台机器上,在不同的时间执行,结果也 往往不一样,这时候有些人会试着SQL语句中各个元素之间 的相对位置,有时候,一调,还真有效果,这到底是怎么回 事呢? ❖ 如果你存在着如上的判断难题,那么这堂课将会使你不再迷 惘 ❖ 究竟如果去判断,如何去选择呢?引用个谚语:问题来自哪 里,就回哪里解决问题:SQL语句是如何被执行的,从中也 许能得到 点什么,请看下图
10
Access Path
❖ Access paths are ways in which data is retrieved from the database. ❖ Access Path:
➢ Full Table Scans ➢ Rowid Scans ➢ Index Scans
❖ Index Unique Scans ❖ Index Range Scans ❖ Index Range Scans Descending ❖ Index Skip Scans ❖ Full Scans ❖ Fast Full Index Scans(CBO) ❖ Index Joins ❖ Bitmap Joins