onstat -g mgm 命令:打印 MGM 资源信息

可以使用 onstat -g mgm 命令显示有关内存分配管理器(MGM)资源信息。

可以使用 onstat -g mgm 命令监视 MGM 如何协调内存使用和扫描线程。此命令读取共享内存结构并提供在命令执行时的精确统计信息。

语法:
onstat -g mgm 输出显示称作 quantum 的内存单位。memory quantum 代表内存单位,如下所示:
memory quantum = DS_TOTAL_MEMORY / DS_MAX_QUERIES
以下算式显示 onstat -g mgm 输出的值的 memory quantum
memory quantum = 4000 kilobytes / 31 
          = 129 kilobytes

数据库服务器根据分配内存的需求调整 quantum 的值。因此,onstat -g mgm 命令显示的 quantum 值并非一直精确。

scan thread quantum 总是等于 1

示例输出

图: onstat -g mgm 命令输出

            Memory Grant Manager (MGM) 
            --------------------------
            MAX_PDQPRIORITY:  100
            DS_MAX_QUERIES:    31
            DS_MAX_SCANS:      1048576
            DS_NONPDQ_QUERY_MEM: 128 KB
            DS_TOTAL_MEMORY:   4000 KB
            
            Queries:   Active     Ready   Maximum
            0         0        31 
            Memory:     Total      Free   Quantum 
            (KB)         4000      4000       128 
            
            Scans:      Total      Free   Quantum 
            1048576   1048576         1 
            
            Load Control:    (Memory)      (Scans)  (Priority)  (Max Queries)   (Reinit)
            Gate 1       Gate 2      Gate 3         Gate 4     Gate 5
            (Queue Length)          0            0           0              0          0
            
            Active Queries:  None 
            Ready Queries:  None 
            Free Resource        Average #        Minimum # 
            --------------    ---------------     --------- 
            Memory               0.0 +- 0.0           500
            Scans                0.0 +- 0.0          1048576 
            
            Queries              Average #        Maximum #    Total #
            --------------    ---------------     ---------    -------
            Active               0.0 +- 0.0             0          0
            Ready                0.0 +- 0.0             0          0
            
            Resource/Lock Cycle Prevention count:  0

输出描述

输出的第一部分显示 PDQ 配置参数的值。

输出的第二部分描述 MGM 内部控制信息。它包括四组的信息。第一组是 Queries

Active
当前正在执行的 PDQ 查询的数量
Ready
已准备好运行但数据库服务器由于装入控制原因而延迟查询执行的用户查询的数量
Maximum
数据库服务器允许处于活动状态的查询的最大数量。反映 DS_MAX_QUERIES 配置参数的当前值

下一组是 Memory

Total
可由 PDQ 查询使用的可用内存的 KB (DS_TOTAL_MEMORY 指定这个值)
Free
用于 PDQ 查询的当前未使用的内存的 KB
Quantum
在 memory quantum 中的内存的 KB

下一组是 Scans

Total
由 DS_MAX_SCANS 配置参数指定的扫描线程的总数
Free
当前可用于决策支持查询的扫描线程的数量
Quantum
在扫描线程量子中的扫描线程的数量

该部分输出的最后一组描述 MGM Load Control

Memory
正在等待内存的查询的数量
Scans
正在等待扫描的查询的数量
Priority
正在等待具有更高 PDQ 优先级的查询运行的查询的数量
Max Queries
正在等待查询 slot 的查询数量
Reinit
onmode -M-Q 命令之后,正等待正在运行的查询完成的查询的数量

输出的下一部分 Active Queries 描述 MGM 活动的和就绪的队列。这部分输出显示在每个入口等待的查询的数量:

Session
启动查询的会话的会话 ID
Query
与查询相关联的内部控制 block 的地址
Priority
分配给查询的 PDQ 优先级
Thread
向 MGM 注册查询的线程
Memory
当前分配给查询或为查询保留的内存量(单位是 MGM 页,即 8 KB)
Scans
有查询当前使用的扫描线程的数量,或者分配给查询的扫描线程的数量
Gate
查询正在该处等待的入口编号

输出的下一部分 Free Resource 提供 MGM 可用资源的统计信息。这个部分和最后部分的数值反映自系统初始化或自上次 onmode -Q-M-S 命令以来的统计信息。这部分输出包含以下信息:

Average
平均内存量和扫描数量
Minimum
最小可用内存量和扫描数量

输出的下一部分 Queries 提供关于 MGM 查询的统计信息:

Average
活动且就绪队列的平均长度
Maximum
活动且就绪队列的最大长度
Total
活动且就绪队列的总长度
Resource/Lock Cycle Prevention count
系统为了避免潜在的死锁而直接激活一个查询的次数。(数据库服务器可以察觉如果没有立即运行查询的话,其队列内一些查询什么时候可能发生死锁情况。)