oracle查看SQL性能

前端之家收集整理的这篇文章主要介绍了oracle查看SQL性能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

以前总想知道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:\oracle\product\10.2.0\client_2\NETWORK\ADMIN\TNSNAMES.ORA进行配置。

环境变量中配置了两个ORACLE,如果想指定其中的一个时,用:setPath=D:\oracle\product\10.2.0\client
_2\bin

tnspingsellmanager

原文链接:https://www.f2er.com/oracle/210809.html

猜你在找的Oracle相关文章