`

pl/sql 性能分析

阅读更多

SET TIMING ON SERVEROUTPUT ON
DECLARE
   v_count NUMBER(10);
BEGIN
   SELECT COUNT(rowid)
   INTO v_count
   FROM person
   WHERE gender = 'F'
   AND activity_id = '11'
   AND hair_color = 'BLONDE'
   AND age = 34
   AND eye_color = 'BROWN';
   DBMS_OUTPUT.PUT_LINE(v_count);
END;

person 有4万8千条...

这条SQL 耗费了 将近10秒 因为做了全表扫描 因为条件中没有任何加索引的列。。

那么如何分析呢

ALTER SESSION SET SQL_TRACE = TRUE;
运行之前把SQL_TRACE 打开

运行之后把SQL_TRACE 关掉

select value from v$parameter where name='user_dump_dest';

或者  alter system set user_dump_dest='c:\temp';

可得到跟踪文件的位置。。

E:\ORACLE\PRODUCT\10.1.0\ADMIN\ORCL\UDUMP


然后进入命令行看下这个目录

2008-04-23  16:48             6,770 orcl_ora_1136.trc
2008-04-22  17:56             2,217 orcl_ora_1472.trc
2008-04-23  08:58             2,941 orcl_ora_1716.trc
2008-04-23  16:10             7,608 orcl_ora_2364.trc
2008-04-24  09:02             2,941 orcl_ora_2464.trc
2008-04-23  08:58             2,590 orcl_ora_2512.trc
2008-04-22  17:56             3,836 orcl_ora_2540.trc
2008-04-22  17:59             1,237 orcl_ora_3096.trc
2008-04-24  09:03             2,525 orcl_ora_3148.trc
2008-04-24  10:18           179,058 orcl_ora_3648.trc
2008-04-22  17:58            47,879 orcl_ora_3668.trc
2008-04-22  17:55             2,912 orcl_ora_4312.trc
2008-04-22  17:59             2,912 orcl_ora_4648.trc
2008-04-22  17:59               880 orcl_ora_4840.trc
2008-04-22  17:57               942 orcl_ora_5020.trc
2008-04-22  18:27           141,451 orcl_ora_6004.trc

找到刚才生成的文件。。orcl_ora_1136.trc


然后在命令行运用命令 tkprof

我这里用。。

E:\oracle\product\10.1.0\admin\orcl\udump>tkprof orcl_ora_1136.trc c:/sql_trace.
txt explain=plsql/oracle sort=exeela,prsela,fchela


语法可以参加命令帮助。。

得到文件sql_trace.txt 可以看下这个文件。。

SELECT COUNT(ROWID)
FROM
PERSON WHERE GENDER = 'F' AND ACTIVITY_ID = '11' AND HAIR_COLOR = 'BLONDE'
  AND AGE = 34 AND EYE_COLOR = 'BROWN'


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.01       0.01          0          1          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1      1.98      10.36      71288      72202          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      2.00      10.37      71288      72203          0           1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 65     (recursive depth: 1)

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  SORT AGGREGATE (cr=72202 pr=71288 pw=0 time=10360093 us)
  36371   TABLE ACCESS FULL PERSON (cr=72202 pr=71288 pw=0 time=8037861 us)

********************************************************************************

CPU占用了不到2秒 执行时间10秒以上。。

结论是这种语句造成了多种进程查询。。

解决办法 如果条件的基数不大 加索引 或者加位图索引。。

DROP INDEX gender_idx;
CREATE BITMAP INDEX person_idx
ON person(gender,
          activity_id,
          hair_color,
          age,
          eye_color);

这次查出来就快乐。。

分享到:
评论

相关推荐

    pl/sql最新中文手册

    8. **索引和性能优化**:手册可能也会涉及如何利用索引来提高PL/SQL程序的执行效率,以及如何分析和优化SQL语句。 9. **并发和锁定**:在多用户环境下,理解并发控制和锁定机制是必要的。手册可能会讨论如何处理...

    pl/sql developer11.0

    7. **性能优化**:提供性能分析工具,如执行计划分析、SQL Tuning Advisor等,帮助优化SQL语句,提高数据库运行效率。 8. **版本控制集成**:与其他版本控制系统(如Git、SVN)无缝集成,便于版本管理和代码协同。 ...

    pl/sql64位

    64位的PL/SQL开发者工具对于那些处理大数据量或者需要更高性能的用户来说尤其重要,因为它能够更好地利用现代计算机的内存和处理器资源。 在32位环境中,PL/SQL开发者工具可能受到内存限制,因为32位系统最大只能...

    oracle 9i pl/sql程序设计笔记

    ### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...

    Oracle PL/SQL程序设计(第5版)(上下册)

    - **性能提升技术**:提供了一些具体的例子和最佳实践,展示了如何利用Oracle 11g的新特性来进一步优化PL/SQL程序的性能。 #### 八、实战案例分析 - **案例研究**:通过实际案例来演示如何综合运用前面章节所学的...

    oracle pl/sql从入门到精通 配套源代码

    8. **性能优化**:如何编写高效的PL/SQL代码,使用绑定变量、避免全表扫描、索引优化等技巧。 通过这本书的配套源代码,读者将有机会实际操作这些概念,加深对Oracle PL/SQL的理解,并提升数据库开发技能。每个示例...

    pl/sql 免安装,绿色版pl/sql

    5. **报表和图表**:PL/SQL Developer提供了一定的报表生成功能,可以生成关于数据库对象的各种统计报告,如表空间使用情况、索引分析等,为数据库性能优化提供参考。 6. **连接管理**:用户可以创建多个数据库连接...

    PL/SQL Developer 远程连接Oracle数据库

    8. **性能监控**:尽管是远程连接,PL/SQL Developer仍然可以显示执行计划、统计信息和性能指标,帮助分析和优化SQL查询。 9. **版本控制集成**:PL/SQL Developer可以与各种版本控制系统(如Git、SVN)集成,这...

    pl/sql developer 12

    - **PL/SQL性能分析**:它提供了性能分析工具,可以识别慢速的SQL语句,帮助你优化数据库性能。 - **自定义工作区**:用户可以根据自己的需求自定义工作区,将常用的数据库对象和工具组织在一起,提高工作效率。 ...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    8. **索引优化和性能调优**:深入研究如何利用PL/SQL进行性能分析,以及如何通过索引、物化视图、表分区等手段提升查询性能。 9. **并发控制**:介绍PL/SQL中的锁定机制,如ROWLOCK和SHARE锁,以及如何避免死锁。 ...

    PL/SQL安装包

    - **其他实用工具**:可能包含了一些数据库管理、性能分析或日志查看工具,方便开发者日常维护和问题排查。 使用这个免安装版的PL/SQL工具,用户只需将压缩包解压至指定目录,设置相应的环境变量,就可以开始编写和...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    9. **索引和性能优化**:了解如何创建和使用索引,以及通过PL/SQL分析和优化SQL查询性能。 10. **并发控制**:PL/SQL中的锁定机制,如ROW LEVEL LOCKING,以及如何处理死锁问题。 11. **错误处理和日志记录**:...

    Oracle PL/SQL学习官方教材

    10. **性能优化**:教材可能涵盖性能监控和调优技术,如分析SQL语句的执行计划,使用绑定变量,以及如何使用PL/SQL Profiler进行性能分析。 11. **数据库对象的动态SQL**:通过EXECUTE IMMEDIATE和DBMS_SQL包,可以...

    Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本

    本书会讨论如何利用PL/SQL编写高效的代码,并通过分析和调优提高程序性能。 9. **并发控制**:在多用户环境中,并发访问数据可能导致数据不一致。Oracle提供了一些并发控制机制,如锁定和事务管理。书中会阐述如何...

    精通pl/sql

    9. **性能优化**:分析PL/SQL的性能问题,介绍优化技巧,如减少数据库访问、有效利用缓存、避免全表扫描等。 10. **应用案例**:提供实际的业务场景和示例,帮助读者理解如何在实际工作中运用PL/SQL解决复杂问题。 ...

    oracle 中 pl/sql 只是学习方法

    Oracle中的PL/SQL是一种强大的编程语言,它是...同时,深入学习Oracle数据库的其他功能,如索引优化、性能分析等,将使你在数据库开发和管理领域更加得心应手。不断探索和实践,是成为Oracle数据库专家的关键步骤。

    pl/sql developer使用教程

    PL/SQL Developer还提供了报表生成、图表制作、数据导入导出、性能分析等多种功能。例如,通过"工具" -> "报表",可以生成关于对象的统计信息或依赖关系图。 总之,PL/SQL Developer是Oracle开发者的得力助手,它的...

    pl/sql developer 中文指南

    PL/SQL Developer还包含性能分析工具,如SQL性能分析器,帮助识别和优化慢速查询,提升应用性能。 9. **PL/SQL语法和最佳实践** 中文指南会详细讲解PL/SQL语言的基础语法,包括声明变量、流程控制、异常处理等,...

    PL/SQL工具

    6. **性能分析**:工具提供性能监控和分析功能,帮助识别和优化慢速查询,提升数据库的整体性能。 7. **数据导入导出**:支持批量数据导入和导出功能,可以方便地将数据从CSV或其他格式迁移到Oracle数据库,或者将...

    pl/sql 12 完全汉化版

    7. **性能分析**:通过执行计划分析和SQL监视,帮助优化SQL语句,提升系统性能。 汉化版意味着所有界面元素、菜单、提示信息等均已被翻译为中文,对于不熟悉英文的用户来说,大大降低了学习和使用的门槛,提升了...

Global site tag (gtag.js) - Google Analytics