加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle查看SQL性能

发布时间:2020-12-12 15:26:05 所属栏目:百科 来源:网络整理
导读:以前总想知道SQL的运行时间,可有效地进行SQL优化,公司的DBA昨天给我们分享了一下,感觉很不错,呵呵,现在总结如下: 第一种:在SQLPLUS中:在sqlplus 工具 下, 注:setautotracton显示执行计划和统计信息: setautotracetraceonly;只显示trace信息不显示

以前总想知道SQL的运行时间,可有效地进行SQL优化,公司的DBA昨天给我们分享了一下,感觉很不错,呵呵,现在总结如下:

第一种:在SQLPLUS中:在sqlplus工具下,

注:setautotracton显示执行计划和统计信息:

setautotracetraceonly;只显示trace信息不显示SQL结果

SQL>setautotracetraceonly;
SQL>selectt.*,t.rowidfromacl_entryt;

未选定行


执行计划
----------------------------------------------------------
Planhashvalue:3539363351

-------------------------------------------------------------------------------
|Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|
-------------------------------------------------------------------------------
|0|SELECTSTATEMENT||1|86|2(0)|00:00:01|
|1|TABLEACCESSFULL|ACL_ENTRY|1|86|2(0)|00:00:01|--全表扫描,还有一种是检索。
-------------------------------------------------------------------------------


统计信息
----------------------------------------------------------
0recursivecalls--回滚
0dbblockgets
3consistentgets--一致性读
0physicalreads--如果高,在内存中没有缓存。尤其观察的是physicalreads,这项越小越好
0redosize
680bytessentviaSQL*Nettoclient
326bytesreceivedviaSQL*Netfromclient
1SQL*Netroundtripsto/fromclient
0sorts(memory)--当有排序语句时,内存中的执行时间,内存中遵循时间过时LRU算法
0sorts(disk)--当有排序语句时,硬盘中的执行时间,当内存不够时执行,如果值大,说明耗时

0rowsprocessed

setautotraceonstatistics;只显示统计信息

如:

SQL>setautotraceonstatistics;
SQL>selectt.*,t.rowidfromacl_entryt;

未选定行


统计信息
----------------------------------------------------------
1recursivecalls
0dbblockgets
3consistentgets
0physicalreads
0redosize
680bytessentviaSQL*Nettoclient
326bytesreceivedviaSQL*Netfromclient
1SQL*Netroundtripsto/fromclient
0sorts(memory)
0sorts(disk)
0rowsprocessed

输入settimingon来设置打印sql语句的运行时间

SQL>settimingon
SQL>selectt.*,t.rowidfromacl_entryt;

未选定行

已用时间:00:00:00.01

执行计划
----------------------------------------------------------
Planhashvalue:3539363351

-------------------------------------------------------------------------------
|Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|
-------------------------------------------------------------------------------
|0|SELECTSTATEMENT||1|86|2(0)|00:00:01|
|1|TABLEACCESSFULL|ACL_ENTRY|1|86|2(0)|00:00:01|
-------------------------------------------------------------------------------


统计信息
----------------------------------------------------------
0recursivecalls
0dbblockgets
3consistentgets
0physicalreads
0redosize
680bytessentviaSQL*Nettoclient
326bytesreceivedviaSQL*Netfromclient
1SQL*Netroundtripsto/fromclient
0sorts(memory)
0sorts(disk)
0rowsprocessed

注意,setautotraceon,settimingon都需要关闭:关闭用:setautotraceoff,settimingoff

autotraceonexp--只显示执行计划。

第二种:在PL/SQL选中SQL语句---》EXPLAINPLAN,只可以查到是全表查询还是索引查询,有的工具如:Oraclesqldeveloper还可以看到执行时间,本人觉得最牛的还是用SQLPLUS

安装ORACLE客户端后,先配置NETCONFIGURATIONASSISTANT,或直接到

D:oracleproduct10.2.0client_2NETWORKADMINTNSNAMES.ORA进行配置。

环境变量中配置了两个ORACLE,如果想指定其中的一个时,用:setPath=D:oracleproduct10.2.0client
_2bin

tnspingsellmanager

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读