Learnings

Monday, September 13, 2010

Monitoring DB2 statement level statistics

In DB2 9.7 onwards, the following is very useful to see what is happening at each statement.

create or replace view stmtsnap_v as
select
MEMBER,
SECTION_TYPE,
INSERT_TIMESTAMP,
EXECUTABLE_ID,
PACKAGE_SCHEMA,
PACKAGE_NAME,
PACKAGE_VERSION_ID,
SECTION_NUMBER,
EFFECTIVE_ISOLATION,
NUM_EXECUTIONS,
NUM_EXEC_WITH_METRICS,
PREP_TIME,
TOTAL_ACT_TIME,
TOTAL_ACT_WAIT_TIME,
TOTAL_CPU_TIME,
POOL_READ_TIME,
POOL_WRITE_TIME,
DIRECT_READ_TIME,
DIRECT_WRITE_TIME,
LOCK_WAIT_TIME,
TOTAL_SECTION_SORT_TIME,
TOTAL_SECTION_SORT_PROC_TIME,
TOTAL_SECTION_SORTS,
LOCK_ESCALS,
LOCK_WAITS,
ROWS_MODIFIED,
ROWS_READ,
ROWS_RETURNED,
DIRECT_READS,
DIRECT_READ_REQS,
DIRECT_WRITES,
DIRECT_WRITE_REQS,
POOL_DATA_L_READS,
POOL_TEMP_DATA_L_READS,
POOL_XDA_L_READS,
POOL_TEMP_XDA_L_READS,
POOL_INDEX_L_READS,
POOL_TEMP_INDEX_L_READS,
POOL_DATA_P_READS,
POOL_TEMP_DATA_P_READS,
POOL_XDA_P_READS,
POOL_TEMP_XDA_P_READS,
POOL_INDEX_P_READS,
POOL_TEMP_INDEX_P_READS,
POOL_DATA_WRITES,
POOL_XDA_WRITES,
POOL_INDEX_WRITES,
TOTAL_SORTS,
POST_THRESHOLD_SORTS,
POST_SHRTHRESHOLD_SORTS,
SORT_OVERFLOWS,
WLM_QUEUE_TIME_TOTAL,
WLM_QUEUE_ASSIGNMENTS_TOTAL,
DEADLOCKS,
FCM_RECV_VOLUME,
FCM_RECVS_TOTAL,
FCM_SEND_VOLUME,
FCM_SENDS_TOTAL,
FCM_RECV_WAIT_TIME,
FCM_SEND_WAIT_TIME,
LOCK_TIMEOUTS,
LOG_BUFFER_WAIT_TIME,
NUM_LOG_BUFFER_FULL,
LOG_DISK_WAIT_TIME,
LOG_DISK_WAITS_TOTAL,
LAST_METRICS_UPDATE,
NUM_COORD_EXEC,
NUM_COORD_EXEC_WITH_METRICS,
VALID,
TOTAL_ROUTINE_TIME,
TOTAL_ROUTINE_INVOCATIONS,
ROUTINE_ID,
STMT_TYPE_ID,
QUERY_COST_ESTIMATE,
STMT_PKG_CACHE_ID,
COORD_STMT_EXEC_TIME,
STMT_EXEC_TIME,
TOTAL_SECTION_TIME,
TOTAL_SECTION_PROC_TIME,
TOTAL_ROUTINE_NON_SECT_TIME,
rtrim(substr(STMT_TEXT,1,2000)) as stmt_text
from TABLE (sysproc.MON_GET_PKG_CACHE_STMT('d', null, null, -1))

Labels: