Redshift でユーザー別のデータベース接続数の推移を調べる。
調査クエリ
WITH RECURSIVE time_series(time_value) AS ( /* Recursive CTE で過去 7 日間の 1 分ごとの時間を生成 */ -- 開始時点(7日前) SELECT date_trunc('minute', dateadd(day, -7, GETDATE())) UNION ALL -- 現在までの1分刻み SELECT dateadd(minute, 1, time_value) FROM time_series WHERE time_value < date_trunc('minute', GETDATE()) ),session_timeline AS ( /* セッションごとの開始、終了を整理 */ SELECT user_name ,process ,starttime as connection_start ,NVL(endtime, '9999-12-31 00:00:00'::timestamp) as connection_end -- まだ接続が切れていない場合は 9999/12/31 を返す FROM STL_SESSIONS -- WHERE user_name not in ('rdsdb', 'IAM:awsuser') ) SELECT t.time_value ,c.user_name ,COUNT(c.user_name) as session_count FROM time_series t LEFT OUTER JOIN session_timeline c ON t.time_value >= c.connection_start AND t.time_value <= c.connection_end --time_value 時点で接続している GROUP BY t.time_value ,c.user_name HAVING session_count > 0 ORDER BY time_value DESC;
調査結果
- ユーザー別データベース接続数

- CloudWatch メトリクスでの総データベース接続数
