内存分配管理器 (MGM) 是一个数据库服务器组件,它在决策支持查询中协调内存、CPU 虚拟处理器 (VP)、磁盘 I/O 以及扫描线程的使用。MGM 使用 DS_MAX_QUERIES、DS_TOTAL_MEMORY、DS_MAX_SCANS 和 MAX_PDQPRIORITY 配置参数来确定这些可分配给决策支持查询的 PDQ 资源的数量。
有关这些配置参数的更多信息,请参阅配置对内存利用率的影响。
当您的数据库服务器系统频繁地使用 OLTP,并且发现性能在下降时,您可以使用 MGM 工具限制落实给决策支持查询的资源。在非峰值时段,您可将资源的较大部分指定给并行处理,这将实现决策支持查询的更高的吞吐量。
MGM 为排序、散列连接和处理 GROUP BY 子句等活动的查询分配内存。决策支持查询使用的内存量不能超过 DS_TOTAL_MEMORY。
内存份额 = DS_TOTAL_MEMORY / DS_MAX_QUERIES
例如,如果 DS_TOTAL_MEMORY 为 12 MB,而 DS_MAX_QUERIES 为 4,那么份额为 3 MB (12/4)。这样,在这些值都生效的情况下,一个内存份额等于 3 兆字节。一般而言,份额越小,内存分配效率越高。您可以经常通过增加 DS_MAX_QUERIES 以减少一个内存份额的大小来提高并发查询的性能。
要监视 MGM 分配的资源,请运行 onstat -g mgm 命令。该命令只显示当前使用的内存量;而不显示已分配的内存量。 有关此命令的更多信息,请参阅使用 onstat -g mgm 命令来监视 MGM 资源。
MGM 还根据 DS_MAX_SCANS 和 DS_MAX_QUERIES 参数的值为每个查询分配最大数目的扫描线程。
scan_threads = min (nfrags, DS_MAX_SCANS * (pdqpriority / 100) * (MAX_PDQPRIORITY / 100) )
有关这些数据库服务器配置参数中的任何一个的更多信息,请参阅配置对内存利用率的影响。
PDQPRIORITY 环境变量和 SQL 语句 SET PDQPRIORITY 为查询请求一定百分比的 PDQ 资源。您可以使用 MAX_PDQPRIORITY 配置参数来限制查询可获取的一定百分比的请求资源,并且限制决策支持查询对 OLTP 处理的影响。有关更多信息,请参阅限制决策支持查询的优先级。