Shared Pool Tuning

目标是提高命中率, 以减少 I/O 操作

shared pool : 是由 library cache, data dictionary cache 两部分组成. 由于 data dictionary cache 在内存中的时间比 library cache 时间长, 所以就命中率来说, 只要 library cache 命中了, 那么 data dictionary cache 肯定也命中, 所以我们要提高 library cache 命中率.

注意, 提高library cache 是我们调优时最优先考虑的, 因为向后的调优, 都是建立在SQL已经在内存中的情况, 而没有命中的话, SQL就不在内存中(需要再调入内存), 所以向后的调优就无从谈起.

那么如何调优 library cache, 希望 SQL 命中呢 ?

1. Make sure that users can share statements, 能够各个用户之间尽可能的共享 SQL statement

- As much generic code as possible, 这句话没有理解, 什么叫 generic 呢?现在知道了, 就是说, 你在写SQL语句时, 要注意大小写等书写格式, 尽量保证大家都遵守的规则

- Bind varibales rather than constants

2. Prevent statements from being aged out by allocating enough space. 说白了就是增大些内存而保证在里的SQL statement 不会过期.

因为oracle内存调度采用的是 LRU (least recently used, 最近被使用原则, 所以如果某个SQL长时间没有被使用, 另外Share pool 内存还不够的话, 这个SQL就会被移出)

3. Avoid invalidations that induce reparsing

造成 SQL invalidations 目前知道的原因是, 比如你一个SQL已经解析了, 随后这个SQL所引用的 schema object 发生了变化, 比如表被 anylse, 或者重新编译了plsql等,

这样, 之前解析完成的SQL statement 就变成 invalidation, 即便你又提交了一个一样的 SQL 语句给 ORACLE, 也需要再重新解析一遍.

这里有 3 个术语:

Gets: (Parse) The number of lookups for objects of the newspace (在解析阶段, 需要的资源)

Pins: (Execution) The number of reads or executions of the objects of the newspace(在执行阶段, 需要的资源)

Reloads: (Reparse) The number of library cache misses on the execution step, causing implicit reparsing of the statement and block.

( 注意, 这个内容是, 已经在执行阶段了, 然后发现解析的有问题, 比如 schema object 发生了变化, 然后重新解析, 看来这种是最伤的 )

另外还有一些重要视图, 在 oracle SG 中有罗列, 不知道是否有用, 这里不写了.

Execution plan

解析后, 真正的执行步骤, 调优SQL十分重要, 因为ORACLE的解析过程, 我们是不知道的, 只能通过解析完后真正的执行计划, 来修改SQL语句, 调优, 这样会得到新的 execution plan, 注意这个过程中的oracle是如何解析的, 我们还是不知道(记得编译原理中的什么词法分析, 语法分析, 等等吧), 新的执行计划所付出的代价, 我们是否可以接受.

The main benefit of this (execution plan) is better diagnosis of query performance. v$sql_plan 这里保存了这个执行计划(PLAN_TABLE 有跟这个视图类似的内容)

转载于:https://www.cnblogs.com/moveofgod/p/3628276.html

Oracle Tuning ( instance 级别 ) 01相关推荐

  1. oracle tuning 工具

    工欲善其事, 必先利其器. oracle 调优方面有很多工具, 目前 UI 个人只打算使用 Toad. 重要文件 一. alert log file. (位置 parameter BACKGROUND ...

  2. oracle的隔离级别

    一.事务和隔离级别 事务的概念:事务是把对数据库的一系列操作都看做一个整体,要么全部成功,要么全部失败,利用事务我们可以保证数据库的完整性,事务具有原子性. 隔离级别:隔离级别定义了事务与事务之间的隔 ...

  3. Oracle事务处理—隔离级别

    基本概念: 事务是把对数据库的一系列操作[dml]看作一个整体,要么全部成功,要么全部失败,利用事务我们可以保证数据的完整性,事务具有原子性 事务和锁: 当执行事务操作时[dml],oracle会在被 ...

  4. mysql oracle 默认事务级别_oracle 默认的事务隔离级别

    2.隔离级别实现 上一节介绍了ANSI定义的3种异象,及根据禁止异象的个数而定义的事务隔离级别.因为不存在严格.严谨的"官方"定义,各主流 2.1 Lock-based 隔离级别实 ...

  5. 数据库事务转载基础二:oracle事务隔离级别

    Oracle 支持的 2 种事务隔离级别 Read committed , Serializable 来自 oracle 官方网站的 Read committed , Serializable 的解释 ...

  6. Oracle事务隔离级别

    oracle隔离级别 只有READ COMMITTED和 SERIALIZABLE 因为当有人对数据库的数据进行任何写操作(DML操作)时,Oracle数据库系统首先将原始的数据复制到回滚段中,之后才 ...

  7. Oracle 事务隔离级别

    先看一张Concepts中关于事务隔离级别的一张表格: 从上图可以看到: 通常事务的隔离级别定义为以下4种(基于3种在并发事务中需要避免的现象来划分的): 1.Read uncommitted     ...

  8. 浅谈oracle数据库隔离级别

    1.数据库事务介绍 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 事务处理可以确保除非事务性单元内的所有操作都 ...

  9. Oracle修改instance name

    一. 目标 将 instance name 由 prodcdb 改为 paas,需要关闭数据库修改 原实例名 SQL> select instance from v$thread;INSTANC ...

最新文章

  1. ubuntu 10.04 安装eclipse及其中文语言包
  2. Oracle bootstrap$ 详解
  3. vector机器人 PHOTOS TAKEN BY VECTOR 由 VECTOR 拍摄的照片
  4. 建设网站套用模板优化难吗?
  5. a eraser eraser还是an_eraser前面用a还是an
  6. 谋定新型农业主体-农业大健康·万祥军:农业高质量发展规划
  7. boost::mpl模块实现pair_view相关的测试程序
  8. listbox批量添加
  9. 天津盈克斯机器人科技_坐标天津,适合亲子游的科技馆,亮点是机器人展区
  10. c++ 多字节 转换为 unicode
  11. 详解Windows Shim的攻防利用
  12. 记录这一刻:开通原创保护功能
  13. 【诊断数据库文件-CDD】创建速成班-北汇信息小课堂(二)
  14. Win7定时任务——提醒自己喝水
  15. 代码随想录第十一天 LeetCode 20、1047、150(栈)
  16. 基于JavaEE的医院网上预约挂号系统
  17. 网络安全学习第6篇 - 爆破及PE文件解释
  18. Ecshop会员注册的Email 电子邮箱改成非必填项
  19. Spring JPA整合QueryDSL
  20. jquery 添加点击添加class样式 移除兄弟元素样式

热门文章

  1. 正面刚谷歌苹果,diss了BAT及友商,商汤科技说自己是一只“黑羊”
  2. 英伟达新研究:“狗生猫,猫生万物”的多模态无监督图像转换
  3. 如何快速生成JavaScript文档
  4. Portainer容器管理软件,安装
  5. 贵安新区构建大数据+物联网+智能制造产业链
  6. php git pull
  7. 我的asp.net mvc学习过程
  8. Logstash读取Kafka数据写入HDFS详解
  9. android 新闻应用、Xposed模块、酷炫的加载动画、下载模块、九宫格控件等源码...
  10. iptables的基本概念及数据报文在iptables中的流传过程