您的位置:首页 > 数据库

DB2中有关排序内存的三个参数:SORTHEAP, SHEAPTHRES_SHR和SHEAPTHRES

2016-05-19 15:28 741 查看
DB2中有关排序内存的三个参数:SORTHEAP, SHEAPTHRES_SHR和SHEAPTHRES

在规定DB2的排序操作可用的内存时,会考虑3个参数,现在对这3个参数做一个梳理。

首先一点,您需要了解到排序是分为共享排序(在数据库共享内存中排序)和私有排序(在agent的私有内存中排序)。

1.)SORTHEAP:这个规定了每个排序操作可用的内存,无论是私有排序、还是共享排序。 以下是信息中心的说明:

如果排序为专用排序,那么此参数将影响代理程序专用内存。如果排序为共享排序,那么此参数将影响数据库共享内存。每个排序都有一个独立的排序堆,该排序堆由数据库管理器根据需要分配。此排序堆是将数据排序的区域。

如果要设置SORTHEAP为automatic,则必须同时满足以下条件:

DBM 参数 sheapthres 设为 0 

self_tuning_mem 配置参数设为 ON

//在满足上面两个条件的前提下,只要SHEAPTHRES_SHR设置为automatic,那么sortheap就会自动调整

2.)SHEAPTHRES_SHR:对排序内存使用者每次可使用的数据库共享内存总量的软限制,也就是说,限制了总的数据库共享排序内存的大小

3.) SHEAPTHRES: 指定了私有排序在任何时刻可以消耗的内存总量在实例范围内的软限制。 

那什么时候使用共享排序,什么时候时候私有排序呢?

如果这个SHEAPTHRES参数是非0值,那么就不会使用共享排序(SHEAPTHRES_SHR这个参数就没有意义了),但有以下例外:

如果启用了内部分区并行性(intra-partition parallelism)或者集中器(concentrator),那么当DB2断定共享排序比私有排序更有效时,DB2就会选择执行共享排序。如果执行共享排序,那么就会在数据库共享内存中分配用于这种排序的排序堆。用于共享排序的最大内存量是由sheapthres_shr数据库参数指定的。这是对共享排序在任何时刻可以消耗的内存总量在数据库范围内的硬限制。当达到这个限制时,请求排序的应用程序将收到错误SQL0955(rc2)。之后,在共享内存总消耗量回落到低于由
sheapthres_shr指定的限制之前,任何共享排序内存的请求都得不到允许。

参考资料:

DB2排序的监控与调优

DB2内存模型

信息中心关于这三个参数的说明:

SORTHEAP

SHEAPTHRES_SHR

SHEAPTHRES
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  DB2 数据库