如何识别缓冲池中可用的哪些数据以及该数据与哪个事务相关?

时间:2018-12-30 11:39:39

标签: db2 db2-luw

当前可以看到我的DB2 10.5正在使用40 GB的可用内存,并且所有这些内存都已被大小为4K的缓冲池使用。能帮您确定以下要求的方法吗

  1. 识别热数据可用内存的方式和
  2. 内存中可用的交易数据及其大小 交易用于处理查询的内存。
  3. 数据访问的频率
  4. 哪些事务查询正在使用更多内存。

1 个答案:

答案 0 :(得分:0)

  1. 识别热数据可用内存的方式
  

db2pd -db mydb   -pages   摘要

上面的命令显示下表,其中包含所有缓冲池和对象页的摘要。

Summary info for all bufferpools:                                                                                                                      
BPID TbspaceID  ObjID      Total      Dirty      Permanent  Temporary  Data       Index      LongField  XMLData    SMP        LOB        LOBA       BMP  

您可以使用以下选择语句从此输出中解码表和索引:

-- Data pages
SELECT TABSCHEMA, TABNAME, PARTITIONOBJECTID
FROM SYSCAT.DATAPARTITIONS
WHERE TBSPACEID = <TbspaceID> AND PARTITIONOBJECTID = <ObjID>;

-- Index pages
SELECT I.TABSCHEMA, I.TABNAME, I.INDNAME
FROM SYSCAT.INDEXES I
JOIN SYSCAT.TABLES T ON T.TABSCHEMA = I.TABSCHEMA AND T.TABNAME = I.TABNAME
LEFT JOIN SYSCAT.INDEXPARTITIONS P ON P.INDSCHEMA = I.INDSCHEMA AND P.INDNAME = I.INDNAME
WHERE 
    COALESCE(P.INDPARTITIONTBSPACEID, I.TBSPACEID)     = <TbspaceID> 
AND COALESCE(P.INDPARTITIONOBJECTID, I.INDEX_OBJECTID) = <ObjID>;

您可能会认为所有这些页面都很“热”。

  1. 内存中有哪些事务数据以及该事务用于处理查询的内存大小

所有事务可能在缓冲池中使用相同的页面,并且没有有关哪个事务触及内存中某个特定页面的信息。
您可以从交易中获得以下指标:

您可以查看POOL_x_READS / POOL_x_WRITES / POOL_x_REQ指标以了解在缓冲池中触摸了多少数据,还可以查看x_SORT_x指标以了解事务对排序内存的使用。

  1. 数据访问的频率

在缓冲池中的页面上没有此类信息。

  1. 什么事务查询正在使用更多内存

与交易(或工作单元)相同,查询的统计信息可能如下: