php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.10.2009, 09:28  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.234
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Bei Benchmarks ist immer auch wichtig, zu erläutern, was man messen will. Alleine die Tatsache, dass es keinen messbaren Unterschied ergibt, heißt noch lange nicht, dass kein Unterschied feststellbar ist. Dazu muss ich aber etwas ausholen.

Generell arbeitet jede moderne Datenbank in mehreren Stufen einen Query ab.
1. Stufe: Analyse des eingegebenen Statements
2. Stufe: Ermitteln des geschicktesten Ablaufs/ Zugriffspfads
3. Stufe: Zugriff auf die Datenbanktabellen, evtl. Nutzen von Indices für Where-Bedingungen usw.
4. Stufe: Bilden der Ergebnismenge, evtl. höherstufige MySQL-Funktionen usw.

Prepared Statements kommen genau dann zum Tragen, wenn Stufe 1 und Stufe 2 zuschlagen, also die eigentliche Analyse des Statements. Aufgrund der dynamischen Struktur (eine DB rechnet immer mit einem völlig neuen Query) muss die Analyse normalerweise immer aufs neue durchlaufen werden. Genau dann, wenn die Analyse des Query aufwändig ist, genau dann "lohnt" sich ein Prepared-Statement. Aber auch nur dann, wenn man es richtig nutzt. Ein Statement zu preparen, um es dann genau einmal zu verwenden, ist aus Performance-Sicht überflüssig.

Nun kommt das große ABER. Wenn ein Query prepared wird, ist der Wiederkennungseffekt für die Datenbank oder den Treiber oder sonstwas gegeben. Selbst wenn es nicht im gleichen Prozess zweimal verwendet wird, kann die Datenbank durch geschickten Query-Cache die optimalen Zugriffspfade cachen und somit bei aufwändigen Queries die Analyse-Phase auf einen schnellen Cache-Zugriff minimieren. Zudem werden aufwändige Optimierungsmethoden (darunter fällt beispielsweise die Entscheidung, ob ein Index-Zugriff möglich ist oder nicht) nicht unnötig oft von der DB vorgenommen.

Wann sich also Prepared Statements lohnen und wann nicht, kann man so pauschal kaum beanworten. Das hängt vor allem auch von äußeren Einflüssen wie Aufrufhäufigkeit, Wiedererkennungswert, Komplexität und Menge der Daten, User-Verhalten usw ab. Und natürlich, wie robo schon richtig sagt, auch von den verwendeten Treibern/Versionen.

Dein Benchmark geht leider am Thema vorbei, denn der Analyse-Overhead ist durch die Einfachheit deines Queries bereits derart minimal, dass andere Schritte (Kommunikation/Datenübermittlung, Festplattenzugriff) wohl zu 99% die Laufzeit der Queries ausmachen. Dann ist der Vorteil nahezu nicht messbar.

Die Frage, die man sich eher stellen sollte: Sind prepared statements langsamer als "normale" und wenn ja: Fällt dieser Nachteil überhaupt ins Gewicht. Hier fehlen mir die Erfahrungswerte aber in aller Regel sind die Laufzeit-Nachteile der prepared statements und die erhöhte Netzwerkkommunikation derart gering, dass alle Vorteile gerade bzgl. besserem Cachings, die Nachteile überwiegen.

P.S.: Durch das Verwenden eines Query-Cache ist bereits der Wiederekennungseffekt für den Query gegeben, so dass prepared statements eigentlich überflüssig sind. Aber gerade bei unterschiedlichen Where-Bedingungen kann ein zusätzliches Prepare noch weitere Vorteile bringen.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist gerade online   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQLi und Prepared Statements #Avedo Datenbanken 5 24.03.2010 17:39
[Erledigt] Mysql:Mergen der Ergebnisse zweier Select Statements... cosmicadi Datenbanken 5 21.02.2009 14:25
[Erledigt] PDO Connection (prepared Statement) als Funktion phpels PHP Tipps 2008 10 02.12.2008 19:05
PDO: beginTransaction nicht mit prepared statements? HStev PHP Tipps 2008 0 16.09.2008 14:35
[Erledigt] bildquelle ermitteln und als variabel speichern und einsetzen ld_forester PHP Tipps 2008 8 27.08.2008 12:11
PDO: 2 Statements nacheinander? HStev PHP Tipps 2008 4 25.08.2008 11:24
Frage zu prepared statements mit pdo Mack22 PHP-Fortgeschrittene 3 16.05.2008 15:10
[Erledigt] Smilies mittels str_replace einsetzen? jackoff PHP Tipps 2008 31 13.05.2008 21:48
begin, commit und rollback statements wollen nicht h0nIg Datenbanken 4 29.08.2007 11:49
Wann persistente MySQL Connections einsetzen? HStev PHP-Fortgeschrittene 2 02.02.2006 13:14
[Erledigt] DB-Design und die Statements dazu Datenbanken 2 13.01.2006 11:15
RealEscape und Mehrzeilige SQL Statements HStev PHP Tipps 2007 6 09.12.2005 21:14
[PHP«Image] Bild in ein anderes Bild einsetzen PHP Tipps 2005-2 4 07.08.2005 19:39
TPL System - Funktionen - Einsetzen - Rechte Problem PHP Tipps 2005 4 26.03.2005 15:17
Intro einsetzen ? PHP Tipps 2004 2 05.08.2004 17:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
vorteile prepared statements, preparedstatement vorteile, vorteile preparedstatement, vorteil von prepared statements, java unterschied statement preparedstatement, unterschied statement preparedstatement, unterschied statement and prepared statement, nachteil prepared statement, prepared statements nachteile, vorteil prepared statement, unterschied statement prepared statement, vorteil prepared statements, prepared statements vorteile, prepared statements nachteil, nachteil prepared statements, unterschied preparedstatement, statement prepared statement unterschied, statement preparedstatement unterschiede, wie prepared statements verwenden, vorteil preparedstatement

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum