一、问题:客户反馈在生产库和测试库执行相同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 优于物理读。

最新文章

  1. easyui表格的增删改查
  2. Quick Cocos 旋转子弹的实现中我学到的
  3. html基本的内容
  4. HDU2102 A计划
  5. mysql存储过程出现OUT or INOUT argument 10 for routine
  6. 字符编解码的故事–ASCII,ANSI,Unicode,Utf-8区别(转)
  7. [Locked] Flip Game I & II
  8. poj 2503 Babelfish(Map、Hash、字典树)
  9. 王佩丰第2讲-excel单元格格式设置 笔记
  10. java 后台代码调用接口
  11. Java单例模式的5种实现方式
  12. JNI实战(二):Java 调用 C
  13. 【转载】网站服务器运维记实:阿里云1核2G突发性能t5服务器突然变得卡顿
  14. 当鼠标经过表格数据行时颜色不同且奇偶行颜色也不同 (纯CSS)
  15. Spring Boot 调用 MongoRepository时报org.springframework.beans.factory.NoSuchBeanDefinitionException错误的解决办法
  16. linux driver ------ 三星公司uboot模式下更改分区(EMMC)大小fdisk命令 ------ iTOP4412 开发板烧写
  17. Django项目之cookie+session
  18. QT 5.4.1 for Android Windows环境搭建
  19. c# 线程池:开启10个线程运行Fibonacci,并在所有线程运行完后,得出结果。
  20. javascript中的2个感叹号的用法

热门文章

  1. django学习-13.通过pk值手动设置数据表主键
  2. C++算法代码——和为给定数
  3. 1100 Mars Numbers——PAT甲级真题
  4. 2021 年学习 React 的所需要的 JavaScript 基础
  5. Jquery hover鼠标经过时弹出div动态提示语
  6. 面试系列二:精选大数据面试真题JVM专项-附答案详细解析
  7. “蚂蚁牙黑”太火,想玩就用ModelArts做一个!
  8. Kubernetes Container lifecycle hooks
  9. 剑指 Offer 48. 最长不含重复字符的子字符串 + 动态规划 + 哈希表 + 双指针 + 滑动窗口
  10. Typora学习