Ich habe eine Klasse, die ihr Mitglied (mehr oder weniger 10 Mitglieder) aus einer Datenbank abruft.
Meine Frage ist: ist es effizienter, sie jedes Mal von der db (MySQL) abzurufen, nur eine ID im Array der Sitzung zu lassen oder sie direkt im Array der Sitzung zu speichern?
Und ist der Leistungsunterschied so groß? (bei einer Datenbank mit etwa 100.000 Zeilen)
In Anbetracht dessen, dass Sie eine ID in der Sitzung speichern, ist die Sitzung am sinnvollsten. Wenn Sie session_start () ausführen, werden Ihre Sitzungsinformationen geladen. Ob Sie danach 1 oder 10 Elemente geladen haben, ist weitgehend irrelevant (es sei denn, sie sind wirklich groß, aber das ist in jedem Fall ein Problem).
Bleiben Sie also bei der Sitzung.
Wenn Sie wirklich auf Geschwindigkeit achten, verwenden Sie einen In-Memory-Cache wie APC oder Memcache. Sich über die Geschwindigkeit von 10 Elementen aus dem Dateisystem oder der Datenbank Sorgen zu machen, ist eine Ablenkung. Der Unterschied wird so minimal sein, dass er irrelevant ist.
Hinweis: Das obige nimmt zwei Dinge an:
Hängt davon ab, was Sie mit "effizient" meinen. Einer ist zeiteffizient, der eigene Speicherplatz platzsparend. Und es ist sehr schwierig, die beiden gegeneinander zu beurteilen, es sei denn, Ihre Anforderungen liegen am äußersten Ende des Spektrums. Du würdest wahrscheinlich OK machen, einfach eine Münze werfen, die Leistung über die Zeit messen und basierend auf beobachteten Problemen anpassen.
Vorzeitige Optimierung ist die Wurzel von alles Böse.
Ob Sie 100.000 Zeilen oder 10.000.000 Zeilen in Ihrer Tabelle haben, ist irrelevant, wenn Sie Ihre Indizes richtig eingerichtet haben.
Nachdem wir gesagt haben, dass die standardmäßige dateibasierte PHP-Sitzung definitiv schneller ist als das Abrufen aus einer Datenbank, werden Sie den Unterschied erst bemerken, wenn Ihre Seite sehr stark genutzt wird, etwa 5.000 Anfragen pro Sekunde.
Tags und Links php mysql session performance