快照监视器自描述数据流

在使用 db2GetSnapshot API 捕获快照之后,API 以自描述数据流的形式返回快照输出。 自描述数据包括数据属性,例如元素名称和大小。

图1 显示了数据流的结构, 表1 提供了可能返回的逻辑数据组和监控元素的一些示例。
备注 :示例和表格中的标识符使用描述性名称。 在实际数据流中,将在这些名称前加上 SQLM_ELM_ 前缀。 例如,COLLECTED 在快照监视器输出中将显示为 SQLM_ELM_COLLECTED。 在实际数据流中,将在类型前加上 SQLM_TYPE_ 前缀。 例如,HEADER 在数据流中将显示为 SQLM_TYPE_HEADER。
图 1。 快照监视器数据流
快照监视器自描述数据流
  1. 每个逻辑数据组以指示其大小和名称的头开始。 此大小不包括头本身占用的数据量。
  2. 已收集头中的大小返回快照的总大小。
  3. 其他头中的大小元素指示该逻辑数据组中的所有数据的大小,包括所有下级分组。
  4. 监视元素信息在逻辑数据组头后面,并且也是自描述格式。
表 1. 样本快照数据流
逻辑数据组 数据流 描述
collected
1000
标题
已收集
快照数据的大小(以字节计)。
指示逻辑数据组的开头。
逻辑数据组的名称。
4
u32bit
server_db2_type
sqlf_nt_server
此监视元素中存储的数据的大小。
监视元素类型 - 不带符号的 32 位数字。
收集的监视元素的名称。
此元素的已收集值。
2
u16bit
node_number
3
此监视元素中存储的数据的大小。
监视元素类型 - 不带符号的 16 位数字。
收集的监视元素的名称。
此元素的已收集值。
db2
200
标题
db2
快照中级别数据部分的大小。
指示逻辑数据组的开头。
逻辑数据组的名称。
4
u32bit
sort_heap_allocated
16
此监视元素中存储的数据的大小。
监视元素类型 - 不带符号的 32 位数字。
收集的监视元素的名称。
此元素的已收集值。
4
u32bit
local_cons
3
此监视元素中存储的数据的大小。
监视元素类型 - 不带符号的 32 位数字。
收集的监视元素的名称。
此元素的已收集值。
. . .
. . .
appl
100
标题
应用
快照中的应用程序元素数据的大小。
指示逻辑数据组的开头。
逻辑数据组的名称。
4
u32bit
locks_held
3
此监视元素中存储的数据的大小。
监视元素类型 - 不带符号的 32 位数字。
收集的监视元素的名称。
此元素的已收集值。
. . .
. . .
agent
50
标题
代理
应用程序结构的代理程序部分的大小。
指示逻辑数据组的开头。
逻辑数据组的名称。
4
u32bit
agent_pid
12
此监视元素中存储的数据的大小。
监视元素类型 - 32 位数字。
收集的监视元素的名称。
此元素的已收集值。
. . .
. . .

db2GetSnapshot() 例程在用户提供的缓冲区中返回自描述格式快照数据。 将在与要捕获的快照类型相关联的逻辑数据分组中返回数据。

快照请求返回的每一项都包含指定大小和类型的字段。 该字段可用来对返回的数据进行语法分析。 字段的大小还可用来跳过逻辑数据组。 例如,要跳过数据库记录,需要确定数据流中的字节数。 使用以下公式来计算要跳过的字节数:
  size of the db2 logical data grouping + sizeof(sqlm_header_info)