172 похожих чатов

Всем добрый день! Наткнулся случайно на ситуацию. Когда внутри одной транзакции выполняю

кучу разных запросов и вызовов функций, то скорость выполнения падает в десять и более раз.
Пример:
BEGIN;
SELECT fnc.fnc1();
...
SELECT fnc.fnc99999();
COMMIT;
Время выполнения SELECT fnc.fnc1() - 10 секунд;
В случае
BEGIN;
SELECT fnc.fnc1();
...
SELECT fnc.fnc2();
COMMIT;
Время выполнения 0.5 сек.
Функция делает ровно одинаковые действия (внутри неё селект и апдейт 3х таблиц).
Состояние бд 1 в 1.
Кто может обьяснить в чем причина?
Это из за настроек wal? Или из за других параметров в conf?
Заранее благодарен.
Пг. 9.6

11 ответов

22 просмотра

BEGIN; SELECT fnc.fnc1(); ... SELECT fnc.fnc99999(); COMMIT; BEGIN; SELECT fnc.fnc1(); ... SELECT fnc.fnc2(); COMMIT; у вас один случай от другого в примере отличается названием функции. В первом fnc99999, а во втором fnc2(). Может проблема имени функции?. А если серьезно, то примеры некорректные

Для начала разговора о скоостях запроса сообщите информацыю из закрепа: https://t.me/pgsql/303899 Без этого такой разговор будет беспредметным.

В том, что по крайней мере одна из перечисленных предпосылок: > Функция делает ровно одинаковые действия (внутри неё селект и апдейт 3х таблиц). > Состояние бд 1 в 1. неверна, или же что-то в самом описании проблемы неверно. Иначе придётся признать, что PostgreSQL умеет предсказывать будущее, понимаете? ;)

Yaroslav Schekin
В том, что по крайней мере одна из перечисленных п...

>признать, что PostgreSQL умеет предсказывать будущее, Как что-то сложное! (Умеет, конечно. Вон, estimate в планировщике -- что это ещё по-вашэму?)

Ilya Anfimov
>признать, что PostgreSQL умеет предсказывать буду...

Это оценка. А вот именно то, что описал @stepanowich, просто невозможно.

Yaroslav Schekin
Это оценка. А вот именно то, что описал @stepanowi...

>, просто невозможно. Возможно. Но не реализовано. При этом я могу представить несколько вариантов -- когда его описание будет правдой. Например, если в сэссии этот вызов выполняется несколько раз последовательно...

Ilya Anfimov
>, просто невозможно. Возможно. Но не реализовано...

> Возможно. Но не реализовано. Что именно? Хотя... зависит от того, что конкретно имелось в виду под "Состояние бд 1 в 1", да.

P- Автор вопроса
Yaroslav Schekin
> Возможно. Но не реализовано. Что именно? Хотя.....

Могу скинуть 2 скрипта. Сразу станет ясно тело вопроса. Сюда можно кидать файлы?

P
Могу скинуть 2 скрипта. Сразу станет ясно тело воп...

Ну да, в виде вложений. Или можете на какой-то paste site выложить.

>Что именно? Глобальные оптимизацыи между процэдурами, внеочередное выполнение вызовов и прочие весёлые методы оптимизацыи, которые могут привести к таким результатам непосредственно.

Ilya Anfimov
>Что именно? Глобальные оптимизацыи между процэду...

> Глобальные оптимизацыи между процэдурами Чтобы они были, вся последовательность вызовов процедур должна быть получена PostgreSQL сразу (и всё равно postgres сейчас ничего такого не делает, да), а по вопросу у меня сложилось впечатление (по "внутри одной транзакции выполняю кучу разных запросов"), что запросы в транзакции посылаются по одному (а зря, как уже видно (DO в примере — это всего один statement)).

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта