Einer meiner Mitarbeiter behauptet, dass parametrisiertes SQL, das von einem ORM generiert wird, auf keinen Fall so schnell ist wie eine gespeicherte Prozedur, auch wenn der Ausführungspfad zwischengespeichert wird. Können Sie diesem hartnäckigen Entwickler helfen?
Antworten
Zu viele Anzeigen?Messen Sie es, aber in einem Nicht-Mikro-Benchmark, d.h. etwas, das reale Vorgänge in Ihrem System repräsentiert. Selbst wenn es einen winzigen Leistungsvorteil für eine gespeicherte Prozedur gäbe, wäre dieser im Vergleich zu den anderen Kosten, die Ihr Code verursacht, unbedeutend: tatsächliches Abrufen von Daten, Konvertierung, Anzeige usw. Ganz zu schweigen davon, dass die Verwendung von gespeicherten Prozeduren dazu führt, dass Ihre Logik über Ihre Anwendung verteilt wird. et Ihre Datenbank ohne nennenswerte Versionskontrolle, Unit-Tests oder Refactoring-Unterstützung in letzterer.
Genauso schnell geht es, wenn die Abfrage jedes Mal dieselbe ist. SQL Server 2005 speichert Abfragepläne auf der Ebene jeder Anweisung in einem Stapel, unabhängig davon, woher die SQL-Anweisungen stammen.
Der langfristige Unterschied könnte darin bestehen, dass gespeicherte Prozeduren für einen DBA um ein Vielfaches einfacher zu verwalten und zu optimieren sind, während Hunderte von verschiedenen Abfragen, die aus Profiler-Traces gewonnen werden müssen, ein Alptraum sind.
0 Stimmen
Hier ist ein weiterer Link zu einem Artikel von Franz Bouma. Und eine weitere über die Skalierung von gespeicherten Prozeduren. Und natürlich CodingHorror zur Frage der gespeicherten Verfahren.