J'essaie de trouver des informations sur les fonctions définies par l'utilisateur de PostgreSQL dans les performances des langages procéduraux pour les tâches en temps réel.
- Comment se comparent-ils aux fonctions intégrées?
- Y a-t-il une différence (dans les frais généraux) avec la façon dont Postgres appelle / gère les fonctions plpython vs plpgsql vs pllua (je m'intéresse au côté intégration / contexte / transfert de données Postgres, pas à la VM elle-même)?
- Le contexte est-il un gros frais généraux? Puis-je l'utiliser pour le mappage de données en temps réel (disons 1000 requêtes / s))
- Y a-t-il un avantage à écrire des fonctions définies par l'utilisateur dans plpgsql puis dans d'autres pg / langues? Sur la documentation, ils énumèrent les avantages, mais je pense qu'ils s'appliquent à tous les langages procéduraux postgresql.
Constatations connexes:
la source
c'est assez difficile à dire. cela dépend vraiment de ce que vous faites. par exemple: PL / pgSQL est merveilleux si vous avez de grandes instructions SQL dedans - ça devient vraiment fou si vous avez toutes sortes de branchements, de gestion de sous-chaînes et tout ça.
il faut vraiment tester au cas par cas.
la source
Les performances dépendent du matériel et de la complexité de vos fonctions. J'ai créé une appliance qui fonctionnait sur un petit serveur 12 cœurs et une carte FusionIO (coût total 10000 euros) et j'ai effectué environ 2500 transactions par seconde avec 20 utilisateurs simultanés. Chaque transaction appelle 29 procédures stockées pour traiter les données et renvoyer des informations utiles au client. Certaines fonctions exécutent une seule requête, d'autres quelques requêtes. Au total, il exécute environ 200 000 instructions INSERT, SELECT et UPDATE par seconde.
Tout cela est écrit en PL / SQL, PL / pgSQL et PL / PerlU. Et je suis sûr que le système peut fonctionner encore plus rapidement lorsque (certaines) fonctions sont réécrites en C.
Dans cet appareil, la plupart des performances proviennent de la carte SSD. Sur un seul disque rotatif, nous n'obtiendrions jamais cette performance. Les disques SSD bon marché échouent également, cela fonctionne pendant une heure (en raison de la mise en cache de la carte de raid), puis la partie est terminée. La carte FusionIO est chère, mais un très bon investissement lorsque vous êtes lié aux E / S.
la source