计算 DB2 pureScale 环境中的缓冲池命中率
计算 DB2 pureScale实例的缓冲池命中率可帮助您了解是否有机会调整缓冲池以提高 I/O 效率。
开始之前
过程
要计算缓冲池命中率,请执行以下步骤:
示例
- 示例 1:查找所有成员中的整体命中速率
此示例与上一个过程中显示的示例类似,只是它使用聚集函数来提供所有成员中的整体命中速率。
结果:SELECT VARCHAR(BP_NAME,20) AS BP, SUM(POOL_DATA_GBP_L_READS) AS POOL_DATA_GBP_L_READS, SUM(POOL_DATA_GBP_P_READS) ASPOOL_DATA_GBP_P_READSFROM TABLE(MON_GET_BUFFERPOOL('',-2)) GROUP BY BP_NAMEBP POOL_DATA_GBP_L_READSPOOL_DATA_GBP_P_READS-------------------- --------------------- --------------------- IBMDEFAULTBP 6550198 1646347 IBMSYSTEMBP16K 0 0 IBMSYSTEMBP32K 0 0 IBMSYSTEMBP4K 0 0 IBMSYSTEMBP8K 0 0 5 record(s) selected.- 示例 2:确定所有数据、索引和 XML 存储器对象 (XDA) 页的 GBP 命中率
要计算所有数据、索引和 XDA 页的 GBP 命中率,请使用以下公式:
((pool_data_gbp_l_reads + pool_index_gbp_l_reads+pool_xda_gbp_l_reads)
- (pool_data_gbp_p_reads + pool_index_gbp_p_reads+pool_xda_gbp_p_reads ))
÷ (pool_data_gbp_l_reads + pool_index_gbp_l_reads+pool_xda_gbp_l_reads) × 100以下示例使用 MON_GET_BUFFERPOOL 表函数来检索必需监视元素中包含的数据并针对每个成员计算命中率:WITH BPMETRICS AS ( SELECT BP_NAME, POOL_DATA_GBP_L_READS + POOL_INDEX_GBP_L_READS + POOL_XDA_GBP_L_READS AS LOGICAL_READS, POOL_DATA_GBP_P_READS + POOL_INDEX_GBP_P_READS + POOL_XDA_GBP_P_READS AS PHYSICAL_READS, MEMBER FROM TABLE(MON_GET_BUFFERPOOL('',-2)) AS METRICS) SELECT VARCHAR(BP_NAME,20) AS BP_NAME, LOGICAL_READS, PHYSICAL_READS, CASE WHEN LOGICAL_READS > 0 THEN DEC(((FLOAT(LOGICAL_READS) - FLOAT(PHYSICAL_READS))/FLOAT(LOGICAL_READS)) * 100,5,2) ELSE NULL END AS HIT_RATIO, MEMBER FROM BPMETRICS结果:BP_NAME LOGICAL_READS PHYSICAL_READS HIT_RATIO MEMBER ---------------- ------------- -------------- --------- ------ IBMDEFAULTBP 5730213 617628 89.22 1 IBMSYSTEMBP4K 0 0 - 1 IBMSYSTEMBP8K 0 0 - 1 IBMSYSTEMBP16K 0 0 - 1 IBMSYSTEMBP32K 0 0 - 1 IBMDEFAULTBP 5724845 615395 89.25 3 IBMSYSTEMBP4K 0 0 - 3 IBMSYSTEMBP8K 0 0 - 3 IBMSYSTEMBP16K 0 0 - 3 IBMSYSTEMBP32K 0 0 - 3 IBMDEFAULTBP 5731714 615814 89.25 2 IBMSYSTEMBP4K 0 0 - 2 IBMSYSTEMBP8K 0 0 - 2 IBMSYSTEMBP16K 0 0 - 2 IBMSYSTEMBP32K 0 0 - 2 IBMDEFAULTBP 5024809 409159 91.85 0 IBMSYSTEMBP4K 0 0 - 0 IBMSYSTEMBP8K 0 0 - 0 IBMSYSTEMBP16K 0 0 - 0 IBMSYSTEMBP32K 0 0 - 0 20 record(s) selected.- 示例 3:使用 SUM 聚集函数来计算整体命中率
- 还可使用 SUM 聚集函数来计算所有成员中的整体命中率,如下所示:
WITH BPMETRICS AS ( SELECT SUM(POOL_DATA_GBP_L_READS) + SUM(POOL_INDEX_GBP_L_READS) + SUM(POOL_XDA_GBP_L_READS) AS LOGICAL_READS, SUM(POOL_DATA_GBP_P_READS)+SUM(POOL_INDEX_GBP_P_READS)+SUM(POOL_XDA_GBP_P_READS) AS PHYSICAL_READS FROM TABLE(MON_GET_BUFFERPOOL('',-2)) AS METRICS) SELECT LOGICAL_READS, PHYSICAL_READS, CASE WHEN LOGICAL_READS > 0 THEN DEC(((FLOAT(LOGICAL_READS) - FLOAT(PHYSICAL_READS))/FLOAT(LOGICAL_READS)) * 100,5,2) ELSE NULL END AS HIT_RATIO FROM BPMETRICS结果:LOGICAL_READS PHYSICAL_READS HIT_RATIO -------------------- -------------------- --------- 22211581 2255996 89.84 1 record(s) selected.
下一步做什么
提示: 命中率可能会根据许多因素(例如,数据库中的数据特性、对其运行的查询以及硬件和软件配置)而变化。一般来讲,缓冲池命中率越高,反映查询性能越好。如果发现命中率好像很低,或者随时间变化不断下降,那么增加缓冲池大小会有帮助。要增加组缓冲池的大小,请在 CF
上调整 cf_gbp_sz 配置参数。要调整本地缓冲池,请在具有需要校正的缓冲池的成员上运行 ALTER BUFFERPOOL 语句。