Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   array vs. Datenbank Abfrage (https://boardunity.de/array-vs-datenbank-abfrage-t3212.html)

co2.cl 16.06.2005 08:52

array vs. Datenbank Abfrage
 
Hi,

ich arbeite gerade an einem einfachen Mitglieder System. Jetzt ist es so das wenn ich hier und da Geburtstage, Statistiken, ect. auslese die Datenbank Abfragen in die Höhe gehen...

Jetzt habe ich mir überlegt einmal alle Mitglieder aus der Datenbank ab zu fragen und in einem array zu speichern. Hier kann ich nun einfach für weitere Funktionen alles auslesen. So das ist bei 100 Mitgliedern ok, aber gehen wir mal davon aus das sagen wir mal 1000 Besucher gleichzeitig onlien sind und im Cachen ca. 10.000 Mitglieder gespeichert sind(Beispiel). Bringt es nun Performence einbusen gegenüber den einzelen Abfragen?

exe 16.06.2005 10:47

Wenn die Benutzertabelle mal 10.000 Mitglieder hat, dann bringt das sicher Performanceverluste. Ich würde eher versuchen die Abfragen zu minimieren ohne groß Daten zwischenzuspeichern.

Die Berechnung ob ein Mitglied Geburtstag hast kannst du auch von der Datenbank erledigen lassen, dafür musst du nicht alle Mitglieder auslesen und der Reihe nach in PHP prüfen.

Trotzdem: je mehr Funktionen du anbietest desto mehr Datenbankabfragen brauchst du, um die benötigten Informationen zu generieren. Deswegen würde ich aber nicht die Datenbank komplett auslesen und in PHP weiterverarbeiten sondern diese Verarbeitung von der Datenbank erledigen lassen, die kann das nämlich schneller.

LonelyPixel 17.06.2005 15:45

Die Frage, was schneller ist, hat sich mir auch schon ein paar Mal gestellt. Die einfache Antwortet lautet: Probier es aus. Genau vorhersagen kann man das wohl nicht. Je nach exakter Implementierung (mal ist mehr Verarbeitung erforderlich, mal weniger) ist das eine oder das andere schneller. Wenn du keinen Aufwand scheust, dein Programm so schnell wie möglich zu machen, kannst du ja beide Methoden bereitstellen und je nach Anzahl der (zu erwartenden) Datensätze und Laufzeit der letzten Ausführung(en) eine der beiden auswählen. :D

co2.cl 18.06.2005 10:43

Hi,

ich habe es gestern abend einmal ausprobiert.
Ich habe also 10.000 User erstellt. Beim ersten Versuch habe ich alle in einem Array geladen und 4 mal mehrere Daten daraus abgefragen (Persönliche Daten, Neuste Mitglieder, Geburtstage, Aktuell Online). Man hat deutlich gemerkt das es langsamer wird.

Beim zweiten Versuch habe ich die 4 Sachen jeweils von der DB abgefragen und siehe da es geht um einiges schneller.

Ja dann bleibe ich bei den DB Abfragen, ausserdem stimmt auch das was exe sagt, ich kann so einige Sachen mir schon vom mySQL Server "berechnen" lassen.

LonelyPixel 18.06.2005 21:14

Ach ja, du kannst natürlich auch versuchen, im Voraus rauszufinden, welche Daten du brauchen wirst, z.B. eine Liste von User-IDs, zu denen du den Namen brauchst. Dann kannst du diese schneller mit einer einzigen DB-Abfrage abrufen, z.B. mit SELECT ... WHERE id IN (1, 2, 3, 6, 10); Das beschleunigt das Verfahren dann noch weiter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25