内存之私有sql区和共享sql区

私有sql区来自UGA;共享sql区来自SGA

首先先来了解一下PGA的结构:

图为11g中PGA的结构图

可以分为三部分:Private SQL Area; Session Memory; SQL Work Areas

其中私有共享区,是存储在UGA中的,只有在非共享服务器模式下,才会储存在PGA中

private SQL area:Each session issuing a SQL statement has a private SQL area in its UGA. Each user that submits the same statement has a private SQL area pointing to the same shared SQL area. Thus, many private SQL areas in separate PGAs can be associated with the same shared SQL area.

私有sql区:每个会话发布sql时,会拥有一个sql私有区,指向共享sql区(注意是同样的语句提交时,指向)

Do not confuse a private SQL area, which is in the UGA, with the shared SQL area, which stores execution plans in the SGA. Multiple private SQL areas in the same or different sessions can point to a single execution plan in the SGA. For example, 20 executions of SELECT * FROM employees in one session and 10 executions of the same query in a different session can share the same plan. The private SQL areas for each execution are not shared and may contain different values and data.
不要把UGA中的私有sql区和SGA中的共享sql区混淆,多个私有sql区在同一个或不同会话中可以指向在SGA中的同一个执行计划,每次执行导致的私有sql区不能共享

下图是11g SGA的结构图

Shared SQL area :The database uses the shared SQL area to process the first occurrence of a SQL statement. This area is accessible to all users and contains the statement parse tree and execution plan. Only one shared SQL area exists for a unique statement.

如何判断sql是否相同,oracle会执行以下步骤:

1.检查共享池,判断在共享sql区是否存在语法和语义一样的语句

如果完全一样的存在,那么数据库使用共享sql区,来执行后续的实例中的语句

如果不存在,数据库会在共享池分配一个新的共享sql区。同样的依法,但是不同语义的会使用相应的子查询。

以上情况,用户的私有sql区都会指向包含语句和执行计划的共享sql区。

2. 在会话端,分配私有sql区

总结一下:一条sql执行后,会到共享sql区检查,是否有完全一致的sql存在,如果不存在,则在共享sql区分配新的区域。之后在会话段生成私有sql区,当该sql提交时,私有sql区会指向共享sql区(PS,我觉得还是有点问题,但是不知道哪里错了,关键指向后干了些什么)

posted on 2013-07-05 09:42 Ivo落班 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/archersun/p/3173072.html

内存之私有sql区和共享sql区相关推荐

  1. 11月26日:操作系统实验杂记 shmget(创建共享存储区) shmat(连接共享存储区) shmdt(断连共享存储区) shmctl(共享存储区控制)

    文章目录 函数语法介绍 1.创建共享存储区shmget 2.连接共享存储区shmat 3.断连共享存储区shmdt 4.控制共享存储区shmctl 示例程序代码 进程1代码 进程2代码 函数语法介绍 ...

  2. 【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )

    文章目录 一. Java 虚拟机内存模型 二. 程序计数器 ( 线程私有区 ) 三. 虚拟机栈 ( 线程私有区 ) 四. 本地方法栈 ( 线程私有区 ) 五. 方法区 ( 共享数据区 ) 1. 方法区 ...

  3. 共享SQL语句减少硬解析

    这篇文章是参考甲骨论老相老师所做的教学视频: http://v.youku.com/v_show/id_XMzkyMTczMTQ4.html 所做的学习笔记: 接上文: http://nvd11.bl ...

  4. 1、虚拟机内存管理、运行时数据区、线程共享区、Java堆、新生代、老年代、Eden区域分配、方法区、线程独占区、虚拟机栈

    1.Java虚拟机内存管理 1.1.运行时数据区[Runtime Data Area] 1.1.1.线程共享区 1.1.1.1.Java堆[heap] 1.1.1.1.1.新生代.老年代.Eden区域 ...

  5. aws rds监控慢sql_AWS RDS SQL Server的多可用区配置

    aws rds监控慢sql Amazon provides AWS RDS SQL Server as a managed relational database service. You can d ...

  6. sql 缓冲池_监视SQL Server中的内存文员和缓冲池分配

    sql 缓冲池 The following article applies to SQL Server versions 2008 + 以下文章适用于SQL Server 2008 +版本 Adequ ...

  7. 【体系结构】共享SQL的理解

    1.  共享 SQL 作用 SQL 在共享之后,就可以减少硬解析,硬解析会消耗很多资源. 2.  共享 SQL 概念 共享 SQL 是让 SQL 完全 相同.这样在 SQL 解析执行计划途中,会减少硬 ...

  8. oracle sub share pool简介以及 共享sql实现实质。

    oracle sub share pool简介以及 共享sql实现实质. 今天是2013-10-21,从上周五到现在已经三天没有研究oracle,感觉少了很多东西.现在开始继续挖掘oracle的内容 ...

  9. 《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一2.2 内部函数与操作

    2.2 内部函数与操作 实际上,在Oracle内部,执行计划的每一个数据源(Row Source)操作都与一个内部函数(qer<*>)相对应,而操作对象.谓词条件都是这些函数的参数.这些函 ...

最新文章

  1. PHP合并数组的方法
  2. Java基础看jvm,JAVA基础知识|java虚拟机(JVM)
  3. discuz云平台报调用远程接口失败的问题分析和解决
  4. 阿里百川与极客邦科技达成战略合作 Weex宣布开源
  5. 14 张Python数据科学速查表
  6. 封装(私有化成员变量,获取变量值)
  7. php 现代排序_这就是现代PHP的样子
  8. varchar2(100 char)是什么意思
  9. 氚云 表单前端代码-提交机制
  10. 影响因子在10的计算机杂志什么水平,国人无人发表的TOP期刊,影响因子翻倍,5分变10分,不收版面费!...
  11. dropbox 、tombstones、debuggred
  12. C语言中如何测量各种变量的长度
  13. FLANN C++ 使用
  14. 拼图游戏Canvas版
  15. simulink/stateflow 纯电动+4档变速箱动力性经济性仿真模型 包含vcu控制及换档控制模型,可实现最高车速 最大爬坡度 加速时间,能耗续航仿真
  16. Discovery studio使用之DNA建模
  17. Codeforces Round #715 (Div. 2) A. Average Height
  18. Cloud一分钟 |谷歌总裁李佳离职;三星将为5G网络投220亿美元;人人网6000万美元贱卖...
  19. android nfc驱动,移植NFC驱动到android系统
  20. [渝粤教育] 武汉学院 大学生心理健康教育 参考 资料

热门文章

  1. 中的枚举属性函数_对于 JavaScript 中循环之间的技术差异分析
  2. java mb单位转换_Java计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换)
  3. chips cope_Android P:Chips and ChipGroup
  4. Java中的原型设计模式
  5. portlet示例_Java Portlet示例教程
  6. testng 监听器_TestNG侦听器
  7. 学好C++能够从事哪些岗位?
  8. C++基础知识:fflush(stdin)的误区
  9. C++的冒泡排序法的原理是什么?
  10. 类的加载顺序(例题)