Управление планировщиком в Postgresql

Управление планировщиком в Postgresql

    Рассматривать приведенные далее команды управления планировщиком лишь с позиции изучения потенциальных возможностей управления им, а не как рекомендацию к бездумному изменению этих параметров в реальной работе
    Запретить планировщику использовать метод на основе хеширования:

    SET enable_hashjoin = off;

    Запретить использовать метод на основе слияния:

    SET enable_mergejoin = off;

    Запретить метод вложенного цикла:

    SET enable_nestloop = off;

    В команде EXPLAIN можно использовать опцию ANALYZE, что позволит вывести на экран фактические затраты времени и фактическое число выбранных строк, а также фактически использованные методы и затраты памяти

    demo=# EXPLAIN ANALYZE SELECT t.ticket_no, t.passenger_name, tf.flight_id, tf.amount FROM bookings.tickets t JOIN bookings.ticket_flights tf ON t.ticket_no = tf.ticket_no ORDER BY t.ticket_no ; QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Merge Join (cost=0.99..822424.45 rows=8391852 width=40) (actual time=205.585..24589.161 rows=8391852 loops=1) Merge Cond: (t.ticket_no = tf.ticket_no) -> Index Scan using tickets_pkey on tickets t (cost=0.43..139110.29 rows=2949857 width=30) (actual time=0.024..1003.444 rows=2949857 loops=1) -> Index Scan using ticket_flights_pkey on ticket_flights tf (cost=0.56..571041.37 rows=8391852 width=24) (actual time=0.019..19252.753 rows=8391852 loops=1) Planning Time: 0.495 ms JIT: Functions: 7 Options: Inlining true, Optimization true, Expressions true, Deforming true Timing: Generation 1.900 ms, Inlining 65.058 ms, Optimization 77.924 ms, Emission 61.583 ms, Total 206.465 ms Execution Time: 24978.420 ms (10 rows)

    Затраты времени измеряются в милисекундах, а затраты ресурсов в условных единицах
    Параметр loops=1 говорит о том, что каждый узел был выполнен один раз
    Planning Time: 0.495 ms - это время формирования плана
    Execution Time: 24978.420 ms - это время формирования запроса
    Здесь нет, но дополнительно может выводиться парметр Rows Removed by Filter - число строк удаленных при выполнении условия
    cost - оценка, actual - фактическое значение
    Для сокращения вывода, можно отключить опцию оценки параметром COSTS OFF
    Если требуется исследовать план выполнения запроса, модифицирующего данные, то для того, чтобы изменения на самом деле произведены не были, нужно воспользоваться транзакцией с откатом изменений.

    BEGIN; BEGIN demo=# EXPLAIN (ANALYZE, COSTS OFF) SELECT t.ticket_no, t.passenger_name, tf.flight_id, tf.amount FROM bookings.tickets t JOIN bookings.ticket_flights tf ON t.ticket_no = tf.ticket_no ORDER BY t.ticket_no ; QUERY PLAN --------------------------------------------------------------------------------------------------------------------- Merge Join (actual time=96.234..17504.152 rows=8391852 loops=1) Merge Cond: (t.ticket_no = tf.ticket_no) -> Index Scan using tickets_pkey on tickets t (actual time=0.107..725.628 rows=2949857 loops=1) -> Index Scan using ticket_flights_pkey on ticket_flights tf (actual time=0.017..12852.405 rows=8391852 loops=1) Planning Time: 1.038 ms Execution Time: 17881.149 ms (6 rows) ROLLBACK; ROLLBACK
    Источники
    Последнее изменение: 19.10.2024 23:34


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ