powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Переходить ли с PL/pgSQL на С?
10 сообщений из 10, страница 1 из 1
Переходить ли с PL/pgSQL на С?
    #33312462
PostgresAdvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,

У нас на проекте используются PL/pgSQL в качестве языка для хранимых процедур. Встал вопрос об оптимизации и о переписывании данных функций под С.
Спрашивается: делал ли кто-нибудь подобное? Есть ли заметный выйгрыш в перформансе? Дело в том, что, читал, чтоPL/pgSQL и так достаточно хорошо оптимизируется.
используется pgsql 8.0.1
...
Рейтинг: 0 / 0
Переходить ли с PL/pgSQL на С?
    #33312554
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
цыфр не привиду,но разница существенная(естественно с быстрее),минус пгскуеля в том что он при каждом запуске компелит функцию.. прирост скорости идет за счет того что он сохряняет планы некоторых!!! запросов в пределах жизни сесии..(что вобщем можно реализовать и на сях) ,но дело в том что достаточно большие и сложные функции все же на нем тормозят... у сишных тоже есть свои недостатки
1. слабо документирован SPI
2. геморно дебагить.(хотя и plpgsql тоже не особо клево :)

p.s. это по мотивам опыта с pg7.4 в 8ке думаю ситуация не поменялась
p.s.s ради перфоманса конечно стоит погеморится...хотя железо как правило обходится дешевле.
...
Рейтинг: 0 / 0
Переходить ли с PL/pgSQL на С?
    #33312612
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wbearцыфр не привиду,но разница существенная(естественно с быстрее),минус пгскуеля в том что он при каждом запуске компелит функцию..


Можно ссылку на доку, которая об этом говорит? Я всю жизнь считал, что SP компилируются один раз, а далее хранятся во внутреннем представлении сервера.
...
Рейтинг: 0 / 0
Переходить ли с PL/pgSQL на С?
    #33314184
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это в ораклах оно хранится... в пг такого счастья нету
, ну развечто в пределах сесии.. и то сомневаюсь. это дожно быть на уровне шандлера языка реализованно, а если пг неумеет убивать/перестаивает планы запросов если таблица из этого запроса потерпела alert,то недумаю что он(пр) отсылает в шандлер языка евент о том что текст функции поменялся,(а пр хранит функции имено текстом), у пг с этим не совсем все замечатильно.


вощето эта дока называется http://www.postgresql.org/
...
Рейтинг: 0 / 0
Переходить ли с PL/pgSQL на С?
    #33314286
domanix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно - при переходе на С - на чем вы хотите получить выгрыш?
ну да - скорость выполнения некоторых интсрукций повысится в разы, не спорю.
Но также в разы повысится сложность сопровождения всего этого хозяйства...
А если еще учесть что 90% процентов времени выполнения процедур и триггеров отдается выполнению SQL запросов - то по моему переход на С - даст только минус... Т.е. лучше сосредоточиться на оптимизации запросов как внутри процедур , так и на метоликах применения различных кеширующих схем между вызовами процедур...
Вот скажем пример - процедуры на чистом plpython - работают по моим оценкам быстрее в несколько раз чем на чистом plpgsql. но как только внутри процедур появляются запросы к базе - то ситуация выравнивается...
Это связанно с тем что запросы внутри plpgsql - хранятся и вызываются в уже препарированном виде... Но вот скажем в plpythonu за счет того что есть глобальный диктонари GD - в котором можно хранить результаты предыдущих выборок или препарированные ранее запросы, можно радикально повысить производительность некоторых бизнес операций. Конечно - так же можно делать и в С - но это на несколько порядков сложнее чем в Python или Perl- да и ошибиться в языке низкого уровня можно также просто, тем более что работа со структурами datum,дело не тривиальное...
Так что мое IMHO-процедуры на С- овчинка выделки не стоит.. Ну разьве что для особо критичных операций и то - трижды подумав ....
...
Рейтинг: 0 / 0
Переходить ли с PL/pgSQL на С?
    #33366392
diman21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Как раз сейчас стою перед выбором, что использовать plpgsql или C-шные библиотеки.

Насколько я понял из обсуждения, предпочтение отдается C, правда не совсем понятно, что конкретно используется для доступа к базе: libpq или еще что-то?

Поделитесь, пожалуйста, опытом.

Задачка стоит такая: нужно написать процедуру над БД (с нетривиальной логикой) с частыми обращениями и изменениями базы. Уже пробовал реализовать ее на plpgsql, на большом объеме данных в базе, ее производительность никуда не годиться.

Заранее благодарен.
...
Рейтинг: 0 / 0
Переходить ли с PL/pgSQL на С?
    #33366538
domanix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
diman21Добрый день!
Задачка стоит такая: нужно написать процедуру над БД (с нетривиальной логикой) с частыми обращениями и изменениями базы. Уже пробовал реализовать ее на plpgsql, на большом объеме данных в базе, ее производительность никуда не годиться.
Заранее благодарен.
У тебя скорее всего все упирается в тормоза непосредственно связанные
с запросами к БД.
т.е. если даже ты напишешь процедуру на С- то заметно быстрее все равно не
станет. Зато сопровождать это дело и отлаживать будет более сложным делом...
Лучше сконцентрируйся на оптимизации запросов внутри этой процедуры...
...
Рейтинг: 0 / 0
Переходить ли с PL/pgSQL на С?
    #33369582
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot wbear]цыфр не привиду,но разница существенная(естественно с быстрее)

Я достаточно пописал довольно сложных сереврных процедур именно на С и по скорости работы в сравнении с другими серверными функциями могу кое-что сказать. В общем разницы по скорости фактически нет если выполняются просто запросы-подзапросы и т.п.
Другое дело, что на PL/pgSQL часто невозможно сделать сложную (и эффективную) обработку данных, а С-процедуры это позволяют: можно хранить глобально в пределах сессии объекты и т.п. - в этом плане С очень удобен.
...
Рейтинг: 0 / 0
Переходить ли с PL/pgSQL на С?
    #33369597
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и еще добавлю кое-что:
Если Вы, не дай Бог, в С-процедуре где-нибуть на байтик ошибетесь и потрете лишнюю память, то будьте готовы к неожиданному падению всего сервера, "непонятной" порче баз и т.п. Риск очень велик, поэтому относиться к написанию подобных процедур нужно внимательно.
...
Рейтинг: 0 / 0
Переходить ли с PL/pgSQL на С?
    #33370117
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C для прикладных задач в 9 из 10 случаев это перебор.
Perl/Python покрывают почти все потребности, отсутствующие в pl/pgsql. Но уронить сервер и они могут, особенно при использовании глючных дополнительных модулей (на C :-)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Переходить ли с PL/pgSQL на С?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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