Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Переходить ли с PL/pgSQL на С?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, У нас на проекте используются PL/pgSQL в качестве языка для хранимых процедур. Встал вопрос об оптимизации и о переписывании данных функций под С. Спрашивается: делал ли кто-нибудь подобное? Есть ли заметный выйгрыш в перформансе? Дело в том, что, читал, чтоPL/pgSQL и так достаточно хорошо оптимизируется. используется pgsql 8.0.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 17:43 |
|
||
|
Переходить ли с PL/pgSQL на С?
|
|||
|---|---|---|---|
|
#18+
цыфр не привиду,но разница существенная(естественно с быстрее),минус пгскуеля в том что он при каждом запуске компелит функцию.. прирост скорости идет за счет того что он сохряняет планы некоторых!!! запросов в пределах жизни сесии..(что вобщем можно реализовать и на сях) ,но дело в том что достаточно большие и сложные функции все же на нем тормозят... у сишных тоже есть свои недостатки 1. слабо документирован SPI 2. геморно дебагить.(хотя и plpgsql тоже не особо клево :) p.s. это по мотивам опыта с pg7.4 в 8ке думаю ситуация не поменялась p.s.s ради перфоманса конечно стоит погеморится...хотя железо как правило обходится дешевле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 18:15 |
|
||
|
Переходить ли с PL/pgSQL на С?
|
|||
|---|---|---|---|
|
#18+
wbearцыфр не привиду,но разница существенная(естественно с быстрее),минус пгскуеля в том что он при каждом запуске компелит функцию.. Можно ссылку на доку, которая об этом говорит? Я всю жизнь считал, что SP компилируются один раз, а далее хранятся во внутреннем представлении сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 18:52 |
|
||
|
Переходить ли с PL/pgSQL на С?
|
|||
|---|---|---|---|
|
#18+
это в ораклах оно хранится... в пг такого счастья нету , ну развечто в пределах сесии.. и то сомневаюсь. это дожно быть на уровне шандлера языка реализованно, а если пг неумеет убивать/перестаивает планы запросов если таблица из этого запроса потерпела alert,то недумаю что он(пр) отсылает в шандлер языка евент о том что текст функции поменялся,(а пр хранит функции имено текстом), у пг с этим не совсем все замечатильно. вощето эта дока называется http://www.postgresql.org/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 10:35 |
|
||
|
Переходить ли с PL/pgSQL на С?
|
|||
|---|---|---|---|
|
#18+
Интересно - при переходе на С - на чем вы хотите получить выгрыш? ну да - скорость выполнения некоторых интсрукций повысится в разы, не спорю. Но также в разы повысится сложность сопровождения всего этого хозяйства... А если еще учесть что 90% процентов времени выполнения процедур и триггеров отдается выполнению SQL запросов - то по моему переход на С - даст только минус... Т.е. лучше сосредоточиться на оптимизации запросов как внутри процедур , так и на метоликах применения различных кеширующих схем между вызовами процедур... Вот скажем пример - процедуры на чистом plpython - работают по моим оценкам быстрее в несколько раз чем на чистом plpgsql. но как только внутри процедур появляются запросы к базе - то ситуация выравнивается... Это связанно с тем что запросы внутри plpgsql - хранятся и вызываются в уже препарированном виде... Но вот скажем в plpythonu за счет того что есть глобальный диктонари GD - в котором можно хранить результаты предыдущих выборок или препарированные ранее запросы, можно радикально повысить производительность некоторых бизнес операций. Конечно - так же можно делать и в С - но это на несколько порядков сложнее чем в Python или Perl- да и ошибиться в языке низкого уровня можно также просто, тем более что работа со структурами datum,дело не тривиальное... Так что мое IMHO-процедуры на С- овчинка выделки не стоит.. Ну разьве что для особо критичных операций и то - трижды подумав .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 11:02 |
|
||
|
Переходить ли с PL/pgSQL на С?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Как раз сейчас стою перед выбором, что использовать plpgsql или C-шные библиотеки. Насколько я понял из обсуждения, предпочтение отдается C, правда не совсем понятно, что конкретно используется для доступа к базе: libpq или еще что-то? Поделитесь, пожалуйста, опытом. Задачка стоит такая: нужно написать процедуру над БД (с нетривиальной логикой) с частыми обращениями и изменениями базы. Уже пробовал реализовать ее на plpgsql, на большом объеме данных в базе, ее производительность никуда не годиться. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 13:17 |
|
||
|
Переходить ли с PL/pgSQL на С?
|
|||
|---|---|---|---|
|
#18+
diman21Добрый день! Задачка стоит такая: нужно написать процедуру над БД (с нетривиальной логикой) с частыми обращениями и изменениями базы. Уже пробовал реализовать ее на plpgsql, на большом объеме данных в базе, ее производительность никуда не годиться. Заранее благодарен. У тебя скорее всего все упирается в тормоза непосредственно связанные с запросами к БД. т.е. если даже ты напишешь процедуру на С- то заметно быстрее все равно не станет. Зато сопровождать это дело и отлаживать будет более сложным делом... Лучше сконцентрируйся на оптимизации запросов внутри этой процедуры... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 13:49 |
|
||
|
Переходить ли с PL/pgSQL на С?
|
|||
|---|---|---|---|
|
#18+
[quot wbear]цыфр не привиду,но разница существенная(естественно с быстрее) Я достаточно пописал довольно сложных сереврных процедур именно на С и по скорости работы в сравнении с другими серверными функциями могу кое-что сказать. В общем разницы по скорости фактически нет если выполняются просто запросы-подзапросы и т.п. Другое дело, что на PL/pgSQL часто невозможно сделать сложную (и эффективную) обработку данных, а С-процедуры это позволяют: можно хранить глобально в пределах сессии объекты и т.п. - в этом плане С очень удобен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 17:07 |
|
||
|
Переходить ли с PL/pgSQL на С?
|
|||
|---|---|---|---|
|
#18+
Да, и еще добавлю кое-что: Если Вы, не дай Бог, в С-процедуре где-нибуть на байтик ошибетесь и потрете лишнюю память, то будьте готовы к неожиданному падению всего сервера, "непонятной" порче баз и т.п. Риск очень велик, поэтому относиться к написанию подобных процедур нужно внимательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 17:13 |
|
||
|
Переходить ли с PL/pgSQL на С?
|
|||
|---|---|---|---|
|
#18+
C для прикладных задач в 9 из 10 случаев это перебор. Perl/Python покрывают почти все потребности, отсутствующие в pl/pgsql. Но уронить сервер и они могут, особенно при использовании глючных дополнительных модулей (на C :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2005, 03:21 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=333&tid=2006875]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 262ms |
| total: | 407ms |

| 0 / 0 |
