- 浏览: 4415050 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (634)
- Oracle日常管理 (142)
- Oracle体系架构 (45)
- Oracle Tuning (52)
- Oracle故障诊断 (35)
- RAC/DG/OGG (64)
- Oracle11g New Features (48)
- DataWarehouse (15)
- SQL, PL/SQL (14)
- DB2日常管理 (9)
- Weblogic (11)
- Shell (19)
- AIX (12)
- Linux/Unix高可用性 (11)
- Linux/Unix日常管理 (66)
- Linux桌面应用 (37)
- Windows (2)
- 生活和工作 (13)
- 私人记事 (0)
- Python (9)
- CBO (15)
- Cognos (2)
- ORACLE 12c New Feature (2)
- PL/SQL (2)
- SQL (1)
- C++ (2)
- Hadoop大数据 (5)
- 机器学习 (3)
- 非技术 (1)
最新评论
-
di1984HIT:
xuexilee!!!
Oracle 11g R2 RAC高可用连接特性 – SCAN详解 -
aneyes123:
谢谢非常有用那
PL/SQL的存储过程和函数(原创) -
jcjcjc:
写的很详细
Oracle中Hint深入理解(原创) -
di1984HIT:
学习了,学习了
Linux NTP配置详解 (Network Time Protocol) -
avalonzst:
大写的赞..
AIX内存概述(原创)
同事打电话跟我说,数据库CPU过高、swap交换频繁,要我马上看看,这里记录下整个过程以供大家参考,也让大家提点意见
$topas
Topas Monitor for host: fjlt_wb_db01 EVENTS/QUEUES FILE/TTY
Mon Feb 13 10:10:09 2012 Interval: 2 Cswitch 13932 Readch 2718.1K
Syscall 344.8K Writech 162.7K
CPU User% Kern% Wait% Idle% Reads 1231 Rawin 0
ALL 89.1 10.9 0.0 0.0 Writes 861 Ttyout 725
Forks 6 Igets 0
Network KBPS I-Pack O-Pack KB-In KB-Out Execs 6 Namei 414
Total 97.6K 24.9K 51.5K 30.8K 66.9K Runqueue 43.0 Dirblk 0
Waitqueue 0.0
Disk Busy% KBPS TPS KB-Read KB-Writ MEMORY
Total 13.0 22.6K 2715.0 21.7K 932.5 PAGING Real,MB 31744
Faults 4337 % Comp 85
FileSystem KBPS TPS KB-Read KB-Writ Steals 0 % Noncomp 4
Total 638.7 398.5 637.4 1.3 PgspIn 0 % Client 4
PgspOut 0
Name PID CPU% PgSp Owner PageIn 0 PAGING SPACE
oracle 66847032 17.3 10.4 oracle PageOut 1 Size,MB 32768
oracle 33751546 4.3 10.7 oracle Sios 1 % Used 39
oracle 37093606 2.6 10.6 oracle % Free 61
oracle 51577090 2.4 10.4 oracle NFS (calls/sec)
oracle 60752382 2.4 10.2 oracle SerV2 0 WPAR Activ 0
oracle 2425184 2.3 10.5 oracle CliV2 0 WPAR Total 0
oracle 38535516 2.1 10.6 oracle SerV3 0 Press: "h"-help
oracle 65404954 2.0 10.5 oracle CliV3 0 "q"-quit
oracle 40239486 2.0 10.3 oracle
oracle 65208590 2.0 11.6 oracle
oracle 60555628 1.9 10.5 oracle
oracle 23658656 1.9 10.3 oracle
oracle 47841658 1.9 10.5 oracle
oracle 52363552 1.8 10.3 oracle
oracle 2359684 1.8 10.5 oracle
oracle 31916154 1.7 10.6 oracle
oracle 46530580 1.7 10.9 oracle
oracle 721382 1.6 11.7 oracle
oracle 2884060 1.6 10.5 oracle
oracle 5636414 1.6 10.5 oracle
发现 CPU 使用率为 100% , swap 分区交换频繁,其中进程号为 66847032 的 oracle 用户进程的 CPU 使用率为 17.3% 。
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
2 0 7506815 658832 0 0 0 0 0 0 6913 154614 20053 31 12 58 0
5 0 7506576 659071 0 0 0 0 0 0 5763 193844 14268 53 11 36 0
5 0 7506767 658880 0 0 0 0 0 0 8699 157452 18035 43 11 45 0
2 0 7506557 659089 0 0 0 0 0 0 6392 135539 20697 27 9 64 0
2 0 7506286 659359 0 0 0 0 0 0 6518 126193 19194 21 10 69 0
pi
、
po
均为
0
,说明
swap
分区并未频繁交换。问题定位为
CPU
使用率过高
根据当前时间做
ash
报告。发现
CPU
的等待事件占了活动时间的
67.62%
另外看到
sqlid
为
dczhdxppd0fmm
的
sql
占用了
41.4
的活动时间
等了半天没有反应,估计是 sga 过大,导致查询较慢,先放着让他跑跑。
使用 PL\SQL 执行如下sql,大致看下目前系统中的等待事件
select * from v$session_wait where wait_class#<>6;
常规的gc cr multi block request等待事件,没有看到比较异常的等待。老办法,制作ash看看
根据当前时间做ash报告。
SQL> @$ORACLE_HOME/rdbms/admin/ashrpt.sql
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance
----------- ------------ -------- ------------
4193910433 WBDB 1 wbdb1
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type:
Type Specified: html
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ -------- ------------ ------------ ------------
4193910433 2 WBDB wbdb2 fjlt_wb_db02
* 4193910433 1 WBDB wbdb1 fjlt_wb_db01
Defaults to current database
Using database id: 4193910433
Defaults to current instance
Using instance number: 1
ASH Samples in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Oldest ASH sample available: 05-Feb-12 23:00:09 [ 10995 mins in the past]
Latest ASH sample available: 13-Feb-12 14:14:45 [ 0 mins in the past]
Specify the timeframe to generate the ASH report
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter begin time for report:
-- Valid input formats:
-- To specify absolute begin time:
-- [MM/DD[/YY]] HH24:MI[:SS]
-- Examples: 02/23/03 14:30:15
-- 02/23 14:30:15
-- 14:30:15
-- 14:30
-- To specify relative begin time: (start with '-' sign)
-- -[HH24:]MI
-- Examples: -1:15 (SYSDATE - 1 Hr 15 Mins)
-- -25 (SYSDATE - 25 Mins)
Defaults to -15 mins
Enter value for begin_time: 02/13/12 10:00:00
Report begin time specified: 02/13/12 10:00:00
Enter duration in minutes starting from begin time:
Defaults to SYSDATE - begin_time
Press Enter to analyze till current time
Enter value for duration:02/13/12 10:30:00
以下输出省略
Enter value for report_name: wbdb01_ash_20120213_1000_1030
以下输出省略
打开生成好的ash报告
从上图可以看到CPU资源的竞争才是真正的问题。
根据上图 sqlid 为 dczhdxppd0fmm 的 sql 占用了41.4 的活动时间
完整 sql 如下
select a.shbxhm, nvl(sum(a.ylbx_jfjs), 0) from t_wb_shbxmxsbb a, t_wb_sbbqk b where a.pz_xh = b.pz_xh and a.swglm = :1 and to_char(a.sfssq_qsrq, 'yyyy-mm-dd') = :2 and to_char(a.sfssq_zzrq, 'yyyy-mm-dd') = :3 and b.zt in ('2', '4', '5', '6') group by a.shbxhm
查看该 sql 的执行计划
这里需要加上相应的用户
SQL> explain plan for select a.shbxhm, nvl(sum(a.ylbx_jfjs), 0) from ETAX. t_wb_shbxmxsbb a, ETAX .t_wb_sbbqk b where a.pz_xh = b.pz_xh and a.swglm = :1 and to_char(a.sfssq_qsrq, 'yyyy-mm-dd') = :2 and to_char(a.sfssq_zzrq, 'yyyy-mm-dd') = :3 and b.zt in ('2', '4', '5', '6') group by a.shbxhm;
Explained.
SQL> select * from table(DBMS_XPLAN.display)
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2119216066
------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 86 | 35939 (1)| 00:07:12 |
| 1 | HASH GROUP BY | | 1 | 86 | 35939 (1)| 00:07:12 |
| 2 | NESTED LOOPS | | 1 | 86 | 35938 (1)| 00:07:12 |
|* 3 | TABLE ACCESS FULL | T_WB_SHBXMXSBB | 1 | 67 | 35936 (1)| 00:07:12 |
|* 4 | TABLE ACCESS BY INDEX ROWID| T_WB_SBBQK | 1 | 19 | 2 (0)| 00:00:01 |
|* 5 | INDEX UNIQUE SCAN | PK_T_WB_SBBQK | 1 | | 1 (0)| 00:00:01 |
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("A"."SWGLM"=TO_NUMBER(:1) AND
TO_CHAR(INTERNAL_FUNCTION("A"."SFSSQ_QSRQ"),'yyyy-mm-dd')=:2 AND
TO_CHAR(INTERNAL_FUNCTION("A"."SFSSQ_ZZRQ"),'yyyy-mm-dd')=:3)
4 - filter("B"."ZT"='2' OR "B"."ZT"='4' OR "B"."ZT"='5' OR "B"."ZT"='6')
5 - access("A"."PZ_XH"="B"."PZ_XH")
21 rows selected.
可以看到 T_WB_SHBXMXSBB 并没有走索引,
查看 T_WB_SHBXMXSBB 的数据量
SQL>select count(*) from ETAX.t_wb_shbxmxsbb;
COUNT(*)
----------
9495977
执行
select
*
from
dba_ind_columns
where
upper
(table_name)=
'T_WB_SHBXMXSBB'
;
查看表的索引情况如下
发现并未在 sfssq_qsrq 和 sfssq_zzrq 这两列上创建索引 .
解决方案,在 sfssq_qsrq 和 sfssq_zzrq 这两列上创建普通索引或者函数索引,如果网报系统中 to_char(a.sfssq_qsrq, 'yyyy-mm-dd') = :2 的用法较多,那么则应创建函数索引,反之创建普通索引即可
创建普通索引:
SQL> set timing on
SQL> create index ETAX.fbi_2 on ETAX.T_WB_SHBXMXSBB(sfssq_zzrq);
Index created.
Elapsed: 00:00:31.54
SQL> explain plan for select a.shbxhm, nvl(sum(a.ylbx_jfjs), 0) from etax.t_wb_shbxmxsbb a, etax.t_wb_sbbqk b where a.pz_xh = b.pz_xh and a.swglm = :1 and a.sfssq_qsrq >= to_date('2','yyyy-mm-dd') and a.sfssq_qsrq < to_date('3','yyyy-mm-dd') and
2 a.sfssq_zzrq >= to_date('4','yyyy-mm-dd') and a.sfssq_zzrq < to_date('5','yyyy-mm-dd') and b.zt in ('2', '6', '7', '8') group by a.shbxhm
3 ;
Explained.
Elapsed: 00:00:00.03
SQL> set linesize 180
SQL>
select * from table(dbms_xplan.display)
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3466029591
------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 86 | 308 (2)| 00:00:04 |
| 1 | HASH GROUP BY | | 1 | 86 | 308 (2)| 00:00:04 |
|* 2 | FILTER | | | | | |
| 3 | NESTED LOOPS | | 1 | 86 | 307 (2)| 00:00:04 |
|* 4 | TABLE ACCESS BY INDEX ROWID | T_WB_SHBXMXSBB | 1 | 67 | 305 (2)| 00:00:04 |
| 5 | BITMAP CONVERSION TO ROWIDS | | | | | |
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 6 | BITMAP AND | | | | | |
| 7 | BITMAP CONVERSION FROM ROWIDS| | | | | |
| 8 | SORT ORDER BY | | | | | |
|* 9 | INDEX RANGE SCAN | FBI | 43201 | | 117 (0)| 00:00:02 |
| 10 | BITMAP CONVERSION FROM ROWIDS| | | | | |
| 11 | SORT ORDER BY | | | | | |
|* 12 | INDEX RANGE SCAN | FBI_2 | 43201 | | 117 (0)| 00:00:02 |
|* 13 | TABLE ACCESS BY INDEX ROWID | T_WB_SBBQK | 1 | 19 | 2 (0)| 00:00:01 |
|* 14 | INDEX UNIQUE SCAN | PK_T_WB_SBBQK | 1 | | 1 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(TO_DATE('4','yyyy-mm-dd')<TO_DATE('5','yyyy-mm-dd') AND
TO_DATE('2','yyyy-mm-dd')<TO_DATE('3','yyyy-mm-dd'))
4 - filter("A"."SWGLM"=TO_NUMBER(:1))
9 - access("A"."SFSSQ_QSRQ">=TO_DATE('2','yyyy-mm-dd') AND
"A"."SFSSQ_QSRQ"<TO_DATE('3','yyyy-mm-dd'))
12 - access("A"."SFSSQ_ZZRQ">=TO_DATE('4','yyyy-mm-dd') AND
"A"."SFSSQ_ZZRQ"<TO_DATE('5','yyyy-mm-dd'))
13 - filter("B"."ZT"='2' OR "B"."ZT"='6' OR "B"."ZT"='7' OR "B"."ZT"='8')
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
14 - access("A"."PZ_XH"="B"."PZ_XH")
34 rows selected.
Elapsed: 00:00:00.01
走索引了,时间有所缩短
SQL> drop index etax.fbi ;urge;
Index dropped.
Elapsed: 00:00:00.11
SQL> drop index ETAX.fbi_2;
Index dropped.
Elapsed: 00:00:00.04
并更改该 sql 写法如下
a.sfssq_qsrq >= to_date('2012-01-01','yyyy-mm-dd') and a.sfssq_qsrq < to_date('2012-01-02','yyyy-mm-dd')
创建函数索引:
SQL> create index etax.fbi on ETAX.T_WB_SHBXMXSBB ( to_char(sfssq_qsrq, 'yyyy-mm-dd'));
Index created.
Elapsed: 00:00:34.65
SQL> create index ETAX.fbi_2 on ETAX.T_WB_SHBXMXSBB ( to_char(sfssq_zzrq, 'yyyy-mm-dd'));
Index created.
Elapsed: 00:00:36.66
SQL> explain plan for select a.shbxhm, nvl(sum(a.ylbx_jfjs), 0) from ETAX.t_wb_shbxmxsbb a, ETAX.t_wb_sbbqk b where a.pz_xh = b.pz_xh and a.swglm = :1 and to_char(a.sfssq_qsrq, 'yyyy-mm-dd') = :2 and to_char(a.sfssq_zzrq, 'yyyy-mm-dd') = :3 and b.zt in ('2', '4', '5', '6') group by a.shbxhm;
Explained.
Elapsed: 00:00:00.01
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 4204756945
-----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 86 | 1134 (1)| 00:00:14 |
| 1 | HASH GROUP BY | | 1 | 86 | 1134 (1)| 00:00:14 |
| 2 | NESTED LOOPS | | 1 | 86 | 1133 (1)| 00:00:14 |
|* 3 | TABLE ACCESS BY INDEX ROWID | T_WB_SHBXMXSBB | 1 | 67 | 1131 (1)| 00:00:14 |
| 4 | BITMAP CONVERSION TO ROWIDS | | | | | |
| 5 | BITMAP AND | | | | | |
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 6 | BITMAP CONVERSION FROM ROWIDS| | | | | |
|* 7 | INDEX RANGE SCAN | FBI_2 | 38405 | | 456 (1)| 00:00:06 |
| 8 | BITMAP CONVERSION FROM ROWIDS| | | | | |
|* 9 | INDEX RANGE SCAN | FBI | 38405 | | 463 (1)| 00:00:06 |
|* 10 | TABLE ACCESS BY INDEX ROWID | T_WB_SBBQK | 1 | 19 | 2 (0)| 00:00:01 |
|* 11 | INDEX UNIQUE SCAN | PK_T_WB_SBBQK | 1 | | 1 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3 - filter("A"."SWGLM"=TO_NUMBER(:1))
7 - access(TO_CHAR(INTERNAL_FUNCTION("SFSSQ_ZZRQ"),'yyyy-mm-dd')=:3)
9 - access(TO_CHAR(INTERNAL_FUNCTION("SFSSQ_QSRQ"),'yyyy-mm-dd')=:2)
10 - filter("B"."ZT"='2' OR "B"."ZT"='4' OR "B"."ZT"='5' OR "B"."ZT"='6')
11 - access("A"."PZ_XH"="B"."PZ_XH")
27 rows selected.
Elapsed: 00:00:00.01
走索引了,时间有所缩短
SQL> drop index etax.fbi ;urge;
Index dropped.
Elapsed: 00:00:00.11
SQL> drop index ETAX.fbi_2;
Index dropped.
Elapsed: 00:00:00.04
可以看到,创建函数索引和创建普通索引在本质操作本质上对系统并没有太大影响。创建什么样的索引,关键取决于应用系统。
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com
发表评论
-
Oracle Redo 并行机制
2017-04-07 11:31 990Redo log 是用于恢复和一个高级特性的重要数据,一个r ... -
Append Values and how not to break the database
2015-09-29 20:12 752With the advent of the /*+ APP ... -
基于案例学习sql优化第6周脚本
2015-04-13 04:29 0===============BEGIN=========== ... -
Oracle表高水平位的优化与监控
2015-02-13 09:21 2227高水平位虚高的案例 --构造表drop table t p ... -
Oracle行迁移和行链接详解(原创)
2015-02-13 09:00 12239行迁移成 因:当发出u ... -
Parse CPU to Parse Elapsd%的理解
2015-01-19 13:59 1441Parse CPU to Parse Elapsd%是指sq ... -
ALTER INDEX COALESCE: 10g Improvements
2014-08-02 21:34 934I thought it might be worth me ... -
Differences and Similarities Between Index Coalesce and Shrink Space
2014-08-02 21:21 963As already discussed, ALTER IN ... -
Alter index coalesce VS shrink space
2014-08-02 17:56 102910g中引入了对索引的shrink功能,索引shrink操 ... -
SQL Plan Management Creating SQL plan baselines(原创)
2014-08-01 23:56 1366SQL Plan Management SQL Plan ... -
WITH Clause : Subquery Factoring
2014-07-23 08:43 1192Subquery Factoring The WIT ... -
Query Transformations : Subquery unnesting(原创)
2014-07-23 08:42 2914Subquery Unnesting Subqueries ... -
Automating Parallelism
2014-07-17 17:49 842Parallel query, the essence of ... -
Parallel Execution: Large/Shared Pool and ORA-4031 (文档 ID 238680.1)
2014-07-17 17:47 2102Applies toOracle Database - En ... -
Optimizer Transformations: Star Transformation
2014-06-30 07:32 793Star transformation was intro ... -
Star Transformation And Cardinality Estimates
2014-06-30 07:33 895If you want to make use of Orac ... -
Optimizer statistics-driven direct path read decision for full table scans
2014-06-06 16:09 1085Hello all fellow Oracle geeks ... -
Cut out from Ask Tom-- Thanks for the question regarding "10053", version 9.2.6
2014-03-09 23:38 1442You AskedDear tom,A. your new ... -
ORACLE SQL TUNING各种技巧及复杂实例
2014-02-25 23:17 6523一.优化器模式ORACLE的优化器共有3种:a. RULE ... -
Oracle Predicate Pushing(原创)
2014-02-22 21:17 4631IntroductionThe join predicate ...
相关推荐
在Oracle数据库管理中,监控和优化SQL查询是确保系统性能稳定的关键环节之一。对于那些消耗大量资源的SQL语句进行记录和分析可以帮助DBA快速定位问题并采取相应的优化措施。本文将详细介绍如何通过特定的SQL查询来找...
7. 资源管理:Oracle的资源管理器可以控制资源的分配,例如CPU资源和I/O资源,这有助于优化整个系统的性能,避免某个进程消耗过多资源而影响其他进程。 8. SQL Profile和SQL Plan Management:这些是Oracle 11g中...
Oracle 性能调优 -- 解决 CPU 高度消耗 (100%) Oracle 性能调优是数据库管理...通过优化 SQL 语句、调整数据库参数、优化系统配置和使用性能分析工具等方法,可以提高数据库的性能,解决 CPU 高度消耗 (100%) 的问题。
SQL优化是数据库管理中的关键环节,它涉及到提升查询性能、减少资源消耗以及改善系统整体效率。SQL优化软件和工具能够帮助数据库管理员(DBA)和开发人员找出性能瓶颈,优化查询逻辑,从而提高数据库系统的响应速度...
在优化Oracle数据库中的SQL语句时,我们面临多个方面的挑战,这包括了对数据库架构的优化,数据表设计的优化,以及SQL语句本身的优化。以下是从给定文件中提炼出的关于Oracle数据库优化和SQL优化的知识点: 数据库...
Oracle SQL优化是数据库管理中的关键任务,用于提升查询性能,减少资源消耗,进而改善整体系统效率。`SQLHC`(SQL Health Check)是Oracle提供的一种实用工具,它可以帮助DBA(数据库管理员)诊断和优化SQL语句。在...
综上所述,Oracle SQL优化是一项涉及广泛的技术任务,需要对SQL语句、Oracle数据库结构和优化器有深入理解,通过一系列调整策略和方法,以提升系统性能和响应时间。在整个过程中,开发人员不仅要关注功能实现,还要...
SQL查询优化技术是提升Oracle数据库查询性能的关键手段之一。本文旨在探讨Oracle中的SQL查询优化技术,帮助数据库管理员(DBA)和开发人员更好地理解和应用这些技术。 #### 二、SQL查询优化基础 ##### 1. 什么是...
ORACLE-SQL优化是一个涉及广泛技术细节和策略的领域。在优化SQL语句执行过程时,了解ORACLE优化器的工作机制,表之间的关联方式,以及如何获取和分析SQL执行计划是至关重要的。以下,我们将详细介绍ORACLE-SQL优化的...
总结,SQL优化是一项需要深入理解数据库原理和技术的细致工作,Oracle SQL优化更是如此,需要结合数据库特性和业务需求,综合运用各种优化手段,才能实现最佳性能。"SQL Optimization.doc"文档很可能会提供更具体的...
在Oracle数据库管理中,SQL语句的执行效率是至关重要的,因为高效的SQL查询可以显著提升系统性能,降低服务器资源消耗。本资料“Oracle的SQL语句执行效率问题查找与解决方法”聚焦于如何识别和优化可能导致性能瓶颈...
本资源"Oracle_SQL优化.PDF"虽然内容可能较老,但它提供了一些基础的SQL优化技巧,对于初学者来说是一份不错的学习资料。 1. **执行计划分析**:理解SQL执行计划是优化的基础。通过EXPLAIN PLAN或使用DBMS_XPLAN,...
Oracle SQL性能优化是数据库管理员和开发人员关注的重要领域,它涉及到如何提高数据库查询速度,减少资源消耗,提升系统整体效率。以下是对Oracle SQL性能优化的一些关键知识点的详细说明: 1. **索引优化**:索引...
- COST优化器基于成本计算,它会根据各种可能的执行路径计算成本(包括I/O、CPU等资源消耗),选择成本最低的路径。COST优化器需要准确的对象统计信息来做出最佳决策,因此需要定期运行analyze命令来更新统计信息。 ...
崔华的《基于Oracle的SQL优化》一书深入探讨了如何通过优化SQL查询来最大化Oracle数据库的效率。这本书的配套脚本提供了一手的实践案例,帮助读者理解和应用理论知识。 首先,我们来讨论SQL优化的重要性。在Oracle...
Oracle SQL性能优化是数据库管理中的核心任务,它涉及到如何高效地执行SQL查询,减少资源消耗,提高系统响应速度。在Oracle数据库环境中,SQL性能优化涵盖了多个方面,包括但不限于查询优化、索引策略、表设计、存储...
Oracle通过一次性读取多个数据块来优化这一过程,减少磁盘I/O次数。然而,对于大数据量的表,全表扫描可能导致高延迟和资源消耗。 2. **基于ROWID的访问**:ROWID是一种特殊的键,它包含了行在物理存储中的地址。...
Oracle的SQL监视工具SQLTracker是一款强大的性能分析工具,专为数据库管理员和开发人员设计,用于诊断和优化SQL查询性能。这款工具在Oracle数据库环境中扮演着重要角色,它可以帮助用户实时监控SQL语句的执行情况,...
Oracle SQL优化是数据库管理中的一项关键任务,目的是提高SQL查询的执行效率,减少资源消耗,提升系统的整体性能。本文将详细讲解三个主要的优化策略:选择合适的优化器、选择有效的表访问方式,以及利用共享SQL语句...
《SQL优化——Oracle数据库》 SQL优化是提升数据库性能的关键技术,主要目标是减少数据操作所需的资源(如I/O和CPU)以及时间,以达到最大数据吞吐量和快速响应。Oracle数据库作为广泛使用的数据库系统,其SQL优化...