Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Разное время выполнения при одинаковом плане  [new]
Максим Н
Member

Откуда: Екатеринодар
Сообщений: 1438
Есть простой запрос вида:

select *
  from (select *
          from big_table p) q
 order by process_name asc
offset 0
 limit 15


При этом выполняться он может от 0,1s до 2-3 минут. Причем планы почти одинаковые.
Какие распрастраненные причины могут быть?

Вот сами планы на всякий случай:
- медленный - https://explain.depesz.com/s/ffWf
- быстрый - https://explain.depesz.com/s/pS57
7 фев 20, 11:29    [22075445]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения при одинаковом плане  [new]
Павел Лузанов
Member

Откуда:
Сообщений: 659
Максим Н

При этом выполняться он может от 0,1s до 2-3 минут. Причем планы почти одинаковые.
Какие распрастраненные причины могут быть?

Например: нужно ли читать данные с диска или они уже в буферном кэше.
У вас в медленном плане parallel seq scan на три порядка медленнее, чем в быстром.

Кроме того, влиять могут другие запросы, одновременно выполняющиеся в системе.
7 фев 20, 11:56    [22075469]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения при одинаковом плане  [new]
gav21
Member

Откуда:
Сообщений: 111
Максим Н,
сделайте explain (analyze,buffers) SELECT ...
думаю по статистике использования диска\кэша все станет понятно
7 фев 20, 12:12    [22075482]     Ответить | Цитировать Сообщить модератору
 Re: Разное время выполнения при одинаковом плане  [new]
Aleksey Syryh
Member

Откуда:
Сообщений: 1
Судя по строчкам вида _hyper_*_chunk у вас там TimescaleDB стоит. Может какие-то его внутренние обработчики мешают? Посмотрите SELECT * FROM _timescaledb_internal.bgw_job_stat, не совпадают ли времена "тормозов" с запуском регламентных работ.

Сообщение было отредактировано: 7 фев 20, 13:10
7 фев 20, 13:06    [22075551]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить