Nachteil der gespeicherten Prozeduren
Würde gerne eine Liste von vor-und Nachteilen der Verwendung von Gespeicherten Prozeduren. Der wesentliche Vorteil der SPs scheint vorkompiliert werden und eine Abstraktion der Daten von der Anwendung. Gib mir deine Gedanken....
InformationsquelleAutor der Frage CSharpAtl | 2008-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Korrektur: egal, Ob vorkompilierte hängt von der Datenbank. In SQL Server, zum Beispiel, sind Sie nicht. Gespeicherte Prozeduren und parametrisierte SQL werden beide kompiliert, bevor Sie ausgeführt werden. Eine gespeicherte Prozedur kann manchmal verwenden Sie einen Ausführungsplan, falls eine entsprechende vorhanden...aber so kann man die parametrisierte SQL.
Edit: Hier ist, was MSDN dazu sagt:
InformationsquelleAutor der Antwort Ryan Lundy
Vorteile: Bietet ein "public interface", um eine Datenbank (eine weitere Abstraktionsebene).
Auch Gruppen, alle Anfragen am gleichen Ort, wodurch es einfacher für die Administratoren, um zu sehen, wie die Datenbank abgefragt wird, und optimieren Sie entsprechend.
Nachteile: Vielleicht nicht der beste Ort, um komplexe Logik. Jedoch, nach der Idee, die komplexe Logik gehört in den code der Anwendung und nicht in gespeicherten Prozeduren, gespeicherte Prozedur einfach CRUD-Operationen (jede Tabelle hat eine "Create", "Read", "Update" und "Delete" - Verfahren). In diesem Fall gespeicherte Prozeduren nicht fügen Sie einen beliebigen Wert, um die Anwendung, die Sie nur complexify Wartung und zu Abfall werden.
Abfragen sind alle zusammen gruppiert, so dass es schwieriger zu sehen, der Kontext der Anwendung, in der Sie verwendet werden. Die Analyse der Auswirkungen einer änderung länger ist, und macht die änderung mehr als gut.
Daher: die Verwendung von gespeicherten Prozeduren zur Kapselung von komplexen Abfragen (komplexe joins, komplexe where-Klauseln, ...). Aber don ' T verwenden Sie die gespeicherte Prozedur für komplexe Anwendung/domain/business-Logik, und nicht die Verwendung von stored procedures für CRUD. So gespeicherte Prozeduren verwendet werden sollte, in einer Minderheit der Fälle eher als das standard-tool für alle Abfragen in einer Anwendung.
Gruppe code (einschließlich Fragen) zu erreichen "funktionale Kohäsion" statt Gruppierung von tool/Technologie. Zu ermöglichen, ein DBA zu optimieren eine Datenbank auf der Grundlage, wie es der abgefragt wird, verwenden Sie einen profiler.
InformationsquelleAutor der Antwort ckarras
Durch die Verwendung von SPs, die Sie auch vermeiden, die den Benutzern direkten Zugriff auf die Tabellen. Alle Zugriffe können gesteuert werden über die SPs.
InformationsquelleAutor der Antwort NYSystemsAnalyst
Mit der aktuellen .Net 3.5 framework-Bibliotheken, die ich benutzen würde Linq to führen Sie die meisten Datenbank-Operationen. Möglicherweise gibt es Orte, an denen SP macht mehr Sinn. Aber Linq hat Bestimmungen zum ausführen einer SP zu.
Auf dem Thema der Nachteile von SP, schauen Sie sich die folgenden link - eine interessante Analyse. Überprüfen Sie die blog-post ' s Kommentare auch.
http://www.spoiledtechie.com/post/Whats-up-with-Stored-Procedures-these-days.aspx
InformationsquelleAutor der Antwort Vin
Vorteil: Gespeicherte Prozeduren können verwendet werden, um die Datenintegrität aufrechterhalten und durchsetzen Datenbank-Richtlinie, ohne sich auf ein externes Programm zu tun.
Nachteil: Kann Debuggen komplexer. Kann auch sensibel sein, um fallen gelassen zu werden während Kopier-Operationen, wenn nicht richtig gemacht.
InformationsquelleAutor der Antwort Steve
Wahrscheinlich wollen Sie sehen hier eine Diskussion zu diesem Thema.
InformationsquelleAutor der Antwort itsmatt
Ein weiterer Nachteil ist die Versionskontrolle, da einige der business-Logik ist jetzt in der Datenbank-Seite. Können Sie einfach roll-back zu v1 (vor einem Jahr) aus v2 (jetzt)?
Eine praktikable Lösung ist die Versionierung der gespeicherten Prozedur-Namen. Aber jetzt die Datenbank ist ein Durcheinander mit alten und neuen gespeicherten Prozeduren.
InformationsquelleAutor der Antwort yogman
Nachteile
InformationsquelleAutor der Antwort Martynnw
Nachteile
Refactoring ist härter. Umbenennen oder ändern, wo die gespeicherte Prozedur wird produzieren könnte eine schlechte Wirkung.
Unit-Tests gespeicherte Prozedur code benötigen Hilfe außerhalb der DB
Vorteil
InformationsquelleAutor der Antwort Patrick Desjardins
Nur ein paar Gründe, warum ich die Verwendung von gespeicherten Prozeduren, die ausschließlich beim Bau Anwendungen:
InformationsquelleAutor der Antwort Jeff Jones
Vorteil: die DBA Verhalten hinzufügen, dass die Anwendung nicht zu kümmern. Zum Beispiel, speichern Datum ändern auf jede Zeile.
InformationsquelleAutor der Antwort Michael L Perry
Vorteil: Ihre Datenbank-code ist sehr wahrscheinlich, geschrieben von Mitarbeitern, die daran interessiert sind und erfahren in der Datenbank arbeiten.
InformationsquelleAutor der Antwort David Aldridge
Den Vorteil sehe ich in der Verwendung von Gespeicherten Prozeduren über das schreiben der gleichen Logik in der code der Anwendung ist, kann es zu reduzieren die Anzahl der Aufrufe der Anwendung an der Datenbank.
Einer gespeicherten Prozedur kann die Argumente und treffen unterschiedliche Entscheidungen und Handlungen auf der Grundlage dieser Argumente, anstatt ein Resultat der Anwendung, und die Anwendung dann eine Entscheidung zu treffen und zu entscheiden, die es braucht, um andere Vorgänge durchzuführen, und stellen eine andere Datenbank aufrufen.
Den Flaschenhals in der Leistung ist fast immer mit inter-Prozess-Kommunikation. Ich versuche, die minimale Anzahl der Aufrufe der Datenbank.
InformationsquelleAutor der Antwort Clinton
Vorteil: das operations-team hat einen Haken zu überwachen oder beheben von Problemen in der Produktion.
InformationsquelleAutor der Antwort Michael L Perry
Vorteile: SP ' s werden verwendet, um excute sql-Anweisungen.
Nachteile: Debugging ist Komplex
InformationsquelleAutor der Antwort
Ein weiterer Vorteil kann in großen enterprise-Umgebungen, in denen Sie haben könnte, mehrere client-Anwendungen & Umwelt (wie zum Beispiel web -, desktop -, reporting-tools, verteilt auf verschiedenen OS ' s), die die Datenbank verwenden. Für einige business-Regel-änderungen für die änderung in der Datenbank und diese wirksam sein würde, der in allen Umgebungen.
InformationsquelleAutor der Antwort Alan Savage
Vorteile -
InformationsquelleAutor der Antwort Ajay
Es erhöht die Last auf dem server. Wenn andere Anwendungen oder mehrere Anwendungen die gleiche Datenbank benutzen server-Sie werden zu langsam.
InformationsquelleAutor der Antwort Rakesh kumar -Melstar
die einfache Antwort würde sein, als folgt:
adv: es ist die mächtigste Struktur zur Kapselung von T-SQL-Codes.
es ist nicht beschränkt auf WÄHLEN Sie, und es unterstützt alle DML-codes.
es bietet zu erhalten, Eingänge und Ausgänge direkt.
dis: es ist nicht möglich, rufen Sie ihn WÄHLEN, so dass Sie nicht es für
mehrere Datensätze.
InformationsquelleAutor der Antwort Mohamad Reza Taghipour