文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程数据库通过分析SQL语句的执行计划优化SQL(二)
精品推荐
特别推荐
·学习SQL语句之SQL语句大全
·数据备份失败的五个原因及解决办法
·解决SQL Server常见的七个经典问题
·SQL存储过程的概念,创建,调用,管理,删除,优点
·带你轻松接触13个数据库术语
·如何恢复系统数据库如何恢复系统数据库?
·通过实例讲解由浅入深学会存储过程
·学会三个范式快速成为数据库设计的高手
·SQL数据库应聘人员面试时经常被问的问题
·问答:查询分析器不能单步调试的的原因
·数据库基础知识:SQL中的IIF语句详解
·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
·你知道吗?优化数据库前的十大问题
·自动备份注意事项让你远离误删数据噩梦
·关于MSSQL数据库日志满的快速解决办法
·SQL安全设置攻略
·SQL注入的不常见方法
·关于SQL语句的优化方式
·SQL优化34条
·查询及删除重复记录的方法
热点TOP10
·通过分析SQL语句的执行计划优化SQL(二)
·学习SQL语句之SQL语句大全
·通过分析SQL语句的执行计划优化SQL(一)
·精妙SQL语句收集
·通过分析SQL语句的执行计划优化SQL(四)
·通过分析SQL语句的执行计划优化SQL(三)
·一个简单的酒店系统的数据库设计
·ADODB 入门学习基础教程
·Apache+php+mysql安装与配置详解
·RadioBox、CheckBox和Validating事件的相关处理
·数据采集程序(网页小偷)点滴心得
·图片保存到数据库和从数据库读取图片并显示(c#)
·无限级分类的非递归实现(存储过程版)
·SQL查询语句精华使用简要
·使用设计模式构建通用数据库访问类
·数据库基础知识:SQL中的IIF语句详解
·列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
·精华:全面接触SQL语法
·15 个与日期时间相关的自定义函数
·玩转Windows桌面图标

通过分析SQL语句的执行计划优化SQL(二)

日期:2008年4月23日 作者: 查看:[大字体 中字体 小字体]


  第5章 Oracle的执行计划

  背景知识:

       
  为了更好的进行下面的内容我们必须了解一些概念性的术语:

  共享sql语句

     为了不重复解析相同的SQL语句(因为解析操作比较费资源,会导致性能下降),在第一次解析之后,ORACLE将SQL语句及解析后得到的执行计划存放在内存中。这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。因此,当你执行一个SQL语句(有时被称为一个游标)时,如果该语句和之前的执行过的某一语句完全相同,并且之前执行的该语句与其执行计划仍然在内存中存在,则ORACLE就不需要再进行分析,直接得到该语句的执行路径。ORACLE的这个功能大大地提高了SQL的执行性能并大大节省了内存的使用。使用这个功能的关键是将执行过的语句尽可能放到内存中,所以这要求有大的共享池(通过设置shared buffer pool参数值)和尽可能的使用绑定变量的方法执行SQL语句。

     当你向ORACLE 提交一个SQL语句,ORACLE会首先在共享内存中查找是否有相同的语句。这里需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等)。

     下面是判断SQL语句是否与共享内存中某一SQL相同的步骤:
  1). 对所发出语句的文本串进行hashed。如果hash值与已在共享池中SQL语句的hash值相同,则进行第2步:
        2)         将所发出语句的文本串(包括大小写、空白和注释)与在第1步中识别的所有
        已存在的SQL语句相比较。
        例如:
        SELECT * FROM emp WHERE empno = 1000;
        和下列每一个都不同
        SELECT * from emp WHERE empno = 1000;
        SELECT * FROM EMP WHERE empno = 1000;
        SELECT * FROM emp WHERE empno = 2000;
        在上面的语句中列值都是直接SQL语句中的,今后我们将这类sql成为硬编码SQL或字面值SQL
       
        使用绑定变量的SQL语句中必须使用相同的名字的绑定变量(bind variables) ,
例如:
        a. 该2个sql语句被认为相同
        select pin , name from people where pin = :blk1.pin;
        select pin , name from people where pin = :blk1.pin;
        b. 该2个sql语句被认为不相同
        select pin , name from people where pin = :blk1.ot_ind;
        select pin , name from people where pin = :blk1.ov_ind;
        今后我们将上面的这类语句称为绑定变量SQL。

        3). 将所发出语句中涉及的对象与第2步中识别的已存在语句所涉及对象相比较。
           例如:
           如用户user1与用户user2下都有EMP表,则
           用户user1发出的语句:SELECT * FROM EMP; 与
           用户user2发出的语句:SELECT * FROM EMP; 被认为是不相同的语句,
           因为两个语句中引用的EMP不是指同一个表。
   
        4). 在SQL语句中使用的捆绑变量的捆绑类型必须一致。

        如果语句与当前在共享池中的另一个语句是等同的话,Oracle并不对它进行语法分析。而直接执行该语句,提高了执行效率,因为语法分析比较耗费资源。

        注意的是,从oracle 8i开始,新引入了一个CURSOR_SHARING参数,该参数的主要目的就是为了解决在编程过程中已大量使用的硬编码SQL问题。因为在实际开发中,很多程序人员为了提高开发速度,而采用类似下面的开发方法:
str_sql string;
int_empno int;

[1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页 




上一篇:通过分析SQL语句的执行计划优化SQL(一)

下一篇:通过分析SQL语句的执行计划优化SQL(三)

通过分析SQL语句的执行计划优化SQL(二) 相关文章:
·经典语句:71条人生信条
·菜鸟必看:WinXP终极优化
·提高运行速度 教你一步一步优化XP系统
·常用SQL语句词典
·VBS脚本病毒原理分析与防范
·婚礼计划书
·通过分析SQL语句的执行计划优化SQL(二)
·Oracle SQL精妙SQL语句讲解
·学习SQL语句之SQL语句大全
·windows server 2003优化
通过分析SQL语句的执行计划优化SQL(二) 相关软件:
·卡耐基 心灵改造计划(上集)
·3D 动画与建模:人体的综合与分析技术
·Windows优化大师V7.72 Build 7.429 正式版
·龙卷风基金投资分析系统
·注册表优化实战练习手册(图文教程 菜鸟先飞系列教材)
·8000英语常用语句MP3+doc 查看
·系统优化大师 系统优化大师
·d3dx9_27.dll游戏执行补丁
·Vista优化大师V2.42 免费正式版
·殖民计划 中文版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot