как интерпретировать stddev_time и hit_percent - PullRequest
0 голосов
/ 13 марта 2019

Я запустил следующую команду, показанную в этой документации: https://www.postgresql.org/docs/current/pgstatstatements.html

SELECT query, 
       calls, 
       total_time, 
       rows, 
       100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements 
ORDER BY total_time DESC 
LIMIT 5;

но я не знаю, как интерпретировать stddev_time (очевидно, это может показать запросы, вызывающие проблемы)

И я не понимаю, как интерпретировать следующее значение:

100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent

Это лучше, когда оно близко к 0 или 100?

1 Ответ

0 голосов
/ 13 марта 2019

stddev_time показывает стандартное отклонение времени выполнения для этого оператора. Если это значение близко к нулю, оператор имеет примерно одинаковое время выполнения при каждом запуске.

Большие stddev_time значения означают, что оператор имеет сильно различающиеся времена выполнения, либо потому, что время выполнения сильно варьируется в зависимости от постоянных значений, либо потому, что затрагивается множество блоков таблицы или индекса, а время выполнения зависит от того, кешируется или нет.

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

...