HANA IO Savepoints 1.00.71+
HANA IO Savepoints 1.00.71+
HANA IO Savepoints 1.00.71+
/*
[NAME]
- HANA_IO_Savepoints_1.00.71+
[DESCRIPTION]
- Savepoint overview
[SOURCE]
[VALID FOR]
[INVOLVED TABLES]
- M_SAVEPOINTS
- HOST_SAVEPOINTS
[INPUT PARAMETERS]
- HOST
Host name
- PORT
Port number
Begin time
- END_TIME
End time
- MIN_CRITICAL_PHASE_DURATION_S
Only show savepoints with a critical phase that exceeds the configured threshold
(in seconds)
- MIN_SAVEPOINT_DURATION_S
Only show savepoints with a critical phase that exceeds the configured threshold
(in seconds)
- MIN_WRITE_SIZE_GB
- DATA_SOURCE
- AGGREGATE_BY
[OUTPUT PARAMETERS]
[EXAMPLE OUTPUT]
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
---------
|START_TIME |HOST |SERVICE_NAME|SAVEPOINTS|SUM_DURATION_S|MAX_DURATION_S|
AVG_DURATION_S|MAX_CRITICAL_PHASE_S|AVG_CRITICAL_PHASE_S|SUM_SIZE_MB|AVG_SIZE_MB|
RS_SIZE_PCT|
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
---------
|2014/05/26 (MON)|saphana20|indexserver | 45| 5918.08| 626.11|
131.51| 3.93| 2.01| 861705| 19149|
6.86|
|2014/05/25 (SUN)|saphana20|indexserver | 230| 21724.41| 2595.69|
94.45| 4.69| 2.34| 2835199| 12327|
7.28|
|2014/05/24 (SAT)|saphana20|indexserver | 186| 20134.43| 1643.51|
108.24| 3.85| 2.25| 2838311| 15260|
6.89|
|2014/05/23 (FRI)|saphana20|indexserver | 111| 17556.60| 2613.64|
158.16| 7.32| 2.36| 2406131| 21677|
9.55|
|2014/05/22 (THU)|saphana20|indexserver | 318| 19547.89| 3164.87|
61.47| 7.44| 3.58| 2122936| 6676|
8.37|
|2014/05/21 (WED)|saphana20|indexserver | 290| 31459.90| 10009.32|
108.48| 8.40| 4.31| 3318363| 11443|
8.94|
|2014/05/20 (TUE)|saphana20|indexserver | 313| 26608.99| 3240.07|
85.01| 9.15| 4.25| 2630053| 8403|
8.11|
|2014/05/19 (MON)|saphana20|indexserver | 303| 29189.67| 10650.05|
96.33| 8.26| 4.51| 3445940| 11373|
7.24|
|2014/05/18 (SUN)|saphana20|indexserver | 25| 924.44| 131.38|
36.97| 2.90| 2.32| 94909| 3796|
6.00|
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
---------
*/
START_TIME,
BLK_PHASE_START_TIME,
CRIT_PHASE_START_TIME,
HOST,
PORT,
SAVEPOINTS,
SUM_DURATION_S,
MAX_DURATION_S,
AVG_DURATION_S,
MAX_BLK_S,
AVG_BLK_S,
MAX_CRIT_S,
AVG_CRIT_S,
SUM_SIZE_MB,
AVG_SIZE_MB,
MB_PER_S,
RS_SIZE_PCT
FROM
( SELECT
CASE WHEN NUM_SAVEPOINTS = 1 THEN CRIT_PHASE_START_TIME ELSE 'various' END
CRIT_PHASE_START_TIME,
CASE WHEN NUM_SAVEPOINTS = 1 THEN BLK_PHASE_START_TIME ELSE 'various' END
BLK_PHASE_START_TIME,
START_TIME,
HOST,
LPAD(PORT, 5) PORT,
LPAD(NUM_SAVEPOINTS, 10) SAVEPOINTS,
LPAD(TO_DECIMAL(SUM_DURATION_S, 12, 2), 14) SUM_DURATION_S,
LPAD(TO_DECIMAL(MAX_DURATION_S, 12, 2), 14) MAX_DURATION_S,
LPAD(TO_DECIMAL(AVG_DURATION_S, 12, 2), 14) AVG_DURATION_S,
LPAD(TO_DECIMAL(MAX_BLOCKING_PHASE_S, 12, 2), 9) MAX_BLK_S,
LPAD(TO_DECIMAL(AVG_BLOCKING_PHASE_S, 12, 2), 9) AVG_BLK_S,
LPAD(TO_DECIMAL(MAX_CRITICAL_PHASE_S, 12, 2), 10) MAX_CRIT_S,
LPAD(TO_DECIMAL(AVG_CRITICAL_PHASE_S, 12, 2), 10) AVG_CRIT_S,
LPAD(ROUND(SUM_SIZE_MB), 11) SUM_SIZE_MB,
LPAD(ROUND(AVG_SIZE_MB), 11) AVG_SIZE_MB,
LPAD(TO_DECIMAL(MAP(SUM_DURATION_S, 0, 0, SUM_SIZE_MB / SUM_DURATION_S), 10,
2), 8) MB_PER_S,
LPAD(TO_DECIMAL(RS_SIZE_PCT, 12, 2), 11) RS_SIZE_PCT
FROM
( SELECT
CASE WHEN BI.AGGREGATE_BY = 'NONE' OR INSTR(BI.AGGREGATE_BY, 'TIME') != 0
THEN TO_VARCHAR(SP.START_TIME, BI.TIME_AGGREGATE_BY) ELSE 'any'
END START_TIME,
CASE WHEN BI.AGGREGATE_BY = 'NONE' OR INSTR(BI.AGGREGATE_BY, 'HOST') != 0
THEN SP.HOST ELSE MAP(BI.HOST, '%', 'any',
BI.HOST) END HOST,
CASE WHEN BI.AGGREGATE_BY = 'NONE' OR INSTR(BI.AGGREGATE_BY, 'PORT') != 0
THEN TO_VARCHAR(SP.PORT) ELSE MAP(BI.PORT, '%', 'any',
BI.PORT) END PORT,
TO_VARCHAR(MIN(SP.BLOCKING_PHASE_START_TIME), 'YYYY/MM/DD HH24:MI:SS')
BLK_PHASE_START_TIME,
TO_VARCHAR(MIN(SP.CRITICAL_PHASE_START_TIME), 'YYYY/MM/DD HH24:MI:SS')
CRIT_PHASE_START_TIME,
COUNT(*) NUM_SAVEPOINTS,
SUM(SP.DURATION) / 1000000 SUM_DURATION_S,
MAX(SP.DURATION) / 1000000 MAX_DURATION_S,
AVG(SP.DURATION) / 1000000 AVG_DURATION_S,
MAX(SP.BLOCKING_PHASE_DURATION) / 1000000 MAX_BLOCKING_PHASE_S,
AVG(SP.BLOCKING_PHASE_DURATION) / 1000000 AVG_BLOCKING_PHASE_S,
MAX(SP.CRITICAL_PHASE_DURATION) / 1000000 MAX_CRITICAL_PHASE_S,
AVG(SP.CRITICAL_PHASE_DURATION) / 1000000 AVG_CRITICAL_PHASE_S,
SUM(SP.TOTAL_SIZE) / 1024 / 1024 SUM_SIZE_MB,
AVG(SP.TOTAL_SIZE) / 1024 / 1024 AVG_SIZE_MB,
AVG(MAP(SP.TOTAL_SIZE, 0, 0, SP.FLUSHED_ROWSTORE_SIZE / SP.TOTAL_SIZE * 100))
RS_SIZE_PCT
FROM
( SELECT
HOST,
PORT,
BEGIN_TIME,
END_TIME,
MIN_BLOCKING_PHASE_DURATION_S,
MIN_SAVEPOINT_DURATION_S,
MIN_WRITE_SIZE_GB,
DATA_SOURCE,
AGGREGATE_BY,
MAP(TIME_AGGREGATE_BY,
'NONE', 'YYYY/MM/DD HH24:MI:SS',
'HOUR', 'YYYY/MM/DD HH24',
'DAY', 'YYYY/MM/DD (DY)',
'HOUR_OF_DAY', 'HH24',
TIME_AGGREGATE_BY ) TIME_AGGREGATE_BY
FROM
( SELECT /*
Modification section */
TO_TIMESTAMP('1000/01/12 12:00:00', 'YYYY/MM/DD HH24:MI:SS') BEGIN_TIME,
TO_TIMESTAMP('9999/01/13 12:00:00', 'YYYY/MM/DD HH24:MI:SS') END_TIME,
'%' HOST,
'%' PORT,
-1 MIN_BLOCKING_PHASE_DURATION_S,
-1 MIN_SAVEPOINT_DURATION_S,
-1 MIN_WRITE_SIZE_GB,
'CURRENT' DATA_SOURCE, /* CURRENT, HISTORY */
'NONE' AGGREGATE_BY, /* HOST, PORT, TIME or comma separated
combinations, NONE for no aggregation */
'NONE' TIME_AGGREGATE_BY /* HOUR, DAY, HOUR_OF_DAY or database time
pattern, NONE for no aggregation */
FROM
DUMMY
)
) BI,
( SELECT
'CURRENT' DATA_SOURCE,
HOST,
PORT,
START_TIME,
ADD_SECONDS(CRITICAL_PHASE_START_TIME, - CRITICAL_PHASE_WAIT_TIME /
1000000) BLOCKING_PHASE_START_TIME,
CRITICAL_PHASE_START_TIME,
DURATION,
CRITICAL_PHASE_DURATION,
CRITICAL_PHASE_WAIT_TIME + CRITICAL_PHASE_DURATION BLOCKING_PHASE_DURATION,
TOTAL_SIZE,
FLUSHED_ROWSTORE_SIZE
FROM
M_SAVEPOINTS
UNION ALL
SELECT
'HISTORY' DATA_SOURCE,
HOST,
PORT,
START_TIME,
START_TIME BLOCKING_PHASE_START_TIME, /* not available
on HOST_SAVEPOINTS */
START_TIME CRITICAL_PHASE_START_TIME, /* not available
on HOST_SAVEPOINTS */
DURATION,
CRITICAL_PHASE_DURATION,
0 + CRITICAL_PHASE_DURATION BLOCKING_PHASE_DURATION, /* not available
on HOST_SAVEPOINTS */
TOTAL_SIZE,
FLUSHED_ROWSTORE_SIZE
FROM
_SYS_STATISTICS.HOST_SAVEPOINTS
) SP
WHERE
SP.HOST LIKE BI.HOST AND
TO_VARCHAR(SP.PORT) LIKE BI.PORT AND
SP.START_TIME BETWEEN BI.BEGIN_TIME AND BI.END_TIME AND
( BI.MIN_BLOCKING_PHASE_DURATION_S = -1 OR
SP.BLOCKING_PHASE_DURATION / 1000000 >= BI.MIN_BLOCKING_PHASE_DURATION_S)
AND
( BI.MIN_SAVEPOINT_DURATION_S = -1 OR
SP.DURATION / 1000000 >= BI.MIN_SAVEPOINT_DURATION_S ) AND
( BI.MIN_WRITE_SIZE_GB = -1 OR
SP.TOTAL_SIZE / 1024 / 1024 / 1024 >= BI.MIN_WRITE_SIZE_GB ) AND
SP.DATA_SOURCE LIKE BI.DATA_SOURCE
GROUP BY
CASE WHEN BI.AGGREGATE_BY = 'NONE' OR INSTR(BI.AGGREGATE_BY, 'TIME') != 0
THEN TO_VARCHAR(SP.START_TIME, BI.TIME_AGGREGATE_BY) ELSE 'any'
END,
CASE WHEN BI.AGGREGATE_BY = 'NONE' OR INSTR(BI.AGGREGATE_BY, 'HOST') != 0
THEN SP.HOST ELSE MAP(BI.HOST, '%', 'any',
BI.HOST) END,
CASE WHEN BI.AGGREGATE_BY = 'NONE' OR INSTR(BI.AGGREGATE_BY, 'PORT') != 0
THEN TO_VARCHAR(SP.PORT) ELSE MAP(BI.PORT, '%', 'any',
BI.PORT) END
)
)
ORDER BY
START_TIME DESC,
HOST,
PORT