Я пытаюсь найти информацию о пользовательских функциях PostgreSQL в производительности процедурных языков для задач реального времени.
- Как они сравниваются со встроенными функциями?
- Есть ли какая-либо разница (в накладных расходах), как Postgres вызывает / управляет функциями plpython и plpgsql против pllua (меня интересует интеграция Postgres / сторона контекста / передачи данных, а не сама виртуальная машина)?
- Является ли контекст большими накладными расходами? Могу ли я использовать его для отображения данных в реальном времени (скажем, 1000 запросов / с))
- Есть ли какая-то польза от написания пользовательских функций в plpgsql, чем в других pg / language? В документации они перечисляют преимущества, но я думаю, что они применимы ко всем процедурным языкам postgresql.
Связанные выводы:
источник
это довольно сложно сказать. это действительно зависит от того, что вы делаете. например: PL / pgSQL - это замечательно, если в вас есть большие операторы SQL - это действительно сходит с ума, если вы получаете все виды ветвления, управления подстроками и все такое.
Вы действительно должны проверить от случая к случаю.
источник
Производительность зависит от аппаратного обеспечения и сложности ваших функций. Я создал устройство, которое работало на небольшом 12-ядерном сервере и FusionIO-карте (общая стоимость 10000 евро) и выполняло около 2500 транзакций в секунду с 20 одновременными пользователями. Каждая транзакция вызывает 29 хранимых процедур для обработки данных и возврата некоторой полезной информации клиенту. Некоторые функции выполняют только один запрос, другие - пару запросов. Всего он выполняет около 200000 операторов INSERT, SELECT и UPDATE в секунду.
Все это написано на PL / SQL, PL / pgSQL и PL / PerlU. И я уверен, что система может работать даже быстрее, когда (некоторые) функции переписаны на C.
В этом устройстве большая часть производительности достигается благодаря плате SSD. На одном вращающемся диске мы никогда не получим такую производительность. Дешевые SSD-накопители также выходят из строя, они работают в течение часа (из-за кеширования raid-карты), а затем игра заканчивается. Карта FusionIO стоит дорого, но это очень хорошая инвестиция, когда вы связаны с IO.
источник