惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
NISL@THU
NISL@THU
E
Exploit-DB.com RSS Feed
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
K
Kaspersky official blog
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
S
Schneier on Security
G
GRAHAM CLULEY
The Hacker News
The Hacker News
T
Threat Research - Cisco Blogs
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
爱范儿
爱范儿
P
Privacy International News Feed
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
S
Securelist
G
Google Developers Blog
The Last Watchdog
The Last Watchdog
Google Online Security Blog
Google Online Security Blog
美团技术团队
F
Fortinet All Blogs
小众软件
小众软件
Recorded Future
Recorded Future
V
Visual Studio Blog
B
Blog RSS Feed
H
Help Net Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Martin Fowler
Martin Fowler
Latest news
Latest news
Spread Privacy
Spread Privacy
H
Heimdal Security Blog

博客园 - liuqun

oracle优化7(如何干预执行计划 - hints) oracle优化6(使用sql_trace/10046事件进行数据库诊断) oracle优化5(用索引提高效率) oracle优化3(访问Table的方式) oracle优化2(选用适合的ORACLE优化器) oracle优化1(数据库、数据表、数据表I/O优化原则) Oracle常用命令14(.net / java代码调用(sql代码、程序包过程)) Oracle常用命令13(数据库的启动、关闭) Oracle常用命令12(导入:imp、导出:exp) Oracle常用命令11(触发器) Oracle常用命令10(程序包) Oracle常用命令9(函数) Oracle常用命令8(过程) Oracle常用命令7(游标) Oracle常用命令6(PL/SQL) Oracle常用命令5(同义词、视图、索引) Oracle常用命令4(表分区) Oracle常用命令3(DDL、DML、TCL、DCL、序列) Oracle常用命令2(用户、角色管理)
oracle优化4(sql语句性能诊断,sql执行计划)
liuqun · 2011-04-03 · via 博客园 - liuqun

什么是优化

优化是选择最有效的执行计划来执行SQL语句的过程,这是在处理任何数据的语句(SELECT,INSERT,UPDATEDELETE)中的一个重要步骤。对Oracle来说,执行这样的语句有许多不同的方法,譬如说,将随着以什么顺序访问哪些表或索引的不同而不同。所使用的执行计划可以决定语句能执行得有多快。Oracle中称之为优化器(Optimizer)的组件用来选择这种它认为最有效的执行计划。

什么是执行计划

在运行一条DML语句时,oracle可能需要执行多个步骤。例如,从数据库物理文件中获取数据行,或将数据整理为提交语句的用户所需的形式。Oracle运行一条语句的所有步骤被告称为语句的执行计划(execution plan)。执行计划中包括语句所需数据所在数据表的访问方式,以及数据表的访问顺序(即关联顺序)。

如果查看执行计划

EXPLAIN PLAN

SQL*PLUS autotrace feature

EXPLAIN PLAN

1解释执行计划

执行文件:rdbms/admin/utlxplan.sql

Explain plan for select语句

2查看执行计划的信息

1)、查询plan_table

select * from plan_table;

2)、使用脚本 utlxpls.sql

3)、使用包:dbms_xplan

select * from table(dbms_xplan.display);

说明:产生的计划需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果是用缩进的格式排列的, 最内部的操作将被最先解读, 如果两个操作处于同一层中,带有最小操作号的将被首先执行

如:

SELECT * FROM dept, emp WHERE emp.deptno = dept.deptno

14 rows selected.

Execution Plan

----------------------------------------------------------

   0      SELECT STATEMENT Optimizer=CHOOSE

   1    0   NESTED LOOPS

   2    1     TABLE ACCESS (FULL) OF 'EMP'

   3    1     TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'

   4    3       INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)

通过以上分析,可以得出实际的执行步骤是:

1.  TABLE ACCESS (FULL) OF 'EMP'

2.  INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)

3.  TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'

4.  NESTED LOOPS (JOINING 1 AND 3)

SQL*PLUS autotrace feature

使用autotrace

语法:set autotrace { off | on | traceonly | explain | statistics  }

SET AUTOTRACE OFF 此为默认值,即关闭Autotrace
SET AUTOTRACE ON EXPLAIN
只显示执行计划
SET AUTOTRACE ON STATISTICS  
只显示执行的统计信息
SET AUTOTRACE ON
包含2,3两项内容

SET AUTOTRACE TRACEONLY   ON相似,但不显示语句的执行结果。

Autotrace执行计划的各列的涵义
ID_PLUS_EXP
:每一步骤的行号
PARENT_ID_PLUS_EXP
:每一步的Parent的级别号
PLAN_PLUS_EXP
:实际的每步
OBJECT_NODE_PLUS_EXP
   Dblink或并行查询时才会用到

AUTOTRACE Statistics

常用列解释
db block gets
:从buffer cache中读取的block的数量
consistent gets
:从buffer cache中读取的undo数据的block的数量
physical reads
:从磁盘读取的block的数量
redo size DML
:生成的redo的大小
sorts (memory)
:在内存执行的排序量
sorts (disk)
在磁盘上执行的排序量