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 ...
随机推荐
- C语言代码复习笔记:第二章
输出星星 #include <stdio.h> void printStart( int num ) { ) { printf("*"); }; } int main( ...
- jQuery clearQueue
clearQueue()方法与clearQueue()方法结合: .clearQueue()可用于删除通过.queue()方法添加到通用jQuery序列的任何函数. 示例: <!DOCTYPE ...
- windows 2012授权模型
转自:http://www.aidanfinn.com/?p=13090 Remember that Microsoft licenses its servers at the physical le ...
- Eclipse远程连接HBase
在Eclipse下新建一个Map/Reduce项目,并将以下jar添加到Build path: 程序代码: package thathbase; import java.io.IOException; ...
- js 内置函数 内置对象
1.内置函数 Object Array Boolean Number String Function Date RegExp Error 2.内置对象 Date JSON
- electron vue 开发客户端程序
文档知识点 https://electronjs.org/docs/tutorial/about (1)Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Ma ...
- Webwork【07】文件上传下载
Web上传和下载应该是很普遍的一个需求,无论是小型网站还是大并发访问的交易网站.WebWork 当然也提供了很友好的拦截器来实现对文件的上传,让我们可以专注与业务逻辑的设计和实现,在实现上传和下载时顺 ...
- Java 基础【14】@注解
1.注解简介 JDK 1.5 中引入的 java.lang.annotation 包提供注解编程支持,可以让类在编译.类加载.运行时被读取,并执行相应的处理. 在 Java EE应用的时候,总是免不了 ...
- ssh出错 sign_and_send_pubkey: signing failed: agent refused operation
在服务器添加完公钥之后,ssh服务器然后报了这个错误 sign_and_send_pubkey: signing failed: agent refused operation 然后执行了以下命令才好 ...
- sqlserver 日志查看
sqlserve的ErrorLog文件有时候会碰到文件很大的情况,可能通过命令xp_readerrorlog 或 sp_readerrorlog 执行,可以加搜索文本或起止时间 -- 日志查看 --e ...