一、SORT_AREA_SIZE和SORT_AREA_RETAINED_SIZE的区别
SQL> select emp.deptno, ename
2from emp, dept
3where emp.deptno = dept.deptno
4order by empno;
Execution Plan
----------------------------------------------------------
0SELECT STATEMENT Optimizer=CHOOSE
10SORT (ORDER BY)――――――――SORT_AREA_SIZE
21MERGE JOIN
32SORT (JOIN)――――――――SORT_AREA_RETAINED_SIZE
43TABLE ACCESS (FULL) OF 'DEPT'
52SORT (JOIN)――――――――SORT_AREA_RETAINED_SIZE
65TABLE ACCESS (FULL) OF 'EMP'
Statistics
----------------------------------------------------------
0recursive calls
0db block gets
14consistent gets
0physical reads
0redo size
478bytes sent via SQL*Net to client
503bytes received via SQL*Net from client
2SQL*Net roundtrips to/from client
3sorts (memory)
0sorts (disk)
3rows processed
SQL>
|
一个执行计划可以包含多个排序例,如上面的例子,其中包含了两个表的排序-合并联接,然后又执行ORDER BY子句的排序,所以,总共构成了三种排序。如果单个服务器正执行排序过程,那么它在执行ORDER BY排序时使用:
SORT_AREA_SIZE大小的区域(以字节为单位)用于活动排序
SORT_AREA_RETAINED_SIZE指定的区域用于联接排序
二、SORT_AREA_SIZE和SORT_AREA_RETAINED_SIZE的设置
在10g version中,如果是manul PGA管理模式下,alter session set sort_area_size和sort_area_retained_size要设两次才能生效。
SQL>alter session set sort_area_size= 500000000;
SQL>alter session set sort_area_size= 500000000;
对于parallel sort,设置两次还不能对slave进程生效,可以通过设置隐藏参数 _sort_multiblock_read_count使其生效
SQL>alter session set sort_area_size= 500000000;
SQL>alter session set “_sort_multiblock_read_count”=4;
我测试了正在使用的10203和10204版本,都可以重现
大家也可以试试自己的版本是不是有这一问题,测试步骤如下:
首先建一个test表,大约几十M吧。
测试过程如下:
我们系统上default sort_area_size=4M, sort_area_retained_size没有设,默认和sort_area_size一样
sqlplus xxxx/xxxx
SQL*Plus: Release 10.2.0.3.0 – Production on Sun Sep 27 08:25:09 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> select sid from v$mystat where rownum=1;
SID
———-
19975
SQL> !ora sesstat 19975 memory
NAME VALUE
————————————————————- ———-
session uga memory 200704
session uga memory max 203328
session pga memory 609024
session pga memory max 609024
workarea memory allocated 0
sorts (memory) 24
6 rows selected.
SQL> alter session set sort_area_size=500000000; — set to 500M
Session altered.
SQL> select count(*) from (select * from test order by 1,2,3,4,5,6);
COUNT(*)
———-
857152
SQL> !ora sesstat 19975 memory
NAME VALUE
—————————————————————- ———-
session uga memory 4337344
session uga memory max 4337344 — 可以看到这里使用的是默认的4M sort_area_size
session pga memory 5212192
session pga memory max 5212192
workarea memory allocated 0
sorts (memory) 24
6 rows selected.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options
sqlplus xxxxx/xxxx
SQL*Plus: Release 10.2.0.3.0 – Production on Sun Sep 27 08:26:50 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> select sid from v$mystat where rownum=1;
SID
———-
19975
SQL> !ora sesstat 19975 memory
NAME VALUE
—————————————————————- ———-
session uga memory 200704
session uga memory max 203328
session pga memory 609024
session pga memory max 609024
workarea memory allocated 0
sorts (memory) 24
6 rows selected.
SQL> alter session set sort_area_size=500000000;
Session altered.
SQL> / — 再设置一遍
Session altered.
SQL> select count(*) from (select * from test order by 1,2,3,4,5,6);
COUNT(*)
———-
857152
SQL> !ora sesstat 19975 memory
NAME VALUE
—————————————————————- ———-
session uga memory 57545920
session uga memory max 57545920
session pga memory 58019184 — 这里就是使用的我们设置的500M了
session pga memory max 58019184
workarea memory allocated 0
sorts (memory) 25
6 rows selected.
sort_area_retained_size 实验
sqlplus xxxx/xxxxx
SQL*Plus: Release 10.2.0.3.0 – Production on Sun Sep 27 08:47:09 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> alter session set sort_area_size=500000000;
Session altered.
SQL> show parameter sort
NAME TYPE VALUE
———————————— ———– ——————————
nls_sort string
sort_area_retained_size integer 0
sort_area_size integer 500000000
SQL> alter session set sort_area_retained_size=10000000;
Session altered.
SQL> select count(*) from (select * from test order by 1,2,3,4,5,6);
COUNT(*)
———-
857152
ora sesstat 19975 memory
NAME VALUE
—————————————————————- ———-
session uga memory 57548992
session uga memory max 57548992
session pga memory 58019184 — sort_area_size是500M,但是 sort_area_retained_size还是默认值
session pga memory max 58019184
workarea memory allocated 0
sorts (memory) 27
6 rows selected.
sqlplus xxxxx/xxxxxx
SQL*Plus: Release 10.2.0.3.0 – Production on Sun Sep 27 08:48:19 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> alter session set sort_area_size=500000000;
Session altered.
SQL> alter session set sort_area_retained_size=10000000;
Session altered.
SQL> alter session set sort_area_retained_size=10000000;
Session altered.
SQL> select count(*) from (select * from test order by 1,2,3,4,5,6);
COUNT(*)
———-
857152
SQL>ora sesstat 19975 memory
NAME VALUE
—————————————————————- ———-
session uga memory 10358720
session uga memory max 10358720
session pga memory 58001672 — 这里sort_area_retained_size就起作用了
session pga memory max 58001672
workarea memory allocated 0
sorts (memory) 25
6 rows selected.
设置的大小可以参考
SQL>select name,value from v$sysstat where name like 'sort%';
分享到:
相关推荐
4.22 SORT_AREA_RETAINED_SIZE 8 4.23 PGA_AGGREGATE_TARGET 8 4.24 WORKAREA_SIZE_POLICY 9 4.25 SQL_TRACE 9 4.26 TIMED_STATISTICS 9 4.27 DB_CACHE_SIZE 9 4.28 DB_KEEP_CACHE_SIZE 9 4.29 DB_RECYCLE_CACHE_...
说明: 为以下各项指定命名约定, 包括日期和星期的编号, 默认日期格式, 默认小数点字符和组分隔符, 以及默认的 ISO 和本地货币符号。可支持的区域包括美国, 法国和日本。有关所有区域的信息, 请参阅 Oracle8i ...
项目文件和源代码位于文件夹retained_undistort_image 。 源代码位于文件main.cpp 。 使用MS Visual Studio作为IDE,这需要一些(即OpenCVinclude / lib)才能生成代码。代码说明我们实现了两种方法来产生不失真的...
retained with each upgrade of the system with a new version. The DFMPE concept introduces a novel approach that may require getting used to, but once achieved, the benefits are numerous. Among the ...
13.1.3 sort_area_retained_size 333 13.1.4 pga_aggregate_target 334 13.1.5 实际I/O 337 13.2 排序的成本 339 13.3 比较 343 13.4 归并连接 346 13.4.1 归并机制 347 13.4.2 无最初排序的归并连接 351 13.4.3 ...
Direct3D Retained Mode DLL
保留片段实现一个可以完成大部分艰苦工作的保留片段。... find(getFragmentManager(), TAG_RETAINED_FRAGMENT )) != null ) { retrievedObject = fragment . get( TAG_RETAINED_FRAGMENT_ITEM ); }
Title: Outlook 2003 SideBar V2.02 Alpha ...The author may have retained certain copyrights to this code...please observe their request and the law by reviewing all copyright conditions at the above URL.
保留:大规模的活动和保留跟踪 使用Redis位图,可以轻松地按日,小时或分钟的间隔按比例跟踪活动和保持度。 要求 Ruby 2.0.0或更高版本 雷迪斯 安装保留 ...Retained的默认设置是在redis://localhost:63
swapper_space is a fiction, retained to simplify the path through vmscan s shrink_page_list.
保留内含子新抗原管道 ... 该软件包的输出(此仓库中的ir $ flat文件,示例文件run_kma_example.R和kma_output_file_example.csv)将直接输入到该管道。 更改外壳程序脚本getNeoantigenBinders.sh中的路径(文件
RABBITMQ_SCHEDULER_BIND_TYPE and RABBITMQ_DISTRIBUTION_BUFFER_SIZE now can be set via rabbitmq-env.conf. GitHub issue: rabbitmq-server#1338 Shovel Management Plugin Bug Fixes Passwords in source ...
****************************...** THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE AT ALL TIMES. *******************************************************************************
使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对象的 Retained Size,查看是谁在阻止垃圾回收,并自动生成一个 Leak Suspect(内存泄露可疑点)报表。 Memory ...
Effects of silicon (Si) content on the stability of retained austenite and temper embrittlement of ultrahigh strength steels were in-vestigated using X-ray diffraction (XRD),transmission electron ...
always && mCurItem == item && mItems.size() != 0) { setScrollingCacheEnabled(false); return; } if (item ) { item = 0; } else if (item >= mAdapter.getCount()) { item = mAdapter....
OC-Cpp 1.在object-c++类中调用c++类 1)ViewController.m--->ViewController.mm 2)#import "OcCallCpp.h" ...4)持有Oc对象,__bridge_retained 5)调用Oc对象方法,__bridge 6)释放Oc对象,__bridge_transfer
为了确保在适当的时间保留和释放Objective-C对象,我们可以使用Id结构。 要实施别名规则,可以拥有或共享一个Id ; 如果它是拥有的,则意味着Id是对该对象的唯一引用,因此可以可变地取消引用。 拥有的Id可以降级...
1、MemoryAnalyzer使用...象的 Retained Size,查看是谁在阻止垃圾回收,并自动生成一个 Leak Suspect(内存泄露可疑点) 报表。 Memory Analyzer 有两种使用方式: 一种是下载独立版本的 MAT, 一种是使用嵌入到 Eclip