Laden...

Wann gespeicherte Prozeduren

Erstellt von Kriz vor 2 Jahren Letzter Beitrag vor 2 Jahren 383 Views
K
Kriz Themenstarter:in
141 Beiträge seit 2017
vor 2 Jahren
Wann gespeicherte Prozeduren

Moin,

der Titel sagt schon alles, wann macht es Sinn gespeicherte Prozeduren zu nutzen?
Klar, wenn es komplexe Abfragen sind.
Klar, um Injection zu vermeiden.
Aber macht es auch Sinn bei "einfachen Abfragen" wie beispielsweise: SELECT Id, Name, Nummer FROM Mitarbeiter WHERE Alter < 30 ?

W
113 Beiträge seit 2006
vor 2 Jahren

Hallo Kriz,

ich würde so gut es geht, vermeiden in der DB Logik abzubilden.
Das ist meiner Ansicht nach schwer zu Testen und irgendwie ja auch nicht die Aufgabe einer DB.

sg,
Xan

16.833 Beiträge seit 2008
vor 2 Jahren

Klar, wenn es komplexe Abfragen sind.
Klar, um Injection zu vermeiden.

Beides für mich keine pauschalen Gründe, StoredProcs zu verwenden.
Gerade komplexe Dinge werden in SPs sehr schnell unübersichtlicht und gehöre besser die Anwendungsschicht.

Aber macht es auch Sinn bei "einfachen Abfragen" wie beispielsweise: SELECT Id, Name, Nummer FROM Mitarbeiter WHERE Alter < 30 ?

Auch hier: pauschal nein.

Wo Stored Procs Sinn machen:

Um RoundTrips zu vermeiden

Hier im Forum vermeiden wir verschiedene Round Trips mit Stored Procs:

  • Wenn ein Thread aufgerufen wird, wird ein "ThreadVisited" Stored Proc ausgeführt, der dann gewisse Dinge in der Datenbank aktualisiert (UserLastVisitedDate, VisitCount++...).
  • Bei jedes Request wird geprüft ob der Auth noch valide ist

Dadurch, dass es nur "Aktionen" sind, sparen wir uns die ganze Query-Auswertung aus dem Client.
So ist nur ein einziger SQL Request notwendig und nicht mehrere. Dadurch ist die Latenz geringer

Für SQL spezifische Aktionen

  • zB für Indexed Views

Ansonsten wirds dünn für positives von SPs.

--> Wenn Dein Query also keine DB-spezifischen Dinge macht, dann lass lieber SPs aus dem Spiel.

K
Kriz Themenstarter:in
141 Beiträge seit 2017
vor 2 Jahren

Oha, ich dachte gespeicherte Prozeduren sind das "Non plus ultra" der Sicherheit. Na man lernt nie aus.
Vielen Dank für die Tips!

16.833 Beiträge seit 2008
vor 2 Jahren

Mit Sicherheit haben Stored Procs gar nichts zutun.
Sie sind auch nicht performanter; befinden sich technisch im gleichen Query Cache wie normale Abfragen.

6.911 Beiträge seit 2009
vor 2 Jahren

Hallo Kriz,

"Non plus ultra" der Sicherheit

Das wichtigste ist die Queries zu parametrisieren -> [Artikelserie] SQL: Parameter von Befehlen bzw. für andere Datenzugriffstechnologien (EF Core, etc.) analog.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"