• oracle基础~SQL优化


    一 软解析和硬解析
    1 解析过程:
       1 语法 语义分析
       2 权限和对象检查
       3 在共享池中进行检测是否有已解析的相同SQL,如果存在 则跳过4 ,5 执行软解析,4-5成本比较高 所以要避免硬解析,绑定变量)
       4 选择执行计划(可能有多个执行计划数)
       5 生成执行计划
    2 查看解析结果
       select hash_value,executions,sql_text from $sql like 'sql内容' 
       以用户为角度进行缓存,所以可能存在多个相同的sql内容的记录
    3 查看优化器
        show parameter optimizer
       optimizer_mode: ALL_ROWS
    4  绑定变量
       绑定变量的目的是让SQL本身从硬解析转换成软解析 从而减少系统资源的消耗
       针对对象 SQL模板相同 但是 条件内容不同的SQL语句
       注意点
         1 oltp 可以实施绑定变量战略 但是olap 尽量不要用绑定变量 有时候 全表扫描反而效率更高
         2 绑定变量的实质就是用于替代sql语句中的常量的替代变量。绑定变量能够使得每次提交的sql语句都完全一样
         3 绑定变量适合任何 单条 SQL事务语句 和 存储过程。
        案例
             1 定义变量 
                variable i number;   
            2  赋值 exec :i :=1; exec :i =2
            3  查询  select *from tt where id=:i;
                        select *from tt where id=:i;
    二  总结:
       1.尽可能的避免硬解析,因为硬解析需要更多的CPU资源,闩等。
       2.cursor_sharing参数应权衡利弊,需要考虑使用similar与force带来的影响。
       3.尽可能的使用绑定变量来避免硬解析。
     

  • 相关阅读:
    Python爬虫之路——简单的网页抓图
    vim修复,telnet安装启动,linux更新软件源
    用博客记录成长的历程
    CleanCode代码整洁之道培训总结(2015-03-14)
    MySQL 登录问题
    LeetCode——Set Matrix Zeroes
    CSS vertical-align属性的使用方法
    电子商务站点设计分析--首屏设计
    easyUI资料学习资料
    java实现DES加密与解密,md5加密
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/14484554.html
Copyright © 2020-2023  润新知