sort_area_size,sort_area_retained_size
sort_area_size
oracle不建议设置sort_area_size参数。除非实例被配置成了共享服务器模式。默认值已经足够满足大多数OLTP系统。如果是OLAP、批任务、创建大的索引,可能需要作出相应的调整。
oracle建议通过设置pga_aggregate_size后自动配置sql工作区的大小。
sort_area_size参数指定了oracle用于排序操作的最大可用内存。排序结束后,在返回数据行之前,oracle会释放所有分配给sort操作的内存,但是不会释放sort_area_retained_size设定的内存。在返回所有行之后,再释放这部分内存。
增加sort_area_siz,可以提升大排序操作的效率。
一个查询中的每个排序操作最多可以使用到sort_area_size指定的内存大小,一个查询中可能有多个排序操作。如果是并行查询,每个并行奴隶进程最多可以使用到sort_area_size指定大小的内存。
sort_area_size的内存,也可以用于插入和更新位图索引。如果设置合适,可以使得每个DML操作只更新一次位图段,即使位图段中被更新的行大于一行。
sort_area_size设置比较大的话,可以支持更多的内存中排序。如果排序内容超出排序内存,便会借助磁盘完成操作。
sort_area_retained_size
该参数默认是0,即动态分配。如果没有显式设置该参数,oracle通常使用参数sort_area_size。
oracle不建议设置sort_area_retained_size参数。除非实例被配置成了共享服务器模式。oracle建议通过设置pga_aggregate_size后自动配置sql工作区的大小。
sort_area_retained_size参数被保留下来,只是为了向后兼容。
排序操作完成后,sort_area_retained_size的值表明从UGA中获取了多少的内存用于排序。当排序区域中的数据被读取结束后,这部分内存会被释放还给UGA,但是不会还给操作系统。
oracle可能会为每个查询分配多个排序空间,但通常每次只会有一个或两个排序操作发生,即使是很复杂的查询。有时也会有例外,需要其他排序操作。不过每个排序都有自己的排序内存空间。
若使用共享服务器模式,sort_area_retained_size从SGA中分配(UGA在SGA中),直到达到sort_area_retained_size的最大值;sort_area_size-sort_area_retained_size的差值从PGA中分配。
二者的关系
当在内存中执行sort的时候,内存按chunks进行分配,能分配的最大值是sort_area_size的值。
每分配一个chunk,都会检查已分配的内存值是否小于sort_area_retained_size的值。如果小于,就分配内存,且分配的内存在用户调用期间一直存在;如果已分配的内存大于sort_area_retained_size的值,也分配内存,只是在用户调用结束后,该部分内存就变成free状态的内存。
对于sort操作,first fetch(排序真正发生)会使用所有的sort_area_size,对于多出sort_area_retained_size部分的内存在fetch结束后就被释放。之后的fetch操作会继续使用sort_area_retained_size内存,直到游标被关闭,才会释放sort_area_retained_size的内存。
sort_area_retained_size的内存来源于UGA。
sort_area_size,sort_area_retained_size的更多相关文章
- sort_area_retained_size之tom解释
sort_area_retained_size 摘录一段asktom中tom的解释,对sort内存分配的方式进行了描述: it will allocate up to sort_area_retain ...
- 关于Oracle的性能调整(一)
Oracle Tuning的一些总结 关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比如SGA.PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化 ...
- ocp 1Z0-043 61-130题解析
61. You are working in an online transaction processing (OLTP) environment. You realize that the sal ...
- ORACLE数据库学习之数据库的优化
数据库的优化 概述 影响数据库性能的因素包括:系统.数据库.网络. 数据库的优化包括:优化数据库磁盘I/O.优化回滚段.优化Rrdo日志.优化系统全局区.优化数据库对象. 监控数据库的性能: 在 ...
- Oracle Tuning (Oracle 性能调整)的一些总结
Oracle Tuning (Oracle 性能调整)的一些总结 Oracle Tuning (Oracle 性能调整)的一些总结关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库 ...
- UGA,PGA
tom认为UGA不包含 sort工作区,所以下面的图都是错误的 The UGA is, in effect, your sessions state. It is memory that your ...
- Oracle DBA面试突击题
一份ORACLE DBA面试题 一:SQL tuning 类 1:列举几种表连接方式 答: Oracle的多表连接算法有Nest Loop.Sort Merge和Hash Join三大类,每一类又可以 ...
- Oracle内存全面分析
Oracle内存全面分析 Oracle的内存配置与oracle性能息息相关.而且关于内存的错误(如4030.4031错误)都是十分令人头疼的问题.可以说,关于内存的配置,是最影响Oracle性能的配置 ...
- 【Oracle】体系结构
1. 理解实例和数据库 ☞ 实例是一组后台进程和共享内存 ☞ 数据库是磁盘上存储的数据集合 ☞ 实例“一生”只能装载并打开一个数据库 ☞ 数据库可以由一个或多个实例(RAC)装载和打开 [oracle ...
随机推荐
- 浅谈压缩感知(九):正交匹配追踪算法OMP
主要内容: OMP算法介绍 OMP的MATLAB实现 OMP中的数学知识 一.OMP算法介绍 来源:http://blog.csdn.net/scucj/article/details/7467955 ...
- 删除数据库mysql
drop命令用于删除数据库. drop命令格式:drop database <数据库名>; 例如,删除名为 xhkdb的数据库:mysql> drop database xhkdb; ...
- myeclipse单元测试
步骤:1.新建new-other 2.选择Junit Test Case 3.注意红线圈出部分 4.选择需要测试的方法5.Finish后出现如下 示例代码: package com.jrgc.dao; ...
- thick置备和 thin置备,克隆,模板和快照
共享shared VMDK和共享RDM实验,参见http://wenku.it168.com/d_000773128.shtml 假如你有一个磁盘是100G的虚拟机,磁盘格式是厚置备,即Thick,当 ...
- 002-Go通过ioutil 读写文件
1.读取文件内容 package main import( "io/ioutil" "fmt" ) func main(){ b,err := ioutil.R ...
- springboot 注解版案例
1.dao层 /** * 查询列表 * @param dataRequest * @return */ @SelectProvider(type = CuiShouSqlProvider.class, ...
- C++ 推断一棵二叉树是否对称
一棵二叉树对称,就是说它假设以根为轴,翻转过去一样.例如以下图所看到的,以虚线为轴.把左边翻转到右边,各顶点及顶点中的值一一相应. watermark/2/text/aHR0cDovL2Jsb2cuY ...
- 深入理解JVM(三)——垃圾收集策略具体解释
Java虚拟机的内存模型分为五个部分.各自是:程序计数器.Java虚拟机栈.本地方法栈.堆.方法区. 这五个区域既然是存储空间,那么为了避免Java虚拟机在执行期间内存存满的情况,就必须得有一个垃圾收 ...
- SpringCloud服务消费者第一次调用出现超时问题的解决方案
在第一次访问服务消费者的时候(消费者去调用服务提供者服务)会出现如下异常: com.netflix.hystrix.exception.HystrixRuntimeException: TestSer ...
- SpringCloud中eureka配置心跳和剔除下线的服务的时间
在默认的springCloud中eureka注册中心在服务下线时表现的非常不灵敏,用惯了dubbo的zk注册中心表示很不习惯,eureka设计的本意是在服务不会频繁上下线和网络稳定的内网,这种设计在生 ...