2017-01-11 5 views
0

Welchen prozentualen Leistungszuwachs könnte ich erreichen, wenn ich alle meine PLPGSQL-Funktionen (für Postgres 9.6) in C-Sprache mit Server Programming Interface (SPI) umschreibe?Leistung von SPI vs PLPGSQL

Ich schließe nicht die Zeit der Übermittlung der Daten von Server zu Client (die Netzwerkzeit) ein, ich spreche nur über die Daten auf der Serverseite erhalten und formatieren sie vor dem Senden der Pakete an das Netzwerk. Ich weiß, dass alles von der Anwendung abhängt, aber wenn wir als Beispiel ein Backend für Webmail oder eine Website wie StackOverflow nehmen, wie viel Gewinn würde ich in der Leistung bekommen? Ist es das wert?

Antwort

2

PL/pgSQL ist nicht sehr performant, so dass Sie mit einer C-Funktion sicherlich schneller sind als mit einer PL/pgSQL-Funktion. Je mehr Verarbeitung in PL/pgSQL selbst durchgeführt wird, desto deutlicher wird der Leistungsgewinn. Wenn der Großteil der PL/pgSQL-Zeit in SQL-Abfragen verbraucht wird, wird kein großer Leistungszuwachs angezeigt.

Es kommt also auf den individuellen Anwendungsfall an, ob es sich lohnt oder nicht.
Es ist sicherlich schwieriger, eine C-Funktion als eine PL/pgSQL-Funktion zu schreiben.