PG-165: Recycle expired buckets.
parent
51522ca6d9
commit
0e8f4c489c
|
@ -136,7 +136,8 @@ CREATE VIEW pg_stat_monitor AS SELECT
|
|||
(string_to_array(resp_calls, ',')) resp_calls,
|
||||
cpu_user_time,
|
||||
cpu_sys_time
|
||||
FROM pg_stat_monitor(TRUE), pg_database WHERE dbid = oid;
|
||||
FROM pg_stat_monitor(TRUE), pg_database WHERE dbid = oid
|
||||
ORDER BY bucket_start_time;
|
||||
|
||||
CREATE FUNCTION decode_error_level(elevel int)
|
||||
RETURNS text
|
||||
|
|
|
@ -1104,6 +1104,18 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
|
|||
Counters tmp;
|
||||
double stddev;
|
||||
int64 queryid = entry->key.queryid;
|
||||
struct tm tm;
|
||||
time_t bucket_t,current_t;
|
||||
double diff_t;
|
||||
|
||||
memset(&tm, 0, sizeof(tm));
|
||||
strptime(pgss->bucket_start_time[entry->key.bucket_id], "%Y-%m-%d %H:%M:%S", &tm);
|
||||
bucket_t = mktime(&tm);
|
||||
|
||||
time(¤t_t);
|
||||
diff_t = difftime(current_t, bucket_t);
|
||||
if (diff_t > (PGSM_BUCKET_TIME * PGSM_MAX_BUCKETS))
|
||||
continue;
|
||||
|
||||
memset(values, 0, sizeof(values));
|
||||
memset(nulls, 0, sizeof(nulls));
|
||||
|
@ -1273,7 +1285,8 @@ get_next_wbucket(pgssSharedState *pgss)
|
|||
sec = lt->tm_sec - (lt->tm_sec % PGSM_BUCKET_TIME);
|
||||
if (sec < 0)
|
||||
sec = 0;
|
||||
snprintf(pgss->bucket_start_time[bucket_id], sizeof(pgss->bucket_start_time[bucket_id]), "%02d-%02d-%04d %02d:%02d:%02d", lt->tm_mday, lt->tm_mon + 1, lt->tm_year + 1900, lt->tm_hour, lt->tm_min, sec);
|
||||
snprintf(pgss->bucket_start_time[bucket_id], sizeof(pgss->bucket_start_time[bucket_id]),
|
||||
"%04d-%02d-%02d %02d:%02d:%02d", lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday, lt->tm_hour, lt->tm_min, sec);
|
||||
return bucket_id;
|
||||
}
|
||||
return pgss->current_wbucket;
|
||||
|
|
Loading…
Reference in New Issue