Glücklicherweise verfügt MySQL über ein REPLACE-Statement. Es verhält sich wie ein UPDATE-Statement, wenn ein durch die WHERE-Klausel definierter Datensatz bereits existiert. Ist das nicht der Fall, verhält sich REPLACE genau wie INSERT. Es wird also nur ein einzelnes Statement an die Datenbank geschickt, Race-Conditions sind dadurch ausgeschlossen.
Die Extension „dmc_highPerformance“ integriert eine Methode namens „t3lib_db::exec_REPLACEquery()“ in den Datenbank-Layer von TYPO3 und ersetzt an relevanten Stellen die bisherige DELETE/INSERT-Logik. Der Nachteil dieses Ansatzes: Für alle eingehenden Anfragen wird die Seite solange vollständig gerendert, bis dieser Vorgang abgeschlossen ist und der Cache-Inhalt in die Datenbank geschrieben wurde.
REPLACE ist nicht Teil des SQL-ANSI-Standards und steht daher für andere Datenbanktypen nicht unbedingt zur Verfügung. Eine Alternative zur Kombination DELETE/INSERT ist UPDATE/INSERT. Dabei wird zunächst versucht, einen Datensatz zu aktualisieren – egal ob dieser bereits existiert oder nicht. Schlägt das UPDATE fehl, weil kein Datensatz gefunden wurde, kann dieser über INSERT eingefügt werden. Nachteile dieser Methode gegenüber der Kombination DELETE/INSERT ist jedoch, dass das UPDATE-Statement in aller Regel einen Fehler produziert, der geloggt wird sowie die Tatsache, dass immer noch zwei statt einem Statement benötigt werden, was Zeit kostet.
Master-Slave-Replikation von MySQL optimieren
Teil der Lösung für ein hochverfügbares System ist eine Master-Slave-Replikation der Datenbank. Hierbei existieren zwei Server, auf denen eine MySQL-Datenbank läuft. Eine Maschine – der Master – ist TYPO3 bekannt. Alle Anfragen, lesend wie schreibend, werden an den Master gestellt und von ihm beantwortet.




![Social Commerce: Wird Pinterest der nächste Gamechanger? [Infografik]](http://t3n.de/uploads/t3n-news-post-365754_pinterest2_medium.jpg)

