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 ...
随机推荐
- hadoop环境搭建与測试
搭建參看: http://blog.csdn.net/w13770269691/article/details/16883663/ 查看集群状态: [root@master bin]# hdfs df ...
- 循环插入oracle 存储过程
-- Create tablecreate table STUDENTS( name VARCHAR2(300), id NUMBER(11), city VARCHAR2(300), no VARC ...
- SpringBoot 启动错误搜集
Spring Boot:The Bean Validation API is on the classpath but no implementation could be found https:/ ...
- Spring Boot中Starter是什么
比如我们要在Spring Boot中引入Web MVC的支持时,我们通常会引入这个模块spring-boot-starter-web,而这个模块如果解压包出来会发现里面什么都没有,只定义了一些POM依 ...
- javascript编程思想
javascript编程开发修炼之道 提要文摘附注: 本文的核心内容是围绕javascript前端开发的编程技术要素,来深入地探讨编写高质量的javascript代码的方法.技巧.规范和最佳实践, ...
- Ant详解之-path、classpath和fileset
转自:http://www.cnblogs.com/itech/archive/2011/11/01/2231206.html 一 .<path/> 和 <classpath/> ...
- C#和网页js互调代码
C#和网页js互调代码 1.先写个网页放在主程序目录下:test.html <!DOCTYPE html> <html lang="en" xmlns=" ...
- MYSQL SELECT FOR UPDATE
问题说明: 最近遇到一个问题,多个WORKER同时向MYSQL数据库请求任务,如何实现互斥?例如: SELECT * FROM student WHERE id > 10 LIMIT 100; ...
- MYSQL优化优化再优化!
1.数据库设计和表创建时就要考虑性能 2.sql的编写需要注意优化 3.分区 4.分表 5.分库 .数据库设计和表创建时就要考虑性能 mysql数据库本身高度灵活,造成性能不足,严重依赖开发人员能力. ...
- kube-proxy源代码分析
摘要:假设你对kube-proxy的工作原理有一定的了解.本文基于kubernetes v1.5代码对kube-proxy的源代码文件夹结构进行了分析,并以iptables mode为例进行了完整流程 ...