powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Хранимые процедуры - компилируются ли?
13 сообщений из 13, страница 1 из 1
Хранимые процедуры - компилируются ли?
    #39592646
mihmih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В унаследованном проекте бОльшая часть бизнес-логики сосредоточена в хранимых процедурах (функциях в терминологии Postgres).
В результате при подключении большого количества пользователей "бутылочным горлышком" становится процессор сервера (100% нагрузка всех ядер при довольно небольшой загрузке дисковой подсистемы)

Вопрос: компилируется ли код процедур на языке PL/pgSQL? Или при каждом вызове он интерпретируется?
Сейчас версия СУБД 9.4, может в последних версиях что-то сделано в эту сторону?

Если нет, может быть переписать процедуры на java/c?
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592648
Alex__kK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihmih,

Интерпретируется, и в 10-ке тоже
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592654
mihmih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex__kKИнтерпретируется, и в 10-ке тоже

А если переписать на java?
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592688
mihmihЕсли нет, может быть переписать процедуры на java/c? Для начала провести ревизию кода процедур/функций и найти те, которые можно переписать на LANGUAGE 'sql' вместо LANGUAGE 'plpgsql', думаю тут можно сэкономить немного ресурсов.
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592696
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihmihAlex__kKИнтерпретируется, и в 10-ке тоже

А если переписать на java?

Нужна будет JVM.
Если нужна производительность и скомпилированный код, то пишите ХП на C.
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592733
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему Вы вообще думаете, что это
mihmihВ унаследованном проекте бОльшая часть бизнес-логики сосредоточена в хранимых процедурах (функциях в терминологии Postgres).
является причиной вот этого?
mihmihВ результате при подключении большого количества пользователей "бутылочным горлышком" становится процессор сервера (100% нагрузка всех ядер при довольно небольшой загрузке дисковой подсистемы)
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592757
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihmihВ унаследованном проекте бОльшая часть бизнес-логики сосредоточена в хранимых процедурах (функциях в терминологии Postgres).
В результате при подключении большого количества пользователей "бутылочным горлышком" становится процессор сервера (100% нагрузка всех ядер при довольно небольшой загрузке дисковой подсистемы)

Вопрос: компилируется ли код процедур на языке PL/pgSQL? Или при каждом вызове он интерпретируется?
Сейчас версия СУБД 9.4, может в последних версиях что-то сделано в эту сторону?

Если нет, может быть переписать процедуры на java/c?

Вы не там ищете. Вам надо найти те процедуры что неадекватно тормозят и переделать их.
В 90% случаев - проблема решится.
Скорее всего или переписыванием запросов в хранимках или индексами.
Если конечно у вас в хранимках считается много сложной математики (а не просто язык для склейки sql логики в единую форму) - тогда ой (но таким вещам вообще не место на базе).

На самом деле при повторном вызове хранимки в пределах 1 физического коннекта - она уже СИЛЬНО дешевле становится так как основной расход - на планирование запросов и на синтаксический разбор хранимки - делается 1 раз (в пределах 1 коннекта).

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592763
YuriyRusinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

Тогда можно еще 1 вопрос, а как следует действовать, если необходима сложная математика на стороне сервера ?
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592792
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuriyRusinovMaxim Boguk,

Тогда можно еще 1 вопрос, а как следует действовать, если необходима сложная математика на стороне сервера ?

ИМХО отделить математику от данных.
Т.е. вынести математику в отдельный слой сервера приложений.
Данные для которых берутся из БД.
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592800
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulYuriyRusinovMaxim Boguk,

Тогда можно еще 1 вопрос, а как следует действовать, если необходима сложная математика на стороне сервера ?

ИМХО отделить математику от данных.
Т.е. вынести математику в отдельный слой сервера приложений.
Данные для которых берутся из БД.

Именно так, нечего такие вещи в базе считать она не для того предназначена.
Ну или всякие pl/R и подобные для матобработки и на РЕПЛИКЕ (которых просто можно поставить хоть 10 штук если надо), но точно не Pl/pgsql на мастере (он не для того совсем делался).

PS: еще можно эту сложную математику в виде SQL запросов сделать а не циклами в pl/pgsql как любят .

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592810
YuriyRusinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно ли я понял, что нужна отдельная библиотека на C++, которая содержит в себе необходимый функционал и данные берет через семейство функций SPI_ ? И в итоге запрос будет выглядить так
Код: plsql
1.
select value from very_difficult_function ();


при этом функция very_difficult_function будет на C++ ?
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592815
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuriyRusinovПравильно ли я понял, что нужна отдельная библиотека на C++, которая содержит в себе необходимый функционал и данные берет через семейство функций SPI_ ? И в итоге запрос будет выглядить так
Код: plsql
1.
select value from very_difficult_function ();


при этом функция very_difficult_function будет на C++ ?

На чистых С, С++ c SPI_ склеивается плохо.
Но да так можно хотя и все таки я бы рекомендовал на application server такие вещи убирать потому что база одна а серверов можно поставить много.
...
Рейтинг: 0 / 0
Хранимые процедуры - компилируются ли?
    #39592978
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk[<>Но да так можно хотя и все таки я бы рекомендовал на application server такие вещи убирать потому что база одна а серверов можно поставить много.
как-то тут пробегал какйойто мимопробегал. так ему база была нужна для транзакционности в параллельных итеративных процессах. там много серверов конешно натыкать можно, но добавится сетевая задержка во все сессии. всего и делов.



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

еще функциональные индексы при множественных речеках(если индексируемые ф-е поля не мат-зовывать) могут такую картинку дать. например куча фан--индексов вглупь тяжолого джейсон,б-а., и все речекаются на джойне. а ИОС не проходит, из-за битмапа (енда или ора), например. или визибилити вечно грязная.
т.к. товарищи жабщики -- то любовь к гамакам стоячим, лыжным, типа жейсонов почти гарантирована.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Хранимые процедуры - компилируются ли?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]