sheapthres_shr -“共享排序的排序堆阈值”配置参数
此参数表示针对可用于基于排序堆的操作的共享排序内存预留总量的软限制。
- 配置类型
- 数据库
- 参数类型
- 可联机配置(需要数据库连接)
- 可按成员配置 Db2 pureScale® 环境和分区数据库环境中可按成员配置。
- 传播类
- 立即
- 缺省值 [范围]
- 32 位平台
- 自动 [250 - 524 288 ]
- 64 位平台
- AUTOMATIC [250 - 2 147 483 647]
- 计量单位
- 页 (4 KB)
- AUTOMATIC
AUTOMATIC 设置用于启用 sheapthres_shr 参数的自调优,即,允许 STMM 在工作负载需求更改时动态调整可用的共享排序内存总大小。 仅在缺省 共享排序内存模型 和
SELF_TUNING_MEM = ON下有效。 否则,底层已配置值反映固定值。启用 sheapthres_shr 参数的自调优后,手动更新底层已配置值的任何尝试都是临时的,因为此设置仍由 STMM 调整。
如果 wlm_admission_ctrl confiugraion 参数设置为 YES ,那么无法在 sheapthres_shr 配置参数上指定 AUTOMATIC 设置。 如果尝试这样做,那么将返回内容为 SQL1668N RC=12 的 sqlcode。
虽然可以在 sheapthres_shr 参数设置为固定值时对 sortheap 配置参数启用自调整,但如果 sheapthres_shr 参数设置为 AUTOMATIC,那么 sortheap 无法设置为固定值。 sheapthres_shr 更新为 AUTOMATIC 时,sortheap 参数也会更新为 AUTOMATIC 设置。 当 sheapthres_shr 参数设置为 AUTOMATIC 时,任何将 sortheap 参数更新为固定值的尝试都将失败,并返回错误消息。
设置为 AUTOMATIC 时,将启用 sheapthres_shr 的 STMM 自调优以符合其他配置需求。 必须符合以下条件才允许进行 sheapthres_shr 的自调优:- 已启用 STMM (
SELF_TUNING_MEM=ON)。 - 已启用 共享排序内存模型 (sheapthres 设置为 0)。
- sortheap 参数设置为 AUTOMATIC。
- 未设置
DB2_WORKLOAD=analytics。 - 对于分区数据库环境,数据库已显式激活。
不支持对访问按列组织的表的工作负载进行 sort 参数的自调优,并且会在 DB2_WORKLOAD =ANALYTICS 时禁用此自调优。 在此类情况下,将 sheapthres_shr 参数的值设置为固定值而不是 AUTOMATIC,否则,可能会降低性能或出现内存不足的情况。 DB2_WORKLOAD 注册表变量的值设置为 ANALYTICS 时,无法将 sheapthres_shr 参数设置为 AUTOMATIC,且 DB2 配置顾问程序会自动配置 sheapthres_shr 参数的固定值。
- 已启用 STMM (
- 排序
- 散列连接
- 索引 AND 运算
- 块索引 AND 运算
- 内存中的表
- 合并连接
- 标量聚集
- 部分提前相异运算和提前聚集运算
- 表队列
- 散列 GROUP BY
- 按列组织的数据处理
sortheap 参数设置计算每个运算的最大内存使用量,sheapthres_shr 参数设置计算对每个数据库每个成员的排序内存使用者可用的整体内存。 sheapthres_shr 参数计算可用整体内存,方法是在数据库上的所有活动请求的总预留量达到 sheapthres_shr 值时减少允许的排序预留量。 如果所请求总预留量达到 sheapthres_shr 值,那么只允许最低预留量,并且性能可能下降。 如果总预留量达到 sheapthres_shr 值的 1.25 倍,那么针对排序内存的请求可能被拒绝并且会向应用程序返回错误 (SQL0955C)。
- 共享排序内存模型是缺省模型,每当 sheapthres = 0 时生效。 sheapthres 设置计算专用排序模型的调整,设置 0 将禁用专用排序内存。 在共享排序模型下,所有 sortheap 分配都来自共享排序堆 (sheapthres_shr) ,这是数据库共享内存 (database_memory) 的一部分。 共享排序内存模型是唯一可以进行 sortheap 和 sheapthres_shr 的 STMM 调整的模型。
- 专用排序内存模型
- 每当 sheapthres 不等于零并且配置未启用共享排序内存时,专用排序内存模型生效。 在专用排序内存模型下,sortheap 分配仅从专用内存进行。 只需要共享排序内存的操作无效并且返回错误。 在此模型下,不会进行 STMM 排序调整。
- 混合排序内存模型
- 每当 sheapthres 不等于零但配置指示共享排序内存对某些操作可用时,混合排序内存模型生效。 不需要共享排序内存的操作是从专用内存分配的。 在此模型下,不会进行 STMM 排序调整。
监视
有许多监视元素可用。
- ACTIVE_SORTS
- TOTAL_SECTION_SORT_TIME
- TOTAL_SECTION_SORT_PROC_TIME
- TOTAL_SECTION_SORTS
- TOTAL_SORTS
- POST_THRESHOLD_SORTS(用于共享排序)
- POST_THRESHOLD_PEDS
- POST_THRESHOLD_PEAS
- POST_SHRTHRESHOLD_HASH_JOINS(用于共享排序)
- POST_THRESHOLD_HASH_GRPBYS
- POST_THRESHOLD_OLAP_FUNCS
- SORT_OVERFLOWS
- TQ_SORT_HEAP_REJECTIONS
- SORT_HEAP_ALLOCATED(共享排序预留量)
- SORT_SHRHEAP_TOP(共享排序预留量的上限)
SORT_HEAP_ALLOCATED 和 SORT_SHRHEAP_ALLOCATED 监视元素反映预留量请求,而不是分配的实际内存量。 通常操作不会完全分配全部的所请求预留量。
select SORT_SHRHEAP_ALLOCATED, SORT_SHRHEAP_TOP from table (MON_GET_DATABASE (null))SORT_SHRHEAP_ALLOCATED SORT_SHRHEAP_TOP
---------------------- --------------------
128411 396405select memory_pool_used, memory_pool_used_hwm
from table (mon_get_memory_pool(null,null,null))
where memory_pool_type='SHARED_SORT'MEMORY_POOL_USED MEMORY_POOL_USED_HWM
----------------- --------------------
140574 140574单个数据库上运行的所有应用程序只有一个共享排序内存池。