方案:使用内置管理视图来监视缓冲池效率
John 是一位 DBA,他怀疑 SALES
数据库中应用程序性能不佳的原因是缓冲池的工作效率不高。为了进行调查,他使用
MON_BP_UTILIZATION 管理视图来查看缓冲池命中率:
CONNECT TO SALES;
SELECT BP_NAME, DATA_HIT_RATIO_PERCENT, INDEX_HIT_RATIO_PERCENT,
XDA_HIT_RATIO_PERCENT, COL_HIT_RATIO_PERCENT
FROM SYSIBMADM.MON_BP_UTILIZATION;John
看到其中一个缓冲池的命中率非常低,这表示从磁盘读取了太多的页(而不是从缓冲池读取那些页)。然后,他决定使用 MON_BP_UTILIZATION 管理视图来了解是否需要对预取程序进行调整:
CONNECT TO SALES;
SELECT BP_NAME, PREFETCH_RATIO_PERCENT FROM SYSIBMADM.MON_BP_UTILIZATION;PREFETCH_RATIO_PERCENT
的值告知他:在进行预取的情况下异步读取的页面所占的百分比。如果值很小,那么表示有很大一部分数据是直接从磁盘读取的,并且可能指示需要更多的预取程序。由于 PREFETCH_RATIO_PERCENT 值似乎在可接受的范围内,因此
John 使用 MON_BP_UTILIZATION 管理视图来调查页面清理程序为传入数据页面清除空间的效率:
CONNECT TO SALES;
SELECT BP_NAME, AVG_WRITE_TIME, SYNC_WRITES_PERCENT,
AVG_SYNC_WRITE_TIME, AVG_ASYNC_WRITE_TIME
FROM SYSIBMADM.MON_BP_UTILIZATION;SYNC_WRITES_PERCENT 的值告知 John 已同步执行的物理写入请求所占的百分比。如果此数字很小,那么它可能意味着页面清理程序在传入新数据页面请求之前清除缓冲池中的空间的效率很高。如果此数字很大,那么数据库代理程序正在执行较大量的物理写入操作(在此期间,应用程序会等待数据页面被读入缓冲池)。
John 看到 SYNC_WRITES_PERCENT 的值为 75%,因此他决定为 SALES 数据库配置更多页面清理程序以提高异步写入比率。在增加页清理程序数之后,他可以再次使用缓冲池管理视图来查看调整效果。