2012-03-26 4 views
0

Ich habe eine Datenbank und eine Tabelle mit ca. 200 MB Daten. (Produktbeschreibungen und viele Werte) Ich brauche diese Werte, um einige Detail-Seiten anzuzeigen. Also plane ich, ein kleines Cache-System zu verwenden, um die Dinge zu beschleunigen. Ich denke, Serialisierung ist der bessere Weg, um mit PHP zu gehen.PHP SQL-Cache mit Serialisierung, Optimierung?

Jetzt frage ich mich, wie Sie meine Daten am besten speichern, um die beste Geschwindigkeit zu erhalten. Jedes Produkt als eine Datei, eine Datei mit allen Produkten oder Chunks (sagen wir 100 Produkte pro Datei)?

Ich möchte wie diese Informationen die in einem Objekt speichern, serialisiert sie und speichern:

class saveObj 
{ 
$sql = "SELECT * FROM products LIMIT 0,100" 
$time; 
$data;  
}; 

Dateiname: sql_products_0_100.data

Wird mein Plan effizient sein oder weiß jemand einen Weg optimieren?

(würde ich alle Datendateien einmal pro Tag erstellen)

Antwort

0

Dies ohne das Schreiben einig Test-Code zu sagen, hart und einige Profilierung zu tun.

Wenn Sie die 100 Produkte pro Datei Route gehen, werden alle 100 Produkte verwendet, um die Seite zu generieren?

Eine Datei pro Produkt bedeutet, dass die Festplatte viel suchen muss, wenn Sie Daten über 100 Dateien pro Seite benötigen.

Wenn Sie 100 Produkte pro Datei haben, bedeutet dies, dass wenn Ihre Seite nur 1 Produkt benötigt, sie alle Daten einlesen und dann das entsprechende Produkt zum Extrahieren suchen muss.

Mein Vorschlag wäre, APC zu untersuchen. Der Cache wird im Speicher abgelegt, so dass der Zugriff extrem schnell ist und Sie pro Produkt 1 Produkt speichern können, was das erneute Abrufen und Speichern vereinfachen sollte.

Wenn die Last zunimmt und der Lastenausgleich auf mehrere Server erfolgt, können Sie sich Memcached ansehen, ein verteiltes Speichercachesystem.

+0

Ich dachte über Memcached nach, aber memcached scheint ein Problem mit der Shopping-Software zu haben (Prestashop) Unter Verwendung von Dateien hätte ich auch die Möglichkeit, Daten mit einigen Python-Skripten zu ändern. Produktdaten müssen einmal am Tag "aktualisiert" werden und das müssen alle Produktseiten zum Crawlen sein (Google-Händler, andere Suchseiten). –

+0

Wenn bei memcached die Werte im Speicher gespeichert werden, kann dies nicht zu Problemen führen, wenn zu viele Werte gespeichert werden? –

+0

Nein, Memcached ist in Ordnung. Zum Beispiel, wenn Sie einen Server mit 8 GB RAM haben. Sie können dann 7 GB Memcache zum Speichern von Objekten zuweisen. Dies sollte reichlich für Ihre Zwecke sein. Wenn das nicht genug ist, können Sie dem Pool weitere Computer hinzufügen. Wenn Sie jedoch nur einen Server ausführen, sehen Sie sich APC an, da dies ideal für das Caching einzelner Server ist. – F21