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. php 获取/设置用户訪问页面语言类

    User Language Class 获取/设置用户訪问的页面语言,假设用户没有设置訪问语言.则读取Accept-Language. 依据用户选择的语言显示相应的页面(英文.中文简体,繁体中文) U ...

  2. Android Freeline加速编译App方案 使用和总结

    Freeline简单介绍 在Android Studio还没推出Instant Run功能之前,每次改动Android project项目时都要将整个项目又一次编译一次,然后再将资源和代码文件打包成A ...

  3. Java中abstract class 和 interface 的解释和他们的异同点(转)

    (一)概述    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存 在,才赋予了Java强大的 面向对象能力.abstract ...

  4. struts2异常处理

    <global-results> <result name="nullException">/WEB-INF/exception/nullException ...

  5. struts struts拦截器(过滤器)

    在struts中尽量避免自定义拦截器,因为大部分需要自己定义拦截器的时候,设计思路就不对了.大部分拦截器框架都有给你定义好了.而且如果在struts中定义拦截器相当于和这个框架绑定了,假如以后要扩展或 ...

  6. OTU_Network&calc_otu

    # -*- coding: utf-8 -*- # __author__ = 'JieYap' from biocluster.agent import Agent from biocluster.t ...

  7. String、StringBuilder、StringBuffer对比

    参考:http://swiftlet.net/archives/1694 http://www.cnblogs.com/springcsc/archive/2009/12/03/1616326.htm ...

  8. java基础讲解13-----集合

    一:集合介绍 import java.util.ArrayList;import java.util.Collection;import java.util.Iterator; public clas ...

  9. Linux上寻找并杀死僵尸进程

    转载: http://blog.csdn.net/shanzhizi/article/details/47320595 linux服务器上,多少会出现一些僵尸进程,下面介绍如何快速寻找和消灭这些僵尸进 ...

  10. 解决Janusgraph索引状态不变更的问题

    JanusGraph的索引因为要同步不同实例及不同后端的数据,因此不是实时能够完成的,视配置,网络和数据量不同,建立/生效索引通常需要一段时间,这也是为什么创建索引时会创建wait()的原因. 在实践 ...