Zum Inhalt springen

Zeitliches Problem mit LIMIT


Fabi

Empfohlene Beiträge

Hallo Leute,

mein Problem ist Folgendes:

Ich habe einen MySQL-Datenbankserver mit Protokolldatensätzen die pro Tag gut und gerne 200.000 DS ausmachen.

Wenn ich jetzt mit sum(Gesendete Bytes) AS summe... order by summe LIMIT 10 eine Abfrage darauf mache, kann das schon mal 5 Minuten (bei Auswertungen über Monate) dauern.

Ich möchte aber quasi nur die Top Ten, wer am meisten Traffic verursacht hat.

Hat irgendwer von euch eine Idee wie man das anderweitig lösen könnte, weil ja bei LIMIT 10 erst alle Datensätze summiert werden und dann einfach nur die ersten 10 genommen werden.

Programmiert wir übrigens in Java, falls die Info jemand braucht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

die Belastung ist nicht das limit, sondern das Order.

Praktisch "muss" er jeden Datensatz bearbeiten der überhaupt in der Tabelle steht. Das dann nach üblichen Sortier-Algorythmen durchgehen. Erst danach wird limittiert.

Je nachdem wie viel du da drinstehen hast....kann ich verstehen wenn das DBMS da etwas in die knie geht. ^^

Zum Empfehlen währe eine Auslagerung der Daten, das nur die Daten in der Tabelle bleiben die du wirklich noch brauchst. Alles andere in eine Sicherrungsdatei.

Alternative: je nachdem wie weit zu zurückblicken willst, die Daten von 1-2 Monaten jeweils in eine eigene Tabelle.

Link zu diesem Kommentar
Auf anderen Seiten teilen

naja, du wirst doch irgendwo spezifiziert haben in welchem Rahmen die Analysen durchgeführt werden oder ?

ansonsten wird die Datenbank ganz sicher irgendwann in die knie gehen...

bzw. ab einer bestimmten Datenmenge ist es "normal" das das seine Zeit dauert. Und da ist egal wie viele Informationen du haben "willst", da geht es darum wie viele Informationen durchsucht werden müssen um dir das gewünschte zusammen zu stellen.

Evtl. solltest du auch feststellen "wann" jeweils so eine Abfrage gemacht wird.

also z.B. alle 3 Monate für jeweils diese 3 Monate und 1x im Jahr für das ganze Jahr.

Dann lagerst du nach jeder 3 Monats-Prüfung die Daten aus bzw. erstellst einen durchschnitt für die Jahresprüfung.

Hört sich für mich ein wenig so an als währe da ein Tool ohne Beschränkung gefordert...das ist unmöglich ^^ Spätestens wenn die Festplatte dicht ist kommen keine Datensätze mehr drauf.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem ist, dass der Kunde am Fontend eine beliebige Zeitspanne auswählen kann. Also Auslagern geht schlecht.

wenn der user im frontend die zeitspanne einschraenkt, waere ne WHERE clause vielleicht das Richtige, das quaelt die DB zwar auch, aber...

ansonsten bau dir ne view, die die daten verdichtet...

oder vielleicht mal an geschickte Indizes gedacht ?

gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habs jetzt so gelöst, dass ich versucht habe, so wenige Daten wie möglich in externe Tabellen auszulagern.

Das ist jetzt vielleicht nicht mehr super normalisiert aber ich habe eine enorme Zeitersparnis.

Meine Abfrage dauerte vorher (im phpMyAdmin wohl gemerkt, also kein Programmierfehler) 73 sek. Sie bestand aus 3 Tabellen die miteinander verjoint waren. Nach der Integration der ersten beiden Tabellen erreichte ich 34 sek und nach der Integration der letzten Tabelle dauerte die ABfrage 3 sekunden.

Also Joins sind so ziemlich der Zeitintensivste Teil der Abfrage. Wohl gemerkt, die Abfrage ging über 3 Mio. Datensätze.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...