Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 30. April 2011 18:39
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
DB Queries vs RAM
Hallo zusammen,
mal eine ganz allgemeine Frage zm Thema Performance.
Ich versuche gerade bei AdvancedContent einen Kompromiss zwischen RAM-Verbrauch und Anzahl der Datenbank-Abfragen zu finden.
Mein Problem ist folgendes:
In Version 0.8 können ja Menü-Punkte automatisch ein- bzw. ausgeblendet werden.
Dazu muss ich aber bereits dann, wenn z.B. der MenuManager nach der Sichtbarkeit eines Menüpunktes fragt, eine Eigenschaft der jeweiligen Seite auslesen. (Welche User Zugriff auf die Seite haben dürfen und was bei der Option "Menüpunkt ausblenden" eingestellt ist)
Wenn ich das mit der Core-Funktion GetPropertyValue mache, dann werden außerdem aber noch alle anderen Eigenschaften der Seite geladen. Also der komplette Inhalt. D.h. wenn ich 10 Seiten habe, werden allein um das Menü aufzubauen auch alle Ihalte aller 10 Seiten aus der DB geladen. Das erscheint mir falsch.
Meine Idee war nun die, dass wenn eine Eigenschaft ausgelesen werden soll, vorher zu prüfen, ob die Seite, deren Eigenschaften ich laden will auch die aktuelle Seite ist. Wenn ja, dann nimm die Core-Funktion (dann werden ja eh alle Inhalte dieser Seite benötigt).
Wenn nicht, dann lade nur die Eigenschaft aus der DB, die jetzt tatsächlich benötigt wird. (Dazu habe ich eine eigene Funktion geschrieben) Diese Eigenschaften werden dann in einer Variable gespeichert, falls sie nochmal benötigt werden. D.h. RAM und DB belaste ich nur mit den Dingen, die auch wirklich gebraucht werden.
Nur leider scheint mir das Resultat nicht wirklich zielführend (sofern man der Debug-Ausgabe trauen kann).
Wenn ich meine Methode anwende, gibt es logischerweise mehr DB Abfragen (ca. 10 mehr) aber der dadurch eingesparte RAM ist leider nur minimal. (ist irgendwo im 1-2 KB Bereich)
Nun frage ich mich, ab wann sind diese Unterschiede wirklich relevant?
Ich habe das jetzt nur mit einer Test-Installation probiert. Da wird es wohl völlig egal sein. Aber ich könnte mir vorstellen, dass bei einer großen Internetpräsenz mit vielen Seiten und massig Inhalten und AdvancedContent Probleme auftreten können.
Was meint Ihr?
Mehr oder weniger DB Abfragen?
Einerseits ist eine Datenbank dafür gemacht, Anfragen zu bewältigen.
Andererseits ist die DB nicht immer auf demselben Server, wodurch es zu verzögerten Antworten kommen kann.
Außerdem, selbst wenn die DB auf demselben Server ist, dann verlagere ich die Ressourcen nur auf eine andere Software.
Die Belastung für den Server sinkt dadurch nicht. (So zumindest mein Verständnis)
Hat da jemand Ahnung von?
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#2 01. Mai 2011 06:02
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: DB Queries vs RAM
Wenn ich meine Methode anwende, gibt es logischerweise mehr DB Abfragen (ca. 10 mehr) aber der dadurch eingesparte RAM ist leider nur minimal. (ist irgendwo im 1-2 KB Bereich)
Hmm, würde ich nicht primär am RAM-Verbrauch festmachen, sondern an der Zeit, die dafür benötigt wird ... und da sollte 1 Abfrage weniger Zeit benötigen als 10 .
Piratos hatte vor längerem mal hier sein powermenu-Plugin vorgestellt
http://www.cmsmadesimple.de/forum/viewt … d=195#p195
da wird die komplette Menü-Abfrage in einem Aufwasch erledigt.
Offline
#3 02. Mai 2011 06:08
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: DB Queries vs RAM
Grundsätzlich ist dein Ansatz korrekt. Meine Erfahrung ist folgende: Bei grossen Datenmengen in der DB sollten möglichst viele Faktoren bereits im Query einfliessen, damit möglichst wenig Daten geladen werden. Danach sollten nicht zuviele Daten im Ram belegt werden. Wenn du allerdings Ram zum versauen hast, spielt das keine Rolle.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#4 04. Mai 2011 15:06
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: DB Queries vs RAM
Ich denke ich habe bei meinem speziellen Problem eine Teil-Lösung gefunden.
Es gibt ja beim Modul die Option "Erweiterte Optionen anzeigen".
Diese wirkt sozusagen wie Ein- und Ausschalten der Erweiterten Funktionen (Verfallsdatum, FrontendUser-Zugriff usw.). Wenn das ausgeschaltet ist, muss natürlich bei ShowInMenue() bzw. Active() nichts weiter ermittelt werden. Dann wird einfach das zurückgegeben, was gespeichert wurde.
D.h. wer sein Backend nur ein wenig aufräumen und spezielle Inputfelder bieten will, und keine Verfallsdatum- oder FrontEndUser-Sachen benötigt, der kann den Ressourcenverbrauch auf ein nötiges Minimum reduzieren indem diese Optionen einfach abgeschaltet werden. Unterschied zum normalen Inhaltstypen in Sachen Ressourcen ist im Frontend dann sogut wie Null. (braucht in manchen Situationen sogar zwei-drei Queries weniger und bis zu 10KB weniger RAM jetzt bin ich komplett verwirrt was diese Performance-Fragen angeht
)
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
Seiten: 1