PostgreSQL запрос занимает слишком много времени для выполнения на LINUX сервере - PullRequest
0 голосов
/ 28 января 2020

Я недавно развернул базу данных PostgreSQL на Linux сервере, и одна из хранимых процедур занимает около 24-26 секунд, чтобы получить результат. Ранее я развернул PostgreSQL базу данных на windows сервере, и та же самая хранимая процедура занимает всего от 1 до 1,5 секунды.

В обоих случаях я тестировал одну и ту же базу данных с одинаковым количеством данных. а также оба сервера имеют одинаковую конфигурацию, такую ​​как RAM, Processor, .. et c.

При выполнении моей хранимой процедуры в Linux загрузка ЦП сервера достигает 100%.

План выполнения для Windows:

**enter image description here**

План выполнения для Linux:

enter image description here

Дайте мне знать, если у вас есть какое-либо решение для того же.

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Это также может быть связано с тем, что JIT входит в игру на сервере Linux, а не на windows. Проверьте, содержит ли план выполнения запроса на сервере linux информацию о JIT. Если да, проверьте, что то же самое в windows версии. Если нет, то я подозреваю, что это так.

JIT может добавить больше накладных расходов, поэтому попробуйте изменить параметры jit, такие как jit_above_cost, jit_inline_above_cost, на соответствующие значения в соответствии с требованиями вашей системы или полностью отключить их, установив

jit=off

или

jit_above_cost = -1
0 голосов
/ 28 января 2020

Похоже, виновник находится на

billservice.posid = pos.posid

В частности, он выполняет сканирование последовательности на pos-таблице. Это должно делать сканирование индекса.

enter image description here

Проверьте, есть ли у вас индексы для этих двух полей в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...