MySQLnd

Falls es euch nicht aufgefallen ist, diese Seite lädt jetzt etwa 1ms schneller.

Warum das so ist?

Seit kurzem nutze ich php5-mysqlnd, nicht php5-mysqld.
Das ganze greift schneller auf die MySQL DB zu und arbeitet Hand in Hand mit der Zend Engine zusammen.

Dazu zitiere ich mal großzügig http://blog.felho.hu/what-is-new-in-php-53-part-3-mysqlnd.html und übersetze es Frei in’s Deutsche:

Bessere Zusammenarbeit mit der Zend Engine
Mysqlnd ist deutlich besser in die Zend engine integriert, somit kann es die interne PHP-mysql Kommunikationsstrukturen und das Memory Management selbst nutzen. Zudem sind damit noch weitere Performanceverbesserungen mit an Bord. Hier seht ihr ein Benchmark über die Performance von mysqlnd.

Bessere Verarbeitung von memory_limit settings
memorylimitsupport
Myslqnd nutzt das memory management der Zend Engine und kann somit, anders als libmysql, die memory_limits einhalten. Größere Memory chunks werden geladen und es versucht zvals über den zval cache mehrfach zu nutzen um CPUlast einzusparen.

RAMeinsparung
readonlyvariables
Mysqlnd führt ein interessantes Konzept ein: read only Variablen womit es möglich ist, viel RAM zu sparen.
Kurz und knackig: Wenn man eine gebufferte Anfrage an libmysql sendet, werden erst die Daten in den eigenen Buffer geschrieben. Wenn man dann mysql_fetch_*() ausführt, wird das Ergebnis in den RAM geschrieben, welcher die PHP Variable repräsentiert.
Bei Mysqlnd nun wird das Ergebnis des fetchens nicht in den RAM einer PHP Variable geschrieben, stattdessen wird auf den eigenen Buffer verlinkt. Dadurch wird nur die hälfte an RAM benötigt.

Persistent connections
Vielleicht wisst ihr das persistent connections in der mysqli extension deaktiviert wurde, aber mit mysqlnd kann man diese wieder nutzen.

Speichere in deinen Favoriten diesen permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert