Oracle-buffer cache过小导致SQL执行时间长
一、问题:客户反馈在生产库和测试库执行相同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执行时间长的更多相关文章
- Oracle buffer cache与相关的latch等待事件
buffer cache与相关的latch等待事件 1.buffer cache 2.latch:cache buffers lru chain 3.latch:cache buffers chain ...
- oracle buffer cache的基本原理
Buffer cache 的原理 一. 1·)当一个服务器进程需要读数据到buffer cache中时,首先必须判断该数据在buffer 中是否存在,如果存在且可用,则获取该数据,根据lru算法在lr ...
- Oracle buffer cache
Buffer Cache buffer cache 结构图 HASH链 ORACLE使用HASH算法,把buffer cache中每个buffer的buffer header串联起来,组成多条hash ...
- ORACLE性能优化- Buffer cache 的调整与优化
Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的 free buffer waits事件. 下面将具 ...
- Buffer cache 的调整与优化
Buffer cache 的调整与优化 -============================== -- Buffer cache 的调整与优化(一) --==================== ...
- [转载]Buffer cache的调整与优化
Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的free buffer waits事件.下面将具体描 ...
- BUFFER CACHE之调整buffer cache的大小
Buffer Cache存放真正数据的缓冲区,shared Pool里面存放的是sql指令(LC中一次编译,多次运行,加快处理性能,cache hit ratio要高),而buffer cache里面 ...
- 判断和调整library cache,data dictionary cache,buffer cache性能
Oracle SGA是oracle的内存结构,存放着oracle通过oracle进程读写的内存数据.sga分为好多组件,比如shared pool,buffer cache,redo log buff ...
- 配置和使用buffer cache
存放从磁盘读取的数据.排序和并行读不会使用buffer cache 可以从v$db_cache_advice或者buffer cache的命中率来检查buffer cache设置是否合理 查看v$db ...
随机推荐
- 2021-02:Teams开发平台更新概述
作为2021年工作计划的一部分,我会在每月的第三个星期五发布Teams开发平台的更新报告,给大家整理和讲解最新的平台功能,以及特色场景.这是第一篇文章,我会挑选截至到2月份一些重要的更新,以后每月的更 ...
- Windows 常用命令与快捷键
1.自选区截图Shift+win+s 2.全屏截图Prtsc 3.活动窗口截图Alt+Prtsc 4.新建文件夹Ctrl + Shift + N 5.返回上级目录Alt + 上方向键 6.后退到上一次 ...
- CSS中Position属性static、absolute、fixed、relative
在html中网页可以看成一个立体的空间,一个完整的页面是由很多个页面堆积形成的,如下图所示 CSS中Position属性有四个可选值,它们分别是:static.absolute.fixed.rel ...
- Java基本概念:方法
一.简介 描述: Java中方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合,它在类中定义,属于类的成员,包含于类或对象中. 方法在程序中被创建后,在其他使用了该方法的地 ...
- 正则表达式匹配${key}并在Java中使用
1.正则表达式匹配${key} \$\{([a-z]+)\} 能够匹配字符串中以${key}形式的文本(其中key为小写应为字母) .*\$\{([a-z]+)\}.* 可以用来检测文本中是否有${k ...
- idea更改包名无法加载主类解决
把工程下面的.idea目录下的workspace.xml里面的路径改成你最新的路径即可. <option name="SPRING_BOOT_MAIN_CLASS" valu ...
- 第35天学习打卡(输入框 TextField监听 简易计算器,组合+内部类回顾复习 画笔 鼠标监听 窗口监听 键盘监听)
1.输入框 TextField监听 package com.kuang.lesson02; import java.awt.*; import java.awt.event.ActionEven ...
- 剑指 Offer 09. 用两个栈实现队列 +java中栈和队列的使用
剑指 Offer 09. 用两个栈实现队列 题目链接 class CQueue { private Stack<Integer> sta1; private Stack<Intege ...
- HDOJ-1176(数塔问题变形)
免费陷阱 HDOJ-1176 一开始正向推的时候,一直wa,后来采用逆向推得到正确结果. 初始化的时候dp数组都初始化为0. #include<bits/stdc++.h> using n ...
- WebService和Web API 区别
WebService的特征: 1 基于SOAP协议的,数据格式为XML 2 只支持HTTP协议,只能部署在IIS上 3 不是开源的,但可以被任意一个了解XML的人使用 SOAP :简单对象访问协议Si ...