Frage

Ich zitiere Teil einer Antwort, die ich für eine andere Frage von mir :

  

In der PHP / MySQL Welt würde ich sagen,   Stored Procedures sind no-go

Ich möchte wissen: Ist das so? Warum? Warum nicht?

[Bearbeiten] Ich meine, dies als eine allgemeine Frage ohne besonderen Bedarf im Auge [/ edit]

War es hilfreich?

Lösung

Ich entwickle und eine große PHP / MySQL-Anwendung erhalten. Hier ist meine Erfahrung mit Stored Procedures.

Im Laufe der Zeit hat sich unsere Anwendung sehr komplex geworden. Und mit dem ganzen Logik auf der PHP-Seite, einige Operationen, die Datenbank mit mehr als 100 kurzen Abfragen abfragen würden.

MySQL ist so schnell, dass die Leistung noch akzeptabel war, aber nicht groß.

Wir haben die Entscheidung in unserer neuesten Version der Software einen Teil der Logik, um gespeicherte Prozeduren für komplexe Operationen zu bewegen.

Wir haben eine deutliche Leistungssteigerung erzielen aufgrund der Tatsache, dass wir nicht zum Senden von Daten hin und her zwischen PHP und MySQL haben.

ich mit den anderen Plakaten stimmen hier, dass PL / SQL ist keine moderne Sprache und ist schwer zu debuggen.

Fazit: Stored Procedures ist ein großes Werkzeug für bestimmte Situationen. Aber ich würde nicht mit ihnen empfehlen, wenn Sie einen guten Grund haben. Für einfache Anwendungen sind gespeicherte Prozeduren nicht die Mühe wert.

Andere Tipps

Bei der Verwendung von gespeicherten Prozeduren mit MySQL, müssen Sie oft das mysqli Schnittstelle in PHP und nicht der regelmäßigen mysql Schnittstelle.

Der Grund dafür ist, aufgrund der Tatsache, dass die oft gespeicherten Prozeduren mehr als 1 Ergebnismenge zurück. Ist dies der Fall, kann die MySQL API behandelt es nicht und werden Sie Fehler bekommen.

Die mysqli-Schnittstelle Funktionen zum Umgang mit diesen mehreren Ergebnismengen, Funktionen wie mysqli_more_results und mysqli_next_result .

Beachten Sie, dass, wenn Sie irgendein Ergebnis zurück an alle aus der gespeicherten Prozedur, dann müssen Sie diese APIs verwenden, wie die gespeicherte Prozedur erzeugt einen Ergebnissatz für die tatsächliche Ausführung und dann 1 zusätzliche einen für jede Ergebnismenge absichtlich von der gespeicherten Prozedur zurückgegeben.

ich von gespeicherten Prozeduren im Allgemeinen bleiben weg, weil sie die Last der Datenbank hinzufügt, die 99% der Zeit ist, Ihre größte Engpass. einen neuen PHP-Server hinzuzufügen, ist nichts im Vergleich zu machen MySQL db Replikation.

Sie haben einen besonderen Bedarf daran, die Sie sie betrachten macht? Stored Procedures sind viel weniger tragbar als „plain“ SQL, das ist in der Regel, warum die Menschen nicht wollen, sie benutzen. Auch einen fairen Anteil an PL / SQL geschrieben zu haben, muß ich sagen, dass das Verfahren Weg, um Code zu schreiben, erhöht die Komplexität und es ist einfach nicht sehr modern oder prüfbar. Sie könnten in einigen speziellen Fällen nützlich sein, wo Sie optimieren müssen, aber ich würde auf jeden Fall zweimal überlegen. Jeff hat ähnliche Meinungen .

Dies ist eine subjektive Frage.

Ich würde persönlich alle Berechnungen innerhalb von PHP und wirklich nur als Tabelle verwenden MySQL.

Aber, wenn Sie das Gefühl, dass es einfacher ist, dann gespeicherte Prozeduren zu verwenden, mit allen Mitteln, gehen Sie voran und es tun.

würde ich nicht sagen „Stored Procedures ist ein No-Go“, würde ich sagen „Macht sie nicht ohne guten Grund verwenden“.

MySQL gespeicherte Prozeduren haben eine besonders schreckliche Syntax (Oracle und MSSQL sind auch ziemlich schrecklich), die Aufrechterhaltung sie verkompliziert nur Ihre Anwendung.

Führen Sie eine gespeicherte Prozedur verwenden, wenn Sie einen echten (messbar) Grund haben, dies zu tun, sonst nicht. Das ist meiner Meinung nach sowieso.

Es gibt möglicherweise eine Phobie von gespeicherten Prozeduren mit mysql, zum Teil aufgrund nicht übermächtig zu sein (im Vergleich zu Postgresql und sogar MSSQL, mysqls gespeicherte Prozeduren fehlt stark).

Auf der Plus: Sie machen damit von mehr als eine Sprache einfacher Schnittstelle.

Wenn jemand sagt, dass „ Verwendung von gespeicherten Prozeduren schlecht ist, weil es ist nicht tragbar verschiedene Datenbanken “, dann dies natürlich bedeutet, dass sie denken, dass Sie wahrscheinlich sind Datenbanken zu wechseln, das heißt, sie wiederum sagen, sie denken Sie nicht, verwenden mySQL sollte.

Es ist sehr beliebt in diesen Tagen ORM zu bedienen ist, aber ich persönlich denke, ORM ist ein BadThing ( Frage : 82882 )

Ich denke, dass gespeicherte Prozeduren verwenden, kann einige Abstraktion in bestimmten Anwendungen bieten, wie in jedem, wo Sie den gleichen SQL-Code Chunk die gleichen Daten zu aktualisieren oder fügen Sie verwenden würden, könnten Sie dann schaffen die eine sproc save_user ($ attr .. ...) vielmehr, dass ihr alle über den Platz zu wiederholen.

Vereinbart ist die Syntax haarigen und wenn Ihr verwendet, um MSSQL und Oracle sprocs gibt es Unterschiede, die fustrate können.

Sie sollten sich auch bewusst sein, dass gespeicherte Prozeduren wurden in Mysql 5.0 nicht vor der Version unterstützt. http://dev.mysql.com/doc/refman/ 5.0 / de / speicher routines.html auch neigten gespeicherte Prozeduren in dieser Ausführung ein bisschen komisch zu sein sein. Nun, da Mysql 5.1 beginnt in der freien Natur auftaucht ich mehr Verwendung von gespeicherten Prozeduren mit Mysql zu sehen.

Ich mache begrenzte Verwendung von Stored Procedures, und es funktioniert gut. Ich bin der Lead Entwickler für eine meiner Unternehmen Kunden, auf ihre E-comm Webseite arbeiten. Der Kunde hat ein Aktiensystem, wir implementiert eine Reihe von gespeicherten Prozeduren auf ihrem System und bauten eine API, mit ihm zu kommunizieren. Dies erlaubte uns, zu abstrahieren ihrer Datenbank, und sie konnten Logik in den gespeicherten Prozeduren implementieren. Einfach, aber sehr gut erfüllte die Geschäftsanforderungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top