Каталог решений - Тюнинг производительности запросов в PostgreSQL

Тюнинг производительности запросов в PostgreSQL

Тюнинг производительности запросов в PostgreSQL

В наличии

Предлагаю вашему вниманию перевод статьи Brady Holt «Performance Tuning Queries in PostgreSQL «. Оригинал доступен по ссылке https://www.geekytidbits.com/performance-tuning-postgres/

Категория:

Описание

Настройка производительности базы данных — разработчики обычно либо любят это, либо ненавидят. Я получаю удовольствие от этого и хочу поделиться некоторыми методами, которые я использовал в последнее время для настройки плохо выполняющихся запросов в PostgreSQL. Мои методы не является исчерпывающими, скорее учебником для тех, кто просто тащится от тюнинга.
 

Поиск медленных запросов

Первый очевидный способ начать тюнинг — это найти конкретные операторы, которые работают плохо.
 

pg_stats_statements

Модуль pg_stats_statements — отличное место для начала. Он просто отслеживает статистику выполнения операторов SQL и может быть простым способом поиска неэффективных запросов.

Как только вы установили этот модуль, системное представление с именем pg_stat_statements будет доступно со всеми своими свойствами. Как только у него будет возможность собрать достаточный объем данных, ищите запросы, которые имеют относительно высокое значение total_time. Сначала сфокусируйтесь на этих операторах.
 

SELECT *
FROM
  pg_stat_statements
ORDER BY
  total_time DESC;

 

user_iddbidqueryidquerycallstotal_time
16384163852948SELECT address_1 FROM addresses a INNER JOIN people p ON a.person_id = p.id WHERE a.state = @state_abbrev;3948315224.670
1638416385924SELECT person_id FROM people WHERE name = name;2648312225.670
1638416385395SELECT _ FROM orders WHERE EXISTS (select _ from products where is_featured = true)18583224.67
has been added to your cart:
Оформление заказа