`
longgangbai
  • 浏览: 7340088 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle 性能调优学习笔记(十一)-- SQL 语句优化

 
阅读更多

SQL 语句优化
   判断SQL占用资源的方法
   1.OEM
   2.Statspack
   3.Explain Plan
   4.SQL Trace and TKPROF
   5.AutoTrace
  
   优化器模型
     两种优化器:
  基于的规则的RBO:(不推荐)
   1.规则在数据字典存在
   
  基于的代价的CBO:
      1.选择路径消耗(IO,CPU)最小的代价
   2.统计指标
  查询优化器工作原理
  1.优化器产生一系列的SQL执行计划.
  2.优化器是基于数据字典中该SQL的表存储信息,索引,数据分布,分区等信息.
   cost是一个量化值,是一个期望出现的执行需要的资源(访问路径,排序,IO,CPU,内存).
   串行中Cost越高,执行时间越长,并行中比较复杂.
  3.优化器采用比较cost,选择最低的cost执行.
  
  优化目标
   默认情况下,查询优化器的目的获取最大的吞吐量.
   最短的响应时间.
   
  优化器行为
   optimizer_mode={
   CHOOSE:
   FIRST_ROWS:不建议使用.
   FIRST_ROWS_N:返回头部多长时间.
   ALL_ROWS:11g缺省值.获取最大的吞吐量.
   }
  系统级别:
   optimizer_mode={CHOOSE|FIRST_ROWS|FIRST_ROWS_N|ALL_ROWS}
  会话级别:
    alter session set optimizer_mode
   语句级别
    使用hints;
  存储数据字典的统计数据.
    优化器使用的优化器存储在数据字典中,你可以收集统计信息通过dbms_stats.
    为了保护优化器的准确性,必须及时更新统计信息.统计信息为查询对象提供唯
    一性和分布情况.
    当使用查询优化器是没有可用 统计信息,优化器将使用一个简单的参数设置.
    OPTIMIZER_DYNAMIC_SAMPLING.这将导致很慢的解析.
   
    SQL使用Hints
   create bitmap index gen_idx on customers(cust_gender);
     查询使用hints
     select /*+ INDEX(customers gen_idx)*/ cust_last_name,cust_street_address,
     cust_postal_code
      from sh.customers
      where upper(cust_gender)='M';
   _rows
      select /*+ First_rows */ * from emp;
   OPTIMIZER_FEATURES_ENABLE参数启用优化器采用版本行为.
   如果想采用旧版本的特性,需要设置OPTIMIZER_FEATURES_ENABLE为旧本本版本号.
   OPTIMIZER_FEATURES_ENABLE:优化器CBO采用的数据库版本.
     如果升级数据库版本等,OPTIMIZER_FEATURES_ENABLE的优化器版本也将跟着改变.
   
   SQL计划的管理(SQL plan management)
      
    DBMS_SPM包中的LOAD_PLANS_FROM_CURSOR_CACHE或者LOAD_PLANS_FROM_SQLSET.
       备注:在oracle9i中使用Stored outlines.oracle 9i已经过期.
       由低版本迁移到高板本.
   查看执行计划
      EXPLAIN PLAN:
      SQL Trace:
      AWR:
      v$sql_plan:
      SQLPLUS Autotrace:
   执行计划使用目的:
      1.当前SQL的执行计划
      2.index影响
      3.执行路径
      4.校验index是否有效.
      5.检查哪一个执行计划应该执行
     
   诊断工具
    statspack:
      以gets排序.读取次数最多.
      以reads排序.从磁盘读的最多的.
      以executions排序.
      以parse calls排序.
    explain plan:
         需要plan_table,通过utlxplan.sql创建.
      使用过程:
       explain plan for
         select * from scott.emp;
       查看执行计划:
       utlxpls.sql:非并行情况.
       utlxplp.sql:显示并行情况下的执行计划.
       dbms_xplan包:
         select * from table (dbms_xplan.display)
       同一缩进,先执行上面,
       不同缩进,下执行下面.
    SQL trace AND TKPROF:
          1.设置初始化参数
      alter session set sql_trace =true ;
       2.运行程序
      alter session set sql_trace =false ;
       3.trace文件具有一定格式可以使用TKPROF查看文件内容
         tkprof tracefile.trc output.txt [options]
      备注:tracefile.trc在user_dump_dest目录下.
       数据库实例级别:
        sql_true=true|false
         alter system set sql_trace =false ;
       会话级别:
         alter session set sql_trace =false ;
         execute dbms_session.set_sql_trace(true|false);
         execute dbms_system.set_sql_trace_in_session(session_id,serial_id,{True|False});
     TKPROF 统计信息指标
     Count:执行调用的次数.
     CPU:CPU使用的毫秒数.
     Elapsed:
     Disk:物理读.
     Query:逻辑读.
     Current:当前模式下逻辑读
     Rows:行处理. 
    SQLPLUS autotrace 特性:
      1.创建plan_table
      @?/rdbms/sqlplus/admin/plustrce.sql
      2.创建并授权
      grant plustrace to scott;
      3.Auto语法
        set autotrace [off|on | traceonly] [Explain | statistics]
     
    OEM中Oracle SQL Analyze:

分享到:
评论

相关推荐

    Oracle DBA性能调优学习笔记

    针对“Oracle DBA性能调优学习笔记”这一主题,我们可以提取并解释出以下重点知识。 首先,性能调优是一个多角色参与的过程。不仅DBA需要参与,应用架构师、应用设计师、应用开发人员以及OS和存储系统管理员也同样...

    ORACLE DBA工作笔记 运维数据迁移与性能调优

    标题中提到的“ORACLE DBA工作笔记 运维数据迁移与性能调优”揭示了这本书籍主要围绕着...因此,类似于“ORACLE DBA工作笔记 运维数据迁移与性能调优”这样的专业书籍,是DBA们提升技能、增加实战经验的宝贵学习材料。

    ORACLE学习笔记之调节性能优化篇

    本文主要围绕ORACLE数据库的性能优化,特别是如何通过不同的方式来追踪和分析SQL语句的执行,从而找出性能瓶颈。 首先,了解如何查询当前正在执行语句的执行计划是至关重要的。通过`V$SQL_PLAN`视图,我们可以获取...

    成功之路:Oracle11g学习笔记.pdf

    在介绍Oracle系统管理的知识以后,将介绍与开发相关的内容(如PL/SQL基础知识、存储过程、函数、包等),并介绍数据库性能调整,《成功之路:Oracle 11g学习笔记》重点介绍SQL语句调优。SQL语句调优是《成功之路:Oracle...

    SQL开发指南 第16章 SQL Tuning优化调优技巧--felix笔记.pdf

    了解SQL语句的执行成本对于优化至关重要。通常可以通过查看执行计划来评估不同的查询策略。执行计划显示了数据库如何执行查询,包括使用的索引、JOIN类型等信息。通过对比不同查询的执行计划,可以直观地看出哪种...

    Oracle性能调优

    Oracle性能调优是数据库管理员和开发人员关注的重要领域,它涉及到如何优化数据库系统以提高查询速度、减少资源消耗,从而提升整体应用性能。本资料集是作者精心整理的Oracle调优笔记,涵盖了一系列实用的调优技巧和...

    oracle学习笔记--言简意赅

    ### Oracle学习笔记精要 ...以上是Oracle学习笔记中的关键知识点总结,涵盖了SQLPLUS的基本命令、SQL语句的结构、SELECT语句的使用技巧等多个方面,旨在帮助初学者快速掌握Oracle数据库的基础操作和查询技术。

    Oracle 10g 学习笔记

    │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01...

    oracle sql语句学习

    这个"oracle sql语句学习"资源包显然旨在帮助初学者逐步提升到高级水平,通过全面的笔记资料,使用户能够从基础概念到复杂操作都能熟练掌握。 首先,我们从基础开始。SQL,全称Structured Query Language(结构化...

    ORACLE性能调优

    1. **查询优化**:Oracle数据库通过查询优化器来确定执行SQL语句的最佳方式。它分析不同的执行计划,并选择成本最低的一个。了解如何使用EXPLAIN PLAN,SQL Trace,以及 tkprof 工具来分析查询性能至关重要。此外,...

    《Pro Oracle SQL》 读书笔记--Chapter 6--6.2 Execution Plans--之四

    执行计划是Oracle数据库为了执行SQL语句而设计的一种详细步骤,它决定了数据如何被检索、排序、连接以及过滤。了解执行计划可以帮助我们找出SQL性能瓶颈,并针对性地进行优化。在Oracle 10g Express Edition中,这个...

    Oracle SQLServer数据库 学习笔记

    6. **性能监控与调优**:使用性能监视工具,分析并优化数据库性能。 7. **高级特性**:如视图、存储过程、触发器、游标等的使用。 8. **实战项目**:通过实际案例,将理论知识应用于解决实际问题。 通过深入学习这...

    oracle笔记 (PL-SQL)

    Oracle笔记(PL-SQL)是关于数据库管理和编程的一个重要主题,主要聚焦于Oracle数据库系统中的结构化查询语言(SQL)的扩展——PL/SQL。PL/SQL是一种过程化语言,结合了SQL的功能,使得开发者能够编写复杂的数据库应用...

    玩转oracle学习笔记(四)-数据库操作

    这篇笔记主要聚焦于"玩转Oracle学习笔记(四)",作者通过文档分享了他在数据库管理、查询优化、数据处理等方面的经验。以下是对这些知识点的详细解析: 1. 数据库创建与连接: - Oracle数据库的安装与配置:学习...

    玩转oracle学习笔记(三)-Oracle操作

    11. **性能优化**:通过分析SQL执行计划,使用EXPLAIN PLAN、DBMS_XPLAN等工具进行性能调优。 12. **数据库安全管理**:了解Oracle的身份验证、授权和审计机制,保障数据库安全。 在“韩顺平玩转oracle学习笔记(三...

    精通 ORACLE SQL高级编程 学习笔记

    精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记

    Oracle学习笔记 PDF

    ### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...

    Oracle 10g sql 学习笔记

    Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...

    成功之路Oracle11g学习笔记

    此外,你还会接触到性能优化,包括分析与调整SQL语句、使用Explain Plan分析执行计划、优化表和索引设计等。 在安全和权限管理上,Oracle11g提供了一套完善的角色和权限机制,通过GRANT和REVOKE语句来分配和撤销...

Global site tag (gtag.js) - Google Analytics