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 有跟这个视图类似的内容)

Oracle Tuning ( instance 级别 ) 01的更多相关文章

  1. Oracle Tuning 基础概述01 - Oracle 常见等待事件

    对Oracle数据库整体性能的优化,首先要关注的是在有性能问题时数据库排名前几位等待事件是哪些.Oracle等待事件众多,随着版本的升级,数量还在不断增加,可以通过v$event_name查到当前数据 ...

  2. Oracle Tuning (Oracle 性能调整)的一些总结

    Oracle Tuning (Oracle 性能调整)的一些总结 Oracle Tuning (Oracle 性能调整)的一些总结关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库 ...

  3. oracle tuning 工具

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

  4. Oracle Tuning 总括

    oracle tuning 分为3个阶段 1. application 调优阶段, 包括设计的调优, SQL语句调优, 管理权限等内容, (这部分是我的重点) (调优人员 application de ...

  5. Oracle事务隔离级别处理差异

    Oracle事务隔离是事务读操作不同程度的数据隔离,分为READ_UNCOMMITTED.READ_COMMITTED(默认).SERIALIZABLE. Oracle事务隔离级别SERIALIZAB ...

  6. Oracle的隔离级别

    隔离级别(isolation level)       隔离级别定义了事务与事务之间的隔离程度.     隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差:隔离程度越低,数据库的并发性越 ...

  7. MySQL与Oracle的隔离级别

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

  8. 查看ORACLE事务隔离级别方法(转)

    众所周知,事务的隔离级别有序列化(serializable),可重复读(repeatable read),读已提交(read committed),读未提交(read uncommitted).根据隔 ...

  9. Oracle 查看session级别信息

    1. 查看活动会话信息[sql] view plain copySELECT *    FROM V$SESSION   WHERE USERNAME IS NOT NULL     AND STAT ...

随机推荐

  1. [Functional Programming Monad] Apply Stateful Computations To Functions (.ap, .liftA2)

    When building our stateful computations, there will come a time when we’ll need to combine two or mo ...

  2. Linux中查看jdk安装目录、Linux卸载jdk、rpm命令、rm命令参数

    一.查看jdk安装目录 [root@node001 ~]# whereis java java: /usr/bin/java /usr/local/java #java执行路径 [root@node0 ...

  3. 数据採集器服务——Socket(今天才发现AES加解密代码跟贴的时候不一样,貌似乱码,不知什么情况)

    近期刚做的一个项目.关于 Socket TCP 通信. 需求方提供了一个 ARM 机器,及数据採集器,须要我做一个服务端与数据採集器进行交互. 目的: 数据採集器:定时将读取到的数据发送到服务端. 服 ...

  4. RocketMq通信协议格式及编解码 (源码分析)

    一.RocketMq broker服务器与客户端的网络通信是基于netty4.x实现的,重点分析  RocketMq设计的通信协议及对应的编解码 开发.         名字解释           ...

  5. 细数Python的特殊方法一:集合类

    1. 特殊方法汇总列表     2. 仿集合类 __len__:返回对象的长度 __getitem__:获得某一项的值 __setitem__:设置莫一项的值 __delitem__删除某一项 __c ...

  6. Gamescom2014:中国游戏公司37.com进军西方海外市场

    在2014年的德国科隆国际游戏展上.Xsolla曾与37.com聊天.我们讨论了中国公司眼下进军西方市场的战略,谈到营销的最有效方法.游戏货币化,并讨论在欧洲和土耳其的网页游戏的前景. 37wan 能 ...

  7. LR中判断HTTP返回状态

    有天,有个人问:我在做b/s测试,请问如何保存从服务器传回来的http头的信息,怎么能得到http状态,和状态200进行比较? 后来,我给出的代码如下: Action() {int i; // [WC ...

  8. js操作当前窗口

      CreateTime--2017年7月21日09:58:34Author:Marydon js操作当前窗口 1.打开一个新的窗口(新的标签页) 实现方式:window.open(url) 实例一: ...

  9. 哈希key个数

    $length = keys %hashname; 则$length中得到的直接是该hash的key的个数.

  10. swiper动态加载数据滑动失效,ajax执行后swiper.js的效果消失问题

    使用swiper.js做一些动效时,如果进行了ajax,并且重新把DOM写入到HTML代码中,会导致swiper.js的特效消失的问题.原因是ajax加载后,原先new 的Swiper对象,不认识新来 ...