diff --git a/SQL-for-analyzing-Synapse-PostgreSQL-database-stats.md b/SQL-for-analyzing-Synapse-PostgreSQL-database-stats.md index ce7e4a7..b700904 100644 --- a/SQL-for-analyzing-Synapse-PostgreSQL-database-stats.md +++ b/SQL-for-analyzing-Synapse-PostgreSQL-database-stats.md @@ -8,7 +8,7 @@ pg_size_pretty (1 row) ``` ## Show top 20 larger rooms by state events count -``` +```sql SELECT r.name, s.room_id, s.current_state_events FROM room_stats_current s LEFT JOIN room_stats_state r USING (room_id) @@ -17,7 +17,7 @@ SELECT r.name, s.room_id, s.current_state_events ``` and by state_group_events count: -``` +```sql SELECT rss.name, s.room_id, count(s.room_id) FROM state_groups_state s LEFT JOIN room_stats_state rss USING (room_id) GROUP BY s.room_id, rss.name @@ -25,7 +25,7 @@ ORDER BY count(s.room_id) DESC LIMIT 20; ``` plus same, but with join removed for performance reasons: -``` +```sql SELECT s.room_id, count(s.room_id) FROM state_groups_state s GROUP BY s.room_id ORDER BY count(s.room_id) DESC @@ -33,7 +33,7 @@ LIMIT 20; ``` ## Show top 20 larger tables by row count -``` +```sql SELECT relname, n_live_tup as rows FROM pg_stat_user_tables ORDER BY n_live_tup DESC @@ -65,14 +65,14 @@ user_directory_search - 316433 ``` ## Show top 20 rooms by new events count in last 1 day: -``` +```sql SELECT e.room_id, r.name, COUNT(e.event_id) cnt FROM events e LEFT JOIN room_stats_state r USING (room_id) WHERE e.origin_server_ts >= DATE_PART('epoch', NOW() - INTERVAL '1 day') * 1000 GROUP BY e.room_id, r.name ORDER BY cnt DESC LIMIT 20; ``` ## Show top 20 users on homeserver by sent events (messages) at last month: -``` +```sql SELECT user_id, SUM(total_events) FROM user_stats_historical WHERE TO_TIMESTAMP(end_ts/1000) AT TIME ZONE 'UTC' > date_trunc('day', now() - interval '1 month') @@ -82,7 +82,7 @@ SELECT user_id, SUM(total_events) ``` ## Show last 100 messages from needed user, with room names: -``` +```sql SELECT e.room_id, r.name, e.event_id, e.type, e.content, j.json FROM events e LEFT JOIN event_json j USING (room_id) LEFT JOIN room_stats_state r USING (room_id) @@ -93,7 +93,7 @@ SELECT e.room_id, r.name, e.event_id, e.type, e.content, j.json FROM events e ``` ## Show top 20 larger tables by storage size -``` +```sql SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size" FROM pg_class C