| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Unter gewissen Umständen können prepared Statements schneller sein, z.b. wenn man ein query mehrfach ausführt mit unterschiedlichen Parameter, aber der Query-Cache von mysql wird von prepared Statements z.b. erst seit 5.1.17 unterstützt und auch nicht in allen Fällen.
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse: Fortgeschritten ![]() ![]() | Hab mal lokal nen Test gemacht, Update über mehrere Einträge... Alternativ zu PS gibt es nämlich noch CASE und somit ein Update über mehrere Einträge. Genaueres Resultat ist auf meinem Blog zu finden. Ich konnte feststellen, dass die PS eindeutig langsamer sind, aber sehr gut skalieren, was bei dem CASE nicht der Fall ist. Ich glaube nicht, dass es einen wirklichen Overhead durch das Ersetzen gibt. Stilistisch könnte es sogar schön und sicher sein, ist daher wohl nur zu empfehlen. Wenn du nun auf Performance aus bist, sparst du am besten mit der Anzahl der Queries. Wenn du dich an MySQL binden willst, kannst du dir noch Stored Procedures ansehen, die gehen auch sehr schnell, wobei man dort vor allem mit Cursors sparsam sein sollte, meist braucht man sie auch gar nicht. |
| | |
| | |||
| Erfahrener Benutzer Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse: Fortgeschritten ![]() | prepared statements, transaktionen, utf8 und xml und der brian ist glücklich Zitat:
Zitat:
| ||
| | |
| | |
| Benutzer Registriert seit: 17.06.2009
Beiträge: 97
PHP-Kenntnisse: Fortgeschritten ![]() | Vielleicht eine blöde Frage, aber wie lange sind PS eigentlich "aktiv". Also machen die nur Sinn, wenn ich innerhalb einer Verbindung den gleichen Query mit unterschiedlichen Vergleichswerten abfrage oder macht das auch global Sinn, da der Cache für jede Verbindung verfügbar ist? Ansonsten sehe ich nicht den Sinn in PS, weil wiederholte Querys mit unterschiedlichen Parametern, kann ich ja gleich mit ID IN(1,2,3) lösen. Wenn es global geht, woher weiß ich das der Cache dafür schon vorhanden ist? Oder setzt man ihn auf Verdacht hin, dass er noch nicht da ist, einfach immer neu? Die Kommentare hier helfen da leider gar nicht: http://dev.mysql.com/tech-resources/...tatements.html
__________________ meine PHP Scripte |
| | |
| | |
| Benutzer Registriert seit: 17.06.2009
Beiträge: 97
PHP-Kenntnisse: Fortgeschritten ![]() | Ich habe mir mal die Mühe gemacht und alle nur denkbaren SELECT-Varianten in ein Benchmark gepackt. Hier die Ergebnisse: Benchmark: mysql, mysqli - Buffer, Cache und Prepared Stmt - Forum: PHP Unter dem Strich heißt das für mich aktuell, dass PS nur für bestimmte Einsatzzwecke Sinn macht, aber sicher nicht global.
__________________ meine PHP Scripte |
| | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Ich denke mal sehr relevant dabei wäre auch zu wissen welche Version von PHP und mysql verwendet wurden, da sowohl php seit 5.2 einige Sachen im zusammenhang mit der nutzung des Caches von mysql verbessert hat und auch mysql sein Verhalten etwas verändert hat. Beim Einsatz von PHP 5.3 ist dann auch noch relevant ob php mit libmysql kompiliert wurde oder ob es das neue von mysql selbst für php optimierte backend mysqlnd nutzt. Was mir vor allem fehlt ist PDO (das im Zusammenspiel mit aktuellen Versionen von PHP und mysql mittlerweile auch den Cache nutzen kann) Und ein paar Details zum Ablauf des des Benchmarks, inwieweit wurde mysql jedes mal neu gestartet um einen gleichen start zu ermöglichen ... etc.
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
| | |
| Benutzer Registriert seit: 17.06.2009
Beiträge: 97
PHP-Kenntnisse: Fortgeschritten ![]() | PDO kannst Du (noch) vergessen. Der Anspruch von PDO liegt nicht darin schneller als mysqli zu sein. Dazu gibt es schon genug Benchmarks und die zeigen eigentlich sehr klar, dass PDO 3-4x langsamer als mysqli ist. Wenn gewünscht, erweitere ich aber den Test um die entsprechenden PDO Varianten. Serverdaten: PHP Version 5.2.9-1nmm1 MySQL Version 5.0.51a AMD Phenom QuadCore 8 GB Arbeitsspeicher 750 GB Festplatte SATA Hardware-RAID 1 Besondere Optimierungen in Richtung MySQL gibt es nicht, da ich nicht glaube, dass die das Ergebnis wirklich umkehren können. In wie weit nun PHP mit dem CACHE von MySQL besser umgehen können soll, kann ich allerdings nicht ganz verstehen. Wenn dann kann doch nur MySQL den Cache verbessern?! Oder meinst Du den PHP Buffer? Die DB wurde einmal pro Seitenimpression konnektiert, die Abfrage 50 mal durch eine Schleife gejagt und das ganze 100x wiederholt. Die Zeit ist dann der Schnitt aus allen 100 Versuchen.
__________________ meine PHP Scripte |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ä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 |
| prepared statements performance, prepared statement performance, prepared statements, pdo prepared statements performance, php prepared statements performance, vorteile|vorzüge \prepared statements\, preparedstatement schneller ?, mysqli prepared statements escapen, http://www.php.de/php-fortgeschrittene/54741-prepared-statements-immer-einsetzen.html, php prepared statements, mysql prepared statements performance, php prepared statements escape, pdo benchmark, prepared statements schneller, sql prepared statement performance, preparedstatement performance, performance prepared statements, performance preparedstatements, php mysqli escape prepared statement, prepared statement mehrmals php |