Viele Datensätze (MySQL) verarbeiten
Zerko
- php
1 romy0 Rouven0 Zerko0 hawkmaster0 romy
0 Jonny 5- datenbank
Mahlzeit...
Ich schreibe ein eigenes Frontend für eine Art "Auswertungstool", welcher mir z.B. Impressions (Seiteneinblendungen) verarbeitet.
Nun stehe ich vor dem Problem, dass es mit der Zeit eine enorme Menge an Datensätze ist, z.B. 20.000.000 Stück. Ich versuche nun den "count(*)" anhand der SeitenID zu lesen, was nicht möglich ist... da die Datenmenge zu groß ist.
Ich bräuchte ein paar Tipps wie man das optimieren könnte?! ...vielleicht gibt es da nützliche Scripte / Tools?!
Danke & Gruß,
Zerko
Hallo Zerko,
Nun stehe ich vor dem Problem, dass es mit der Zeit eine enorme Menge an Datensätze ist, z.B. 20.000.000 Stück. Ich versuche nun den "count(*)" anhand der SeitenID zu lesen, was nicht möglich ist... da die Datenmenge zu groß ist.
20 Mio Datensätze sollten für eine Datenbank kein Problem sein. Auch wenn ein count(Spaltenname) im Statement vermutlich wesentlich schneller und besser ist, vor Allem wenn die Spalte indexiert ist.
Welche Fehlermeldungen bekommst du, aus der du schließt, dass es an der Menge liegt?
ciao
romy
Hello,
Nun stehe ich vor dem Problem, dass es mit der Zeit eine enorme Menge an Datensätze ist, z.B. 20.000.000 Stück. Ich versuche nun den "count(*)" anhand der SeitenID zu lesen, was nicht möglich ist... da die Datenmenge zu groß ist.
die Datenmenge ist zu groß?? Für wen? Die Tabelle kann ich mir nicht vorstellen, der Datentyp, na ja, dann steckt im Modell noch irgendwo ein Fehler. Von der Skriptlaufzeit? Nutze EXPLAIN um herauszufinden, ob irgendwo Optimierungspotenzial ist. Dein Skript? ändere dein Skript.
MfG
Rouven
Sorry... etwas falsch formuliert :)
Als Fehlermeldung erhalte ich die "Execution Time ..." oder "Allowed Memory ...", d.h. selbst beim "count(*)" wird das Statement nicht fehlerfrei ausgeführt.
Gruß,
Zerko
Hallo
Als Fehlermeldung erhalte ich die "Execution Time ..." oder "Allowed Memory ...", d.h. selbst beim "count(*)" wird das Statement nicht fehlerfrei ausgeführt.
ich nehme mal an du arbeitest mit PHP.
dann schau mal in deinen php.ini Einstellungen nach.
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 60 ; Maximum execution time of each script, in seconds
oder ändere dein Script.
viele Grüße
hawk
Hallo Zerko,
Als Fehlermeldung erhalte ich die "Execution Time ..." oder "Allowed Memory ...", d.h. selbst beim "count(*)" wird das Statement nicht fehlerfrei ausgeführt.
Warum musste es jetzt nochmal count(*) sein, statt count(spaltenname)?
Durchsuchst du eine Tabelle oder mehrere? Wieviele Spalten müssen dabei durchsucht werden?
Die Executiontime kann man in der php.ini hochsetzen, bzw. in der apache.conf. Aber sinnvoller ist hier wohl dein Stement zu optimieren.
Was möchtest du genau rausbekommen aus welchen Daten?
ciao
romy
Hi,
... count(*)
Mit MyIsam als Engine gäbe es dieses Problem nicht.
Schöne Grüße,
Jonny 5