调整 DSS 和 PDQ 查询的内存量

可以估计要分配给决策支持 (DSS) 查询的共享内存量。然后如果必要,可以调整 DS_TOTAL_MEMORY 配置参数(其指定可用于 PDQ 查询的内存量)的值。

使用以下公式作为估计分配给 DSS 查询的共享内存量的开始点:
DS_TOTAL_MEMORY = p_mem - os_mem - rsdnt_mem - 
                  (128 kilobytes * users) - other_mem 
p_mem
表示主机上可用物理内存的总量。
os_mem
表示操作系统的大小,包括缓冲区高速缓存。
resdnt_mem
表示 GBase 8s 常驻共享内存的大小。
users
是在 NETTYPE 配置参数中指定的期望用户(连接)的数量。
other_mem
用于其他(非 GBase 8s)应用程序的内存大小。

从该公式得到的 DS_TOTAL_MEMORY 值只充当一个开始点。要得到符合配置的值,您必须监视调页和换页。 (使用随操作系统提供的工具来监视调页和换页。)页面调度增加时,将降低 DS_TOTAL_MEMORY 的值,以便 OLTP 工作量处理可以继续。

分配给单个并行数据库查询的内存量取决于许多系统因素,但通常情况下,分配给单个并行数据库查询的内存量与以下公式成比例:
memory_grant_basis = (DS_TOTAL_MEMORY/DS_MAX_QUERIES) *
                              (PDQPRIORITY / 100) *
                              (MAX_PDQPRIORITY / 100)
但是,如果服务器实例的所有数据库上当前执行的查询需要的内存多于平均分配的估计值,那么其他查询可能将溢出到磁盘或者等待,直至并发查询完成了执行以及释放了用于运行查询的足够内存资源。以下备选公式直接估计用于单个查询的 PDQ 内存:
memory_for_single_query = DS_TOTAL_MEMORY  *
                              (PDQPRIOIRTY / 100) *
                              (MAX_PDQPRIORITY / 100)