一、问题:客户反馈在生产库和测试库执行相同SQL,测试库执行比生产库慢一倍

问题摆在这里,需要进行分析? 啥???

版本11.2.0.4,都是单实例,主机系统硬件配置差不多。

二、对比SQL的执行效率

set linesize 500
set termout off
alter session set statistics_level=all;
alter session set current_schema=xx; --这种方式可以对业务的SQL无需每个表对象前缀添加用户! 但是还是无法与statistics_level 配合起来。
因此需要对执行SQL 添加hint
select  /*+ gather_plan_statistics */   xxx

select * from table(dbms_xplan.display_cursor(null,null,'ADVANCED ALLSTATS LAST PEEKED_BINDS'));

对比执行计划,完全相同!
问题来了? 什么情况下执行计划相同,但是执行的时间却大幅度提升呢? Cache 内存?

> select o.object_name,count(*) blocks
from dba_objects o,v$bh bh
where o.object_id=bh.objd and o.owner in ('xx')
and o.object_name in('xx')
group by o.object_name;

通过在测试库执行两次相同的SQL 查询,耗时均需要45s ,然后生产环境执行SQL只需要13s;

在对比v$bh cache中的blocks的数量,

OBJECT_NAME BLOCKS
--------------------------
xx           1

生产环境

OBJECT_NAME BLOCKS
--------------------------
xx           4000

为什么这个SQL涉及的对象,查询2次都还没有放到cache中?

memory_max_target              0
memory_target 0
sga_max_size 564M !!! 测试环境 sga 560m ??? sql查询的一个表,单表大小1G,内存都不够。

既然明白了事情的原委,问题处理就很简单了!

alter system set memory_max_target=36g scope=spfile;
alter system set memory_target=36g scope=spfile;
alter system set sga_max_size=30g scope=spfile;


SYS> alter system checkpoint;
SYS> shutdown immediate;
SYS> startup

重启后,第一次执行45s, 第二次执行 19s 虽然比生产环境执行SQL 13s效率低,但是与最初相比,效率明显提升!

本次使用 memory auto自动管理方式,因此不需要明确指定 buffer cache的大小!   
sql执行效率提升一倍! 可以说cache 内存读>> 效率优于物理读,oracle设计复杂的内存组件就是基于这个cache 优于物理读。

Oracle-buffer cache过小导致SQL执行时间长的更多相关文章

  1. Oracle buffer cache与相关的latch等待事件

    buffer cache与相关的latch等待事件 1.buffer cache 2.latch:cache buffers lru chain 3.latch:cache buffers chain ...

  2. oracle buffer cache的基本原理

    Buffer cache 的原理 一. 1·)当一个服务器进程需要读数据到buffer cache中时,首先必须判断该数据在buffer 中是否存在,如果存在且可用,则获取该数据,根据lru算法在lr ...

  3. Oracle buffer cache

    Buffer Cache buffer cache 结构图 HASH链 ORACLE使用HASH算法,把buffer cache中每个buffer的buffer header串联起来,组成多条hash ...

  4. ORACLE性能优化- Buffer cache 的调整与优化

    Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的 free buffer waits事件. 下面将具 ...

  5. Buffer cache 的调整与优化

    Buffer cache 的调整与优化 -============================== -- Buffer cache 的调整与优化(一) --==================== ...

  6. [转载]Buffer cache的调整与优化

    Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的free buffer waits事件.下面将具体描 ...

  7. BUFFER CACHE之调整buffer cache的大小

    Buffer Cache存放真正数据的缓冲区,shared Pool里面存放的是sql指令(LC中一次编译,多次运行,加快处理性能,cache hit ratio要高),而buffer cache里面 ...

  8. 判断和调整library cache,data dictionary cache,buffer cache性能

    Oracle SGA是oracle的内存结构,存放着oracle通过oracle进程读写的内存数据.sga分为好多组件,比如shared pool,buffer cache,redo log buff ...

  9. 配置和使用buffer cache

    存放从磁盘读取的数据.排序和并行读不会使用buffer cache 可以从v$db_cache_advice或者buffer cache的命中率来检查buffer cache设置是否合理 查看v$db ...

随机推荐

  1. std::unordered_map与std::map

    前者查找更快.后者自动排序,并可指定排序方式. 资料参考: https://blog.csdn.net/photon222/article/details/102947597

  2. Mysql训练:where后不可以进行聚合函数的判断,而having可以进行聚合函数的判断

    力扣题目:查找重复的电子邮箱 编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱. +----+---------+ | Id | Email | +----+---------+ | ...

  3. el-input输入框的readonly属性

    readonly属性是Boolean类型,默认值为false.readonly值为true表示只读. <el-col :span="12"> <el-form-i ...

  4. Course2.1 Graph Paper Programming

    Overview 通过日常生活中的活动来体验程序算法,目标时能够将现实世界的场景与程序场景关联起来. Objective 抓住将现实世界问题转换为程序的难点: 你认为非常明确的指令在计算机看来可能还是 ...

  5. Python3.x 基础练习题100例(51-60)

    练习51: 题目: 学习使用 按位与(&) . 分析: 0&0=0; 0&1=0; 1&0=0; 1&1=1. 程序: if __name__ == '__ma ...

  6. 死磕Spring之IoC篇 - Bean 的创建过程

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  7. C#正则实现匹配一块代码段

    最近项目,生成聚合网关,但是生成的网关文件中,存在着不必要的代码段,比如一个类A,类B等 之前一直使用手动删除,这么做劳民伤财,浪费时间,考虑使用正则写一个工具实现自动删除. 正则写法: string ...

  8. MVC模式从Controller返回内容协商格式(Json或者Xml)

    WebAPI默认的返回格式Json,但是MVC是View,如果在MVC的控制器中,想要返回Json格式该怎么操作呢 在MVC的控制器中返回json数据只需要然会JsonResult而不是ActionR ...

  9. linux 设置系统时间

    第一种: 服务器date时间不准: root@mdy-zabbix2:~# date Fri Sep 28 09:58:56 UTC 2018 实际是下午6点 第一步:执行tzselect 第二步: ...

  10. influxDB安装部署及入门

    1.下载安装包,本文使用1.7.7版本 https://portal.influxdata.com/downloads/ 2.安装 yum localinstall influxdb-1.7.7.x8 ...