|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
В унаследованном проекте бОльшая часть бизнес-логики сосредоточена в хранимых процедурах (функциях в терминологии Postgres). В результате при подключении большого количества пользователей "бутылочным горлышком" становится процессор сервера (100% нагрузка всех ядер при довольно небольшой загрузке дисковой подсистемы) Вопрос: компилируется ли код процедур на языке PL/pgSQL? Или при каждом вызове он интерпретируется? Сейчас версия СУБД 9.4, может в последних версиях что-то сделано в эту сторону? Если нет, может быть переписать процедуры на java/c? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 10:47 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
mihmih, Интерпретируется, и в 10-ке тоже ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 10:49 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
Alex__kKИнтерпретируется, и в 10-ке тоже А если переписать на java? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 10:56 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
mihmihЕсли нет, может быть переписать процедуры на java/c? Для начала провести ревизию кода процедур/функций и найти те, которые можно переписать на LANGUAGE 'sql' вместо LANGUAGE 'plpgsql', думаю тут можно сэкономить немного ресурсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 11:46 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
mihmihAlex__kKИнтерпретируется, и в 10-ке тоже А если переписать на java? Нужна будет JVM. Если нужна производительность и скомпилированный код, то пишите ХП на C. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 11:57 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
А почему Вы вообще думаете, что это mihmihВ унаследованном проекте бОльшая часть бизнес-логики сосредоточена в хранимых процедурах (функциях в терминологии Postgres). является причиной вот этого? mihmihВ результате при подключении большого количества пользователей "бутылочным горлышком" становится процессор сервера (100% нагрузка всех ядер при довольно небольшой загрузке дисковой подсистемы) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 12:52 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
mihmihВ унаследованном проекте бОльшая часть бизнес-логики сосредоточена в хранимых процедурах (функциях в терминологии Postgres). В результате при подключении большого количества пользователей "бутылочным горлышком" становится процессор сервера (100% нагрузка всех ядер при довольно небольшой загрузке дисковой подсистемы) Вопрос: компилируется ли код процедур на языке PL/pgSQL? Или при каждом вызове он интерпретируется? Сейчас версия СУБД 9.4, может в последних версиях что-то сделано в эту сторону? Если нет, может быть переписать процедуры на java/c? Вы не там ищете. Вам надо найти те процедуры что неадекватно тормозят и переделать их. В 90% случаев - проблема решится. Скорее всего или переписыванием запросов в хранимках или индексами. Если конечно у вас в хранимках считается много сложной математики (а не просто язык для склейки sql логики в единую форму) - тогда ой (но таким вещам вообще не место на базе). На самом деле при повторном вызове хранимки в пределах 1 физического коннекта - она уже СИЛЬНО дешевле становится так как основной расход - на планирование запросов и на синтаксический разбор хранимки - делается 1 раз (в пределах 1 коннекта). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 13:20 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
Maxim Boguk, Тогда можно еще 1 вопрос, а как следует действовать, если необходима сложная математика на стороне сервера ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 13:27 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
YuriyRusinovMaxim Boguk, Тогда можно еще 1 вопрос, а как следует действовать, если необходима сложная математика на стороне сервера ? ИМХО отделить математику от данных. Т.е. вынести математику в отдельный слой сервера приложений. Данные для которых берутся из БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 14:08 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
mad_nazgulYuriyRusinovMaxim Boguk, Тогда можно еще 1 вопрос, а как следует действовать, если необходима сложная математика на стороне сервера ? ИМХО отделить математику от данных. Т.е. вынести математику в отдельный слой сервера приложений. Данные для которых берутся из БД. Именно так, нечего такие вещи в базе считать она не для того предназначена. Ну или всякие pl/R и подобные для матобработки и на РЕПЛИКЕ (которых просто можно поставить хоть 10 штук если надо), но точно не Pl/pgsql на мастере (он не для того совсем делался). PS: еще можно эту сложную математику в виде SQL запросов сделать а не циклами в pl/pgsql как любят . -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 14:25 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
Правильно ли я понял, что нужна отдельная библиотека на C++, которая содержит в себе необходимый функционал и данные берет через семейство функций SPI_ ? И в итоге запрос будет выглядить так Код: plsql 1.
при этом функция very_difficult_function будет на C++ ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 14:41 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
YuriyRusinovПравильно ли я понял, что нужна отдельная библиотека на C++, которая содержит в себе необходимый функционал и данные берет через семейство функций SPI_ ? И в итоге запрос будет выглядить так Код: plsql 1.
при этом функция very_difficult_function будет на C++ ? На чистых С, С++ c SPI_ склеивается плохо. Но да так можно хотя и все таки я бы рекомендовал на application server такие вещи убирать потому что база одна а серверов можно поставить много. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 14:49 |
|
Хранимые процедуры - компилируются ли?
|
|||
---|---|---|---|
#18+
Maxim Boguk[<>Но да так можно хотя и все таки я бы рекомендовал на application server такие вещи убирать потому что база одна а серверов можно поставить много. как-то тут пробегал какйойто мимопробегал. так ему база была нужна для транзакционности в параллельных итеративных процессах. там много серверов конешно натыкать можно, но добавится сетевая задержка во все сессии. всего и делов. а у т-ща тс-а очень может быть соединения поднимаются и рушатся аки песчанные замки. жабщики они пулят через жаббу обычно. не собою писанными пулерами. поэтому вдумчиво закешить 100-ю другую препаредов им или тяжело или ненужно. еще функциональные индексы при множественных речеках(если индексируемые ф-е поля не мат-зовывать) могут такую картинку дать. например куча фан--индексов вглупь тяжолого джейсон,б-а., и все речекаются на джойне. а ИОС не проходит, из-за битмапа (енда или ора), например. или визибилити вечно грязная. т.к. товарищи жабщики -- то любовь к гамакам стоячим, лыжным, типа жейсонов почти гарантирована. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 20:08 |
|
|
start [/forum/search_topic.php?author=AidaharA&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 477ms |
total: | 643ms |
0 / 0 |