Estoy tratando de encontrar información sobre las funciones definidas por el usuario de PostgreSQL en el rendimiento de los lenguajes de procedimiento para tareas en tiempo real.
- ¿Cómo se comparan con las funciones integradas?
- ¿Hay alguna diferencia (en gastos generales) en cómo Postgres llama / gestiona plpython vs plpgsql vs pllua (estoy interesado en el lado de integración / contexto / transferencia de datos de Postgres, no en la VM en sí)?
- ¿Es el contexto una gran sobrecarga? ¿Puedo usarlo para el mapeo de datos en tiempo real (digamos 1000 consultas / s))
- ¿Hay algún beneficio de escribir funciones definidas por el usuario en plpgsql y luego en otro pg / idioma? En la documentación enumeran ventajas, pero creo que se aplican a todos los lenguajes de procedimiento postgresql.
Hallazgos relacionados:
fuente
Esto es bastante difícil de decir. realmente depende de lo que estés haciendo. por ejemplo: PL / pgSQL es maravilloso si tiene grandes sentencias SQL en él; realmente se vuelve loco si tiene todo tipo de ramificación, administración de subcadenas y todo eso.
realmente tienes que probar de un caso a otro.
fuente
El rendimiento depende del hardware y la complejidad de sus funciones. Creé un dispositivo que funcionaba en un pequeño servidor de 12 núcleos y una tarjeta FusionIO (costo total de 10000 euros) e hice alrededor de 2500 transacciones por segundo con 20 usuarios concurrentes. Cada transacción requiere 29 procedimientos almacenados para procesar los datos y devolver cierta información útil al cliente. Algunas funciones ejecutan solo una consulta, otras un par de consultas. En total, ejecuta aproximadamente 200000 instrucciones INSERT, SELECT y UPDATE por segundo.
Todo esto está escrito en PL / SQL, PL / pgSQL y PL / PerlU. Y estoy bastante seguro de que el sistema puede ejecutarse aún más rápido cuando (algunas) funciones se reescriben en C.
En este dispositivo, la mayor parte del rendimiento proviene de la tarjeta SSD. En un solo disco giratorio, nunca obtendríamos este rendimiento. Las unidades SSD baratas también fallan, funciona durante una hora (debido al almacenamiento en caché de la tarjeta de banda) y luego se termina el juego. La tarjeta FusionIO es costosa, pero es una muy buena inversión cuando estás obligado a hacer IO.
fuente