42 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
kann, und dass es nie ein automatisches Rollback geben kann (was bei transaktionsbasieren-
den Systemen vorkommen kann, wenn Sie nicht sehr vorsichtig sind). MySQL garantiert
auch, dass es keine schmutzigen Lesezugriffe (Dirty Reads) gibt. Sie finden einige Beispiele,
wie man atomische Updates schreibt, im Abschnitt ¨uber Commits und Rollbacks.
Wir haben reichlich ¨uber Integrit¨at und Performance nachgedacht und glauben, dass
unser atomisches Paradigma sowohl Zuverl¨assigkeit als auch extrem hohe Performance
gew¨ahrleistet, und zwar drei- bis f¨unfmal schneller, als es die schnellste und optimal
eingestellte transaktionale Datenbank schafft. Wir haben Transaktionen nicht deshalb
heraus gelassen, weil sie schwer zu machen sind. Der Hauptgrund f¨ur die Entscheidung
f¨ur atomische Operationen gegen Transaktionen liegt darin, dass wir dadurch viele
Geschwindigkeitsoptimierungen machen konnten, die auf andere Art nicht m¨oglich gewesen
w¨aren.
Viele unserer Benutzer, f¨ur die Geschwindigkeit das Wichtigste ist, haben keinerlei Bedenken
hinsichtlich Transaktionen. F¨ur sie sind Transaktionen kein Thema. Diejenigen Benutzer,
die Sorgen mit Transaktionen haben oder sich dar¨uber wundern, dass MySQL diese nicht
unterst¨utzt, gibt es eine “MySQL-Art”, die wir weiter oben beschrieben haben. Denjenigen,
denen Sicherheit wichtiger als Geschwindigkeit ist, empfehlen wir die Benutzung von BDB-
oder InnoDB-Tabellen f¨ur alle kritischen Daten. Siehe Kapitel 8 [Table types], Seite 482.
Ein letzter Hinweis: Wir arbeiten zur Zeit an einem sicheren Replikationsschema, vom dem
wir glauben, dass es besser als jedes kommerzielle Replikationssystem ist, das wir kennen.
Dieses System wird mit dem atomischen, nicht-transaktionalen Paradigma mit h¨ochster
Zuverl¨assigkeit laufen. Bleiben Sie dran!
2.7.4.4 Gespeicherte Prozeduren und Trigger
Eine gespeicherte Prozedur ist ein Satz von SQL-Kommandos, die kompiliert und auf dem
Server gespeichert werden k¨onnen. Wenn dies einmal geschehen ist, m¨ussen Clients nicht
mehr die gesamte Anfrage absetzen, sondern k¨onnen sich auf die gespeicherte Prozedur
beziehen. Hiermit wird bessere Performance erreicht, den die Anfrage muss nur einmal
geparst werden, und es muss weniger Information zwischen Client und Server ausgetauscht
werden. Man kann sogar die konzeptionelle Ebene steigern, indem man Bibliotheken von
Funktionen auf dem Server bereit h¨alt.
Ein Trigger ist eine gespeicherte Prozedur, die aufgerufen wird, wenn ein bestimmtes Ereig-
nis eintritt. Beispielsweise kann man eine gespeicherte Prozedur installieren, die jedes Mal
ausgef¨uhrt wird, wenn ein Datensatz aus einer Transaktionstabelle gel¨oscht wird, und die
automatisch den dazu geh¨origen Kunden aus einer Kundentabelle l¨oscht, wenn alle seine
Transaktionen gel¨oscht wurden.
F¨ur ein sp¨ateres Release ist geplant, dass MySQL gespeicherte Prozeduren handhaben kann,
aber ohne Trigger. Trigger verlangsamen ¨ublicherweise alles, sogar Anfragen, f¨ur die sie
nicht ben¨otigt werden.
Um festzustellen, ab wann MySQL gespeicherte Prozeduren bekommen wird, siehe auch
Abschnitt 2.8 [TODO], Seite 48.
Comentarios a estos manuales