(MySQL) Array in einer MySQL-Datenbank speichern
Hopsel
- php
Hi alle!
Für einen Caching-Mechanismus möchte ich ein Array in einer Datenbank speichern, da das Erstellen des Arrays ziemlich lange dauert bzw. dauern kann.
Gibt es dafür eine performantere Vorgehensweise als über die PHP-Funktionen serialize() und unserialize() zu gehen und das Array serialisiert in einem Textfeld in der Datenbank zu speichern?
Für PHP kann eine Version >= 5.2.x vorausgesetzt werden. Die MySQL-DB ist >= 5.0.
MfG H☼psel
Hi!
Gibt es dafür eine performantere Vorgehensweise als über die PHP-Funktionen serialize() und unserialize() zu gehen und das Array serialisiert in einem Textfeld in der Datenbank zu speichern?
Vermutlich nicht. Ein PHP-Array ist ein komplexes Gebilde und kein monolithischer Block im Speicher, von dem man einfach so ein Speicherabbild ziehen könnte.
Lo!
Hi dedlfix!
Gibt es dafür eine performantere Vorgehensweise als über die PHP-Funktionen serialize() und unserialize() zu gehen und das Array serialisiert in einem Textfeld in der Datenbank zu speichern?
Vermutlich nicht. Ein PHP-Array ist ein komplexes Gebilde und kein monolithischer Block im Speicher, von dem man einfach so ein Speicherabbild ziehen könnte.
Danke, das habe ich mir schon gedacht. Aber selbst mit der Serialisierung bleibt das Chaching performanter.
MfG H☼psel
Hi Hopsel.
Aber selbst mit der Serialisierung bleibt das Chaching performanter.
Jetzt ist aber eine Serialisierung nun auch nicht so eine Riesensache, wie Du es darstellst. Schau Dir mal die von serialize() produzierte String-Repraesentation eines Arrays an. Um die zu basteln, muss einmal das Array durchlaufen und im wesentlichen die relevanten Daten (Keys und Werte) hintereinander in einen String geschrieben werden (wodurch halt noch ein paar Typkonvertierungen dazukommen).
Und dass fuer das externe Speichern irgendetwas derartiges geschehen muss, ist ja klar, denn ein PHP-Array besteht im wesentlichen aus nem Haufen Zeigern auf die jeweiligen Eintraege (die wiederum genauso aussehen koennen). Daher kann es im Speicher u.U. ziemlich zerstreut sein, und die Daten muessen nun mal fuers externe Speichern irgendwie an denselben Ort gebracht werden.
Soll jedenfalls heissen: wenn die Serialisierung Deine groesste Sorge ist - und ich wuensche es Dir - dann solltest Du eigentlich ein gluecklicher Mensch sein :-)
Viele Gruesse,
der Bademeister