- 浏览: 56836 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
yvonxiao:
这个的确好用,我记得我以前是自己写了个存储过程来解决这种递归问 ...
Oracle Start With Connect By
Oracle中SQL语句执行效率问题的查找与解决:
一、识别占用资源较多的语句的方法(4种方法)
1.测试组和最终用户反馈的与反应缓慢有关的问题。
2.利用V_$SQLAREA视图提供了执行的细节。(执行、读取磁盘和读取缓冲区的次数)
• 数据列
EXECUTIONS:执行次数
DISK_READS:读盘次数
COMMAND_TYPE:命令类型(3:select,2:insert;6:update;7delete;47:pl/sql程序单元)
OPTIMIZER_MODE:优化方式
SQL_TEXT:Sql语句
SHARABLE_MEM:占用shared pool的内存多少
BUFFER_GETS:读取缓冲区的次数
• 用途
1、帮忙找出性能较差的SQL语句
2、帮忙找出最高频率的SQL
3、帮忙分析是否需要索引或改善联接
监控当前Oracle:family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的session,如出现时钟的标志,表示此进程中的sql运行时间较长。
4. Trace工具:
a)查看数据库服务的初始参数:timed_statistics、user_dump_dest和max_dump_file_size
b)Step 1: alter session set sql_trace=true
c)Step 2: run sql;
d)Step 3: alter session set sql_trace=false
e)Step 4:使用 “TKPROF”转换跟踪文件
f)Parse,解析数量大通常表明需要增加数据库服务器的共享池大小,
query或current提取数量大表明如果没有索引,语句可能会运行得更有效,
disk提取数量表明索引有可能改进性能,
library cache中多于一次的错过表明需要一个更大的共享池大小
二、如何管理语句处理和选项
•基于成本(Cost Based) 和基于规则(Rule Based) 两种优化器, 简称为CBO 和RBO
•Optimizer Mode参数值:
Choose:如果存在访问过的任何表的统计数据 ,则使用基于成本的Optimizer,目标是获得最优的通过量。如果一些表没有统计数据,则使用估计值。如果没有可用的统计数据,则将使用基于规则的Optimizer。
All_rows:总是使用基于成本的Optimizer,目标是获得最优的通过量。
First_rows_n:总是使用基于成本的Optimizer,目标是对返回前N行(“n”可以是1,10,100或者1000)获得最优的响应时间。
First_rows:用于向后兼容。使用成本与试探性方法的结合,以便快速传递前几行。
RULE:总是使用基于规则的Optimizer
三、使用数据库特性来获得有助于查看性能的处理统计信息(解释计划和AUTOTRACE)
No1: Explain Plan
A)使用Explain工具需要创建Explain_plan表,这必须先进入相关应用表、视图和索引的所有者的帐户内. (@D:\oracle\ora92\rdbms\admin\utlxplan)
B) 表结构:
STATEMENT_ID:为一条指定的SQL语句确定特定的执行计划名称。如果在EXPLAN PLAN语句中没有使用SET STATEMENT_ID,那么此值会被设为NULL。
OPERATION:在计划的某一步骤执行的操作名称,例如:Filters,Index,Table,Marge Joins and Table等。
OPTION:对OPERATION操作的补充,例如:对一个表的操作,OPERATION可能是TABLE ACCESS,但OPTION可能为by ROWID或FULL。
Object_Owner:拥有此database Object的Schema名或Oracle帐户名。
Object_name:Database Object名
Object_type:类型,例如:表、视图、索引等等
ID:指明某一步骤在执行计划中的位置。
PARENT_ID:指明从某一操作中取得信息的前一个操作。通过对与ID和PARENT_ID使用Connect By操作,我们可以查询整个执行计划树。
C)EXPLAIN搜索路径解释
•全表扫描(Full Table Scans)(无可用索引,大量数据,小表 ,全表扫描hints,HWM(High Water Mark), Rowid扫描)
•索引扫描
索引唯一扫描(Index Unique Scans)
索引范围扫描(Index Range Scans)
索引降序范围扫描(Index Range Scans Descending)
索引跳跃扫描(Index Skip Scans)
全索引扫描(Full Scans)
快速全索引扫描(Fast Full Index Scans)
索引连接(Index Joins)
位图连接(Bitmap Joins)
•如何选择访问路径: CBO首先检查WHERE子句中的条件以及FROM子句,确定有哪些访问路径是可用的。然后CBO使用这个访问路径产生一组可能的执行计划,再通过索引、表的统计信息评估每个计划的成本,最后优化器选择成本最低的一个。
•表的连接方式:
Nested Loops会循环外表(驱动表),逐个比对和内表的连接是否符合条件。在驱动表比较小,内表比较大,而且内外表的连接列有索引的时候比较好。当SORT_AREA空间不足的时候,Oracle也会选择使用NL。基于Cost的Oracle优化器(CBO)会自动选择较小的表做外表。(优点:嵌套循环连接比其他连接方法有优势,它可以快速地从结果集中提取第一批记录,而不用等待整个结果集完全确定下来。缺点:如果内部行源表(读取的第二张表(内表)已连接的列上不包含索引,或者索引不是高度可选时, 嵌套循环连接效率是很低的。如果驱动行源表(从驱动表中提取的记录)非常庞大时,其他的连接方法可能更加有效。)
SORT- merge JOIN,将两表的连接列各自排序然后合并,只能用于连接列相等的情况,适合两表大小相若的情况(在缺乏数据的选择性或者可用的索引时,或者两个源表都过于庞大(超过记录数的5%)时,排序合并连接将比嵌套循环连更加高效。但是,排列合并连接只能用于等价连接(WHERE D.deptno=E.dejptno,而不是WHERE D.deptno>=E.deptno)。排列合并连接需要临时的内存块,以用于排序(如果SORT_AREA_SIZE设置得太小的话)。这将导致在临时表空间占用更多的内存和磁盘I/O。)
HASH JOIN在其中一表的连接列上作散列,因此只有另外一个表做排序合并,理论上比SORT JOIN会快些,需?/td>
"FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或FULL。
Object_Owner:拥有此database Object的Schema名或Oracle帐户名。
Object_name:Database Object名
Object_type:类型,例如:表、视图、索引等等
ID:指明某一步骤在执行计划中的位置。
PARENT_ID:指明从某一操作中取得信息的前一个操作。通过对与ID和PARENT_ID使用Connect By操作,我们可以查询整个执行计划树。
C)EXPLAIN搜索路径解释
•全表扫描(Full Table Scans)(无可用索引,大量数据,小表 ,全表扫描hints,HWM(High Water Mark), Rowid扫描)
•索引扫描
索引唯一扫描(Index Unique Scans)
索引范围扫描(Index Range Scans)
索引降序范围扫描(Index Range Scans Descending)
索引跳跃扫描(Index Skip Scans)
全索引扫描(Full Scans)
快速全索引扫描(Fast Full Index Scans)
索引连接(Index Joins)
位图连接(Bitmap Joins)
• 如何选择访问路径: CBO首先检查WHERE子句中的条件以及FROM子句,确定有哪些访问路径是可用的。然后CBO使用这个访问路径产生一组可能的执行计划,再通过索引、表的统计信息评估每个计划的成本,最后优化器选择成本最低的一个。
• 表的连接方式:
Nested Loops会循环外表(驱动表),逐个比对和内表的连接是否符合条件。在驱动表比较小,内表比较大,而且内外表的连接列有索引的时候比较好。当SORT_AREA空间不足的时候,Oracle也会选择使用NL。基于Cost的Oracle优化器(CBO)会自动选择较小的表做外表。(优点:嵌套循环连接比其他连接方法有优势,它可以快速地从结果集中提取第一批记录,而不用等待整个结果集完全确定下来。缺点:如果内部行源表(读取的第二张表(内表)已连接的列上不包含索引,或者索引不是高度可选时, 嵌套循环连接效率是很低的。如果驱动行源表(从驱动表中提取的记录)非常庞大时,其他的连接方法可能更加有效。)
SORT- merge JOIN,将两表的连接列各自排序然后合并,只能用于连接列相等的情况,适合两表大小相若的情况(在缺乏数据的选择性或者可用的索引时,或者两个源表都过于庞大(超过记录数的5%)时,排序合并连接将比嵌套循环连更加高效。但是,排列合并连接只能用于等价连接(WHERE D.deptno=E.dejptno,而不是WHERE D.deptno>=E.deptno)。排列合并连接需要临时的内存块,以用于排序(如果SORT_AREA_SIZE设置得太小的话)。这将导致在临时表空间占用更多的内存和磁盘I/O。)
HASH JOIN在其中一表的连接列上作散列,因此只有另外一个表做排序合并,理论上比SORT JOIN会快些,需要有足够的内存,而且打开了SORT_JOIN_ENABLE参数。(当缺少有用的索引时,哈希连接比嵌套循环连接更加有效。哈希连接可能比排序合并连接更快,因为在这种情况下只有一张源表需要排序。哈希连接也可能比嵌套循环连接更快,因为处理内存中的哈希表比检索B_树索引更加迅速。和排序合并连接、群集连接一样,哈希连接只能用于等价连接。和排序合并连接一样,哈希连接使用内存资源,并且当用于排序内存不足时,会增加临时表空间的I/O(这将使这种连接方法速度变得极慢)。最后,只有基于代价的优化器才可以使用哈希连接。)
BNo2: AUTOTRACE
•set autotrace 使用步骤:
1、以system登录
2、创建plustrace角色;\sqlplus\admin\plustrce.sql
3、向常规用户授予权限:grant plustrace to
4、如果没有plan_table也要创建:\rdbms\admin\utlxplan.sql
• set autotrace 选项
on 显示查询结果,执行计划,统计数据
on statistics 显示查询结果,统计数据,不显示执行计划
on explain 显示查询结果,执行计划,不显示统计数据
traceonly 显示执行计划和统计结果,但不包括查询结果
traceonly statistics 仅显示统计数据
recursive calls 在用户级别和系统级别上生成的递归调用的数量。Oracle维护了一些用于内部处理的表。当oracle需要对这些表进行更改时,它就会在内部生成一个SQL语句,然后这个语句再生成一个递归调用。
db block gets 请求一个CURRENT块的次数
consistent gets 为一块请求consistent read的次数
physical reads 从磁盘读取得数据块总数。这个数量等于“直接物理读取”的值加上读入缓冲区的所有数据块
redo size 生成的重做的总数量(以字节为单位)
bytes sent via SQL * Net to client 从前台进程发送给客户的总字节数
bytes received via SQL * Net from client 通过Oracle Net从客户接收的总字节数
SQL*Net roundtrips to/from client 发送给客户和从客户接收的Oracle Net消息的总数
sorts (memory) 完全在内存中执行并且不需要任何磁盘写入的排序操作的数量
>
db block gets 请求一个CURRENT块的次数
consistent gets 为一块请求consistent read的次数
physical reads 从磁盘读取得数据块总数。这个数量等于“直接物理读取”的值加上读入缓冲区的所有数据块
redo size 生成的重做的总数量(以字节为单位)
bytes sent via SQL * Net to client 从前台进程发送给客户的总字节数
bytes received via SQL * Net from client 通过Oracle Net从客户接收的总字节数
SQL*Net roundtrips to/from client 发送给客户和从客户接收的Oracle Net消息的总数
sorts (memory) 完全在内存中执行并且不需要任何磁盘写入的排序操作的数量
一、识别占用资源较多的语句的方法(4种方法)
1.测试组和最终用户反馈的与反应缓慢有关的问题。
2.利用V_$SQLAREA视图提供了执行的细节。(执行、读取磁盘和读取缓冲区的次数)
• 数据列
EXECUTIONS:执行次数
DISK_READS:读盘次数
COMMAND_TYPE:命令类型(3:select,2:insert;6:update;7delete;47:pl/sql程序单元)
OPTIMIZER_MODE:优化方式
SQL_TEXT:Sql语句
SHARABLE_MEM:占用shared pool的内存多少
BUFFER_GETS:读取缓冲区的次数
• 用途
1、帮忙找出性能较差的SQL语句
2、帮忙找出最高频率的SQL
3、帮忙分析是否需要索引或改善联接
监控当前Oracle:family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的session,如出现时钟的标志,表示此进程中的sql运行时间较长。
4. Trace工具:
a)查看数据库服务的初始参数:timed_statistics、user_dump_dest和max_dump_file_size
b)Step 1: alter session set sql_trace=true
c)Step 2: run sql;
d)Step 3: alter session set sql_trace=false
e)Step 4:使用 “TKPROF”转换跟踪文件
f)Parse,解析数量大通常表明需要增加数据库服务器的共享池大小,
query或current提取数量大表明如果没有索引,语句可能会运行得更有效,
disk提取数量表明索引有可能改进性能,
library cache中多于一次的错过表明需要一个更大的共享池大小
二、如何管理语句处理和选项
•基于成本(Cost Based) 和基于规则(Rule Based) 两种优化器, 简称为CBO 和RBO
•Optimizer Mode参数值:
Choose:如果存在访问过的任何表的统计数据 ,则使用基于成本的Optimizer,目标是获得最优的通过量。如果一些表没有统计数据,则使用估计值。如果没有可用的统计数据,则将使用基于规则的Optimizer。
All_rows:总是使用基于成本的Optimizer,目标是获得最优的通过量。
First_rows_n:总是使用基于成本的Optimizer,目标是对返回前N行(“n”可以是1,10,100或者1000)获得最优的响应时间。
First_rows:用于向后兼容。使用成本与试探性方法的结合,以便快速传递前几行。
RULE:总是使用基于规则的Optimizer
三、使用数据库特性来获得有助于查看性能的处理统计信息(解释计划和AUTOTRACE)
No1: Explain Plan
A)使用Explain工具需要创建Explain_plan表,这必须先进入相关应用表、视图和索引的所有者的帐户内. (@D:\oracle\ora92\rdbms\admin\utlxplan)
B) 表结构:
STATEMENT_ID:为一条指定的SQL语句确定特定的执行计划名称。如果在EXPLAN PLAN语句中没有使用SET STATEMENT_ID,那么此值会被设为NULL。
OPERATION:在计划的某一步骤执行的操作名称,例如:Filters,Index,Table,Marge Joins and Table等。
OPTION:对OPERATION操作的补充,例如:对一个表的操作,OPERATION可能是TABLE ACCESS,但OPTION可能为by ROWID或FULL。
Object_Owner:拥有此database Object的Schema名或Oracle帐户名。
Object_name:Database Object名
Object_type:类型,例如:表、视图、索引等等
ID:指明某一步骤在执行计划中的位置。
PARENT_ID:指明从某一操作中取得信息的前一个操作。通过对与ID和PARENT_ID使用Connect By操作,我们可以查询整个执行计划树。
C)EXPLAIN搜索路径解释
•全表扫描(Full Table Scans)(无可用索引,大量数据,小表 ,全表扫描hints,HWM(High Water Mark), Rowid扫描)
•索引扫描
索引唯一扫描(Index Unique Scans)
索引范围扫描(Index Range Scans)
索引降序范围扫描(Index Range Scans Descending)
索引跳跃扫描(Index Skip Scans)
全索引扫描(Full Scans)
快速全索引扫描(Fast Full Index Scans)
索引连接(Index Joins)
位图连接(Bitmap Joins)
•如何选择访问路径: CBO首先检查WHERE子句中的条件以及FROM子句,确定有哪些访问路径是可用的。然后CBO使用这个访问路径产生一组可能的执行计划,再通过索引、表的统计信息评估每个计划的成本,最后优化器选择成本最低的一个。
•表的连接方式:
Nested Loops会循环外表(驱动表),逐个比对和内表的连接是否符合条件。在驱动表比较小,内表比较大,而且内外表的连接列有索引的时候比较好。当SORT_AREA空间不足的时候,Oracle也会选择使用NL。基于Cost的Oracle优化器(CBO)会自动选择较小的表做外表。(优点:嵌套循环连接比其他连接方法有优势,它可以快速地从结果集中提取第一批记录,而不用等待整个结果集完全确定下来。缺点:如果内部行源表(读取的第二张表(内表)已连接的列上不包含索引,或者索引不是高度可选时, 嵌套循环连接效率是很低的。如果驱动行源表(从驱动表中提取的记录)非常庞大时,其他的连接方法可能更加有效。)
SORT- merge JOIN,将两表的连接列各自排序然后合并,只能用于连接列相等的情况,适合两表大小相若的情况(在缺乏数据的选择性或者可用的索引时,或者两个源表都过于庞大(超过记录数的5%)时,排序合并连接将比嵌套循环连更加高效。但是,排列合并连接只能用于等价连接(WHERE D.deptno=E.dejptno,而不是WHERE D.deptno>=E.deptno)。排列合并连接需要临时的内存块,以用于排序(如果SORT_AREA_SIZE设置得太小的话)。这将导致在临时表空间占用更多的内存和磁盘I/O。)
HASH JOIN在其中一表的连接列上作散列,因此只有另外一个表做排序合并,理论上比SORT JOIN会快些,需?/td>
"FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或FULL。
Object_Owner:拥有此database Object的Schema名或Oracle帐户名。
Object_name:Database Object名
Object_type:类型,例如:表、视图、索引等等
ID:指明某一步骤在执行计划中的位置。
PARENT_ID:指明从某一操作中取得信息的前一个操作。通过对与ID和PARENT_ID使用Connect By操作,我们可以查询整个执行计划树。
C)EXPLAIN搜索路径解释
•全表扫描(Full Table Scans)(无可用索引,大量数据,小表 ,全表扫描hints,HWM(High Water Mark), Rowid扫描)
•索引扫描
索引唯一扫描(Index Unique Scans)
索引范围扫描(Index Range Scans)
索引降序范围扫描(Index Range Scans Descending)
索引跳跃扫描(Index Skip Scans)
全索引扫描(Full Scans)
快速全索引扫描(Fast Full Index Scans)
索引连接(Index Joins)
位图连接(Bitmap Joins)
• 如何选择访问路径: CBO首先检查WHERE子句中的条件以及FROM子句,确定有哪些访问路径是可用的。然后CBO使用这个访问路径产生一组可能的执行计划,再通过索引、表的统计信息评估每个计划的成本,最后优化器选择成本最低的一个。
• 表的连接方式:
Nested Loops会循环外表(驱动表),逐个比对和内表的连接是否符合条件。在驱动表比较小,内表比较大,而且内外表的连接列有索引的时候比较好。当SORT_AREA空间不足的时候,Oracle也会选择使用NL。基于Cost的Oracle优化器(CBO)会自动选择较小的表做外表。(优点:嵌套循环连接比其他连接方法有优势,它可以快速地从结果集中提取第一批记录,而不用等待整个结果集完全确定下来。缺点:如果内部行源表(读取的第二张表(内表)已连接的列上不包含索引,或者索引不是高度可选时, 嵌套循环连接效率是很低的。如果驱动行源表(从驱动表中提取的记录)非常庞大时,其他的连接方法可能更加有效。)
SORT- merge JOIN,将两表的连接列各自排序然后合并,只能用于连接列相等的情况,适合两表大小相若的情况(在缺乏数据的选择性或者可用的索引时,或者两个源表都过于庞大(超过记录数的5%)时,排序合并连接将比嵌套循环连更加高效。但是,排列合并连接只能用于等价连接(WHERE D.deptno=E.dejptno,而不是WHERE D.deptno>=E.deptno)。排列合并连接需要临时的内存块,以用于排序(如果SORT_AREA_SIZE设置得太小的话)。这将导致在临时表空间占用更多的内存和磁盘I/O。)
HASH JOIN在其中一表的连接列上作散列,因此只有另外一个表做排序合并,理论上比SORT JOIN会快些,需要有足够的内存,而且打开了SORT_JOIN_ENABLE参数。(当缺少有用的索引时,哈希连接比嵌套循环连接更加有效。哈希连接可能比排序合并连接更快,因为在这种情况下只有一张源表需要排序。哈希连接也可能比嵌套循环连接更快,因为处理内存中的哈希表比检索B_树索引更加迅速。和排序合并连接、群集连接一样,哈希连接只能用于等价连接。和排序合并连接一样,哈希连接使用内存资源,并且当用于排序内存不足时,会增加临时表空间的I/O(这将使这种连接方法速度变得极慢)。最后,只有基于代价的优化器才可以使用哈希连接。)
BNo2: AUTOTRACE
•set autotrace 使用步骤:
1、以system登录
2、创建plustrace角色;\sqlplus\admin\plustrce.sql
3、向常规用户授予权限:grant plustrace to
4、如果没有plan_table也要创建:\rdbms\admin\utlxplan.sql
• set autotrace 选项
on 显示查询结果,执行计划,统计数据
on statistics 显示查询结果,统计数据,不显示执行计划
on explain 显示查询结果,执行计划,不显示统计数据
traceonly 显示执行计划和统计结果,但不包括查询结果
traceonly statistics 仅显示统计数据
recursive calls 在用户级别和系统级别上生成的递归调用的数量。Oracle维护了一些用于内部处理的表。当oracle需要对这些表进行更改时,它就会在内部生成一个SQL语句,然后这个语句再生成一个递归调用。
db block gets 请求一个CURRENT块的次数
consistent gets 为一块请求consistent read的次数
physical reads 从磁盘读取得数据块总数。这个数量等于“直接物理读取”的值加上读入缓冲区的所有数据块
redo size 生成的重做的总数量(以字节为单位)
bytes sent via SQL * Net to client 从前台进程发送给客户的总字节数
bytes received via SQL * Net from client 通过Oracle Net从客户接收的总字节数
SQL*Net roundtrips to/from client 发送给客户和从客户接收的Oracle Net消息的总数
sorts (memory) 完全在内存中执行并且不需要任何磁盘写入的排序操作的数量
>
db block gets 请求一个CURRENT块的次数
consistent gets 为一块请求consistent read的次数
physical reads 从磁盘读取得数据块总数。这个数量等于“直接物理读取”的值加上读入缓冲区的所有数据块
redo size 生成的重做的总数量(以字节为单位)
bytes sent via SQL * Net to client 从前台进程发送给客户的总字节数
bytes received via SQL * Net from client 通过Oracle Net从客户接收的总字节数
SQL*Net roundtrips to/from client 发送给客户和从客户接收的Oracle Net消息的总数
sorts (memory) 完全在内存中执行并且不需要任何磁盘写入的排序操作的数量
发表评论
-
oracle 命令
2009-02-05 20:30 1011一、ORACLE的启动和关闭 ... -
通过dbms_flashback找回误删除的数据收藏
2009-01-21 11:35 1346在使用DBMS_FLASHBACK时要首先注意以下几个事项: ... -
优化Oracle数据库性能收藏
2009-01-21 11:35 890优化策略 为了保 ... -
Oracle Start With Connect By
2009-01-21 11:33 1572Start With Connect By 是用来实现在一个 ... -
Oracle 表空间操作收藏
2009-01-21 11:32 1009创建表空间: 1、递增 ... -
移动数据文件收藏
2009-01-21 11:32 736移动数据文件: 1、首先使要移动数据文件的表空间离线. ... -
Oracle 死锁会话处理收藏
2009-01-21 11:31 1172--查询所有的死锁: SELECT * FROM V$LOCK ... -
Oracle 9i 打开autotrace on 查看执行计划收藏
2009-01-21 11:31 13331.创建表,通过utlxplan脚本 SQL> @? ... -
如何启用sqlplus的AutoTrace功能收藏
2009-01-21 11:31 847通过以下方法可以把Autotrace的权限授予Everyone ... -
user和schema的区别:
2009-01-21 11:30 1053说穿了其实user是控制权限的,而schema是个容器,非所有 ... -
解决Oracle数据文件和日志文件丢失的问题收藏
2009-01-21 11:29 2102今天不小心误删除了数据库的数据文件和日志文件,在启动数据库时报 ... -
Oracle表段中的高水位线HWM收藏
2009-01-21 11:28 2633在Oracle数据的存储中, ... -
深入了解oracle的高水位(HWM)收藏
2009-01-21 11:26 2273说到HWM,我们首先要简要的谈谈ORACLE的逻辑存储管理.我 ... -
ORACLE 日志文件相关查询收藏
2009-01-21 11:25 11931.查询系统使用的是哪一组日志文件: select * fro ... -
ORACLE热备份恢复手册收藏
2009-01-21 11:22 2332概要 1.1. 本文的目的 为了模拟测试oracle热备份的 ... -
(转)windows命令行下启动oracle
2009-01-21 09:56 1529--总结启动命令如下: lsnrctl [start|stop ... -
小议分析函数中排序对结果的影响(一)
2009-01-12 13:24 928分析函数中经常会包括O ... -
ORACLE10g新特性——全局HASH分区索引
2009-01-12 13:23 1764在10g以前,Oracle的全局索引分区方法只有一种,即范围分 ... -
深入认识Oracle Supplemental logging
2008-12-22 18:35 3143对于有过逻辑standby,streams搭建体验的朋友,肯定 ... -
深入分析Oracle数据库日志文件
2008-12-22 15:19 1000深入分析Oracle数据库日志文件 作者:程永新 发文时间: ...
相关推荐
Oracle SQL 语句执行效率问题查找与解决方法 一、 Oracle SQL 语句执行效率问题查找方法 Oracle 数据库系统中, SQL 语句的执行效率问题是一个非常重要的问题。在实际应用中,我们经常会碰到一些性能不佳的 SQL ...
在Oracle数据库管理中,了解SQL语句的执行性能和频率对于系统优化至关重要。本文将详细介绍如何查看Oracle数据库中执行最慢和查询次数最多的SQL语句,以帮助DBA(数据库管理员)识别潜在的性能瓶颈。 首先,我们来...
在Oracle数据库环境中,SQL语句的优化是提升查询效率、减少系统资源消耗的关键环节。通过对特定操作符的合理运用,可以显著改善数据检索的速度与准确性。本文将深入探讨几种常见的SQL操作符及其优化方法,包括IN、...
Oracle SQL语句执行计划是数据库管理系统中非常关键的一部分,它决定了SQL查询如何在数据库中执行,从而直接影响到查询效率和整体系统性能。Oracle数据库通过共享池来存储已解析的SQL语句及其执行计划,以此避免对...
在Oracle数据库中,SQL语句的执行效率很大程度上取决于所选的优化器。Oracle提供了三种优化器模式: 1. **基于规则的优化器(RULE)**:这是Oracle早期版本默认使用的优化器,其决策基于一组固定的规则,不考虑成本...
在数据库管理中,SQL语句的执行效率是关键因素之一,尤其在处理大量数据时。通过对SQL语句的执行计划进行分析,我们可以找到优化查询性能的策略,从而提高数据库系统的整体性能。这篇博客"通过分析SQL语句的执行计划...
如果相同的SQL语句被重复执行,Oracle会在共享池(Shared Pool)中查找是否存在相同的语句。如果存在,就会避免重新解析语句,直接重用,这个过程称为软解析。反之,如果没有找到,就需要进行硬解析(hardparse),...
### Oracle高效SQL语句原则 在Oracle数据库管理与优化的过程中,...通过以上原则的应用,可以显著提高Oracle数据库中的SQL语句执行效率。需要注意的是,在实际应用过程中还需要根据具体情况灵活调整,以达到最佳效果。
本文将深入探讨影响SQL语句查询效率的关键因素,特别关注查询优化与LIKE语句的使用,帮助数据库管理员和开发人员识别并解决查询性能瓶颈。 ### 影响SQL查询效率的因素 #### 1. **处理NULL值** 当SQL查询涉及对...
首先,我们来看`sqlhc.sql`,这是SQL Health Check的主要脚本,它会执行一系列的检查,分析数据库中的SQL语句,查找可能存在的性能问题。通过运行这个脚本,你可以获得关于SQL执行计划、绑定变量、索引使用情况、...
首先,Oracle的优化器(Optimizer)是一种内部机制,它负责分析SQL语句并确定执行查询的最佳路径。优化器有两种主要模式:基于规则的优化器(RBO)和基于成本的优化器(CBO)。RBO依赖于预定义的规则和策略来决定...
这样可以提高 SQL 语句的执行效率。 Oracle 优化器在任何可能的时候都会对表达式进行评估,并且把特定的语法构造转换成等价的构造。这样可以提高 SQL 语句的执行速度。 常量优化是 SQL 优化的重要部分。常量的...
### Oracle DBA必备SQL语句列表详解 #### 监控索引是否被使用 - **命令**: - `ALTER INDEX &index_name MONITORING USAGE;` - `ALTER INDEX &index_name NOMONITORING USAGE;` - `SELECT * FROM V$OBJECT_USAGE...
Oracle 数据查询语句执行过程中,每个阶段都需要注意一些关键问题,例如语法分析阶段需要验证语句正确性,执行语句阶段需要锁定相关行,读取数据阶段需要批量 Fetch 数据等。了解 Oracle 数据查询语句执行过程,可以...
在Oracle中,SQL语句首先由解析器解析,然后由优化器根据统计信息和成本模型选择最佳执行计划。这个执行计划决定了数据如何被检索、如何进行连接以及排序等操作。因此,理解优化器的工作方式和影响其决策的因素是...
本资料“ORACLE+SQL效率优化.rar”深入探讨了如何优化Oracle中的SQL语句,以提高数据库性能,确保系统运行流畅。 首先,了解SQL执行效率的基础在于理解查询执行计划。Oracle使用解析器解析SQL语句,然后生成执行...
当我们向 Oracle 提交一个 SQL 语句时,Oracle 会首先在共享内存中查找是否有相同的语句。这里需要注明的是,Oracle 对两者采取的是一种严格匹配,要达成共享,SQL 语句必须完全相同(包括空格、换行等)。 判断 ...
SQL语句执行将消耗数据库的大部分资源,而优化的查询语句可以大幅提高应用系统的性能与效率。 优化的实质与目的是通过调整SQL语句来提高Oracle的性能,使数据查找的路径最佳化,并尽量保持CPU时间和I/O时间的平衡。...