[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-postgresql-kak-monitorit-proizvoditelnost-postgresql":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},1056,"kak-monitorit-proizvoditelnost-postgresql",28,"postgresql","PostgreSQL","🐘","Как мониторить производительность PostgreSQL?","PostgreSQL предоставляет богатый набор системных представлений (pg_stat_*) и расширений для мониторинга. Шесть ключевых источников покрывают большинство задач диагностики.\n\n### 1. pg_stat_statements — статистика запросов\n\n\u003Cdetails>\u003Csummary>Примеры запросов к pg_stat_statements\u003C\u002Fsummary>\n\n```sql\nCREATE EXTENSION IF NOT EXISTS pg_stat_statements;\n\n-- Топ-10 самых тяжёлых запросов по общему времени\nSELECT\n    queryid,\n    substr(query, 1, 100) AS query,\n    calls,\n    round(total_exec_time::numeric, 2) AS total_time_ms,\n    round(mean_exec_time::numeric, 2) AS avg_time_ms,\n    rows\nFROM pg_stat_statements\nORDER BY total_exec_time DESC\nLIMIT 10;\n\n-- Запросы с наибольшим количеством чтений с диска\nSELECT\n    substr(query, 1, 80) AS query,\n    calls, shared_blks_hit, shared_blks_read,\n    round(100.0 * shared_blks_hit \u002F NULLIF(shared_blks_hit + shared_blks_read, 0), 2) AS cache_hit_pct\nFROM pg_stat_statements\nORDER BY shared_blks_read DESC\nLIMIT 10;\n```\n\n\u003C\u002Fdetails>\n\n### 2. pg_stat_user_tables — статистика по таблицам\n\n```sql\nSELECT\n    relname AS table_name,\n    seq_scan,            -- много Seq Scan — нужен индекс?\n    idx_scan,            -- количество Index Scan\n    n_tup_ins AS inserts, n_tup_upd AS updates, n_tup_del AS deletes,\n    n_dead_tup AS dead_tuples,\n    last_autovacuum\nFROM pg_stat_user_tables\nORDER BY seq_scan DESC;\n```\n\n### 3. pg_stat_user_indexes — неиспользуемые индексы\n\n```sql\nSELECT\n    schemaname, tablename, indexrelname,\n    idx_scan,          -- 0 = не используется\n    pg_size_pretty(pg_relation_size(indexrelid)) AS index_size\nFROM pg_stat_user_indexes\nWHERE idx_scan = 0\nORDER BY pg_relation_size(indexrelid) DESC;\n```\n\n### 4. pg_stat_activity — текущие сессии и запросы\n\n```sql\nSELECT\n    pid, usename, state,\n    now() - query_start AS duration,\n    wait_event_type, wait_event,\n    substr(query, 1, 100) AS query\nFROM pg_stat_activity\nWHERE state = 'active' AND pid != pg_backend_pid()\nORDER BY duration DESC;\n\n-- Завершить зависший запрос\nSELECT pg_cancel_backend(pid);     -- мягкое (SIGINT)\nSELECT pg_terminate_backend(pid);  -- жёсткое (SIGTERM)\n```\n\n### 5. Размер таблиц и индексов\n\n```sql\nSELECT\n    relname AS table_name,\n    pg_size_pretty(pg_total_relation_size(relid)) AS total_size,\n    pg_size_pretty(pg_relation_size(relid)) AS table_size,\n    pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) AS index_size\nFROM pg_stat_user_tables\nORDER BY pg_total_relation_size(relid) DESC\nLIMIT 10;\n```\n\n### 6. Cache hit ratio\n\n```sql\nSELECT\n    sum(blks_hit) * 100.0 \u002F NULLIF(sum(blks_hit) + sum(blks_read), 0) AS cache_hit_ratio\nFROM pg_stat_database;\n-- Хорошее значение: > 99%\n```\n\n> **На собеседовании:** назовите три ключевых представления — pg_stat_statements (какие запросы тормозят), pg_stat_user_tables (много ли Seq Scan), pg_stat_activity (что выполняется сейчас). Cache hit ratio > 99% — признак здоровой системы, \u003C 95% — нужно увеличить shared_buffers.","","senior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Как мониторить производительность PostgreSQL? — Gymterview","PostgreSQL предоставляет богатый набор системных представлений (pg_stat_*) и расширений для мониторинга. Шесть ключевых источников покрывают большинство задач д","PostgreSQL предоставляет богатый набор системных представлений (pg_stat_*) и расширений для мониторинга. Шесть ключевых ",[7,13],"PostgreSQL предоставляет богатый набор системных представлений (pg_stat_*) и расширений для мониторинга. Шесть ключевых источников покрывают большинство задач диагностики.",true]