Разный план выполнения в Windows и Linux для PostgreSQL

Недавно я развернул базу данных PostgreSQL на сервере Linux. Одна из хранимых процедур занимает от 3 до 4 секунд, чтобы получить результат. Ранее я развернул базу данных PostgreSQL на сервере Windows, и та же хранимая процедура извлекла результат в течение секунды. Я проверил план выполнения в обоих случаях.
Это почти то же самое, но план выполнения Linux содержит дополнительную информацию ниже.

    JIT:
  Functions: 171
  Options: Inlining true, Optimization true, Expressions true, Deforming true
  Timing: Generation 26.548 ms, Inlining 8.198 ms, Optimization 2052.958 ms, Emission 1241.730 ms, Total 3329.434 ms

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


person Nayan Rudani    schedule 01.02.2020    source источник
comment
Сети точно такие же, или вы выполняете запрос на сервере?   -  person Rich Bianco    schedule 01.02.2020
comment
оба работают на разных серверах в одном и том же центре обработки данных.   -  person Nayan Rudani    schedule 01.02.2020
comment
Это может быть множество вещей (характеристики машины, скорость диска, версия postgres, конфигурация и т. д.), но в этом случае, на основе JIT: в вашем вопросе я предполагаю, что JIT-компиляция включена в Linux, а не в Windows.   -  person Brits    schedule 01.02.2020
comment
Попробуйте отключить JIT в системе Linux.   -  person a_horse_with_no_name    schedule 01.02.2020


Ответы (1)


Похоже, что JIT приносит вам больше вреда, чем пользы в Linux, поэтому отключите его, например, поместив jit=off в файл postgresql.conf.

Ваша версия Windows, вероятно, изначально не поставлялась с JIT. Во всяком случае, установщик EnterpriseDB для Windows не включал его. Таким образом, несмотря на то, что параметр jit отображается как on, он ничего не делает, так как там нечего включать.

person jjanes    schedule 01.02.2020