Kom ihåg mig?
Home Menu

Menu


Hantera stor mängd Logg data

Ämnesverktyg Visningsalternativ
Oläst 2011-10-18, 11:48 #1
SweLogan SweLogan är inte uppkopplad
Medlem
 
Reg.datum: Sep 2007
Inlägg: 148
SweLogan SweLogan är inte uppkopplad
Medlem
 
Reg.datum: Sep 2007
Inlägg: 148
Standard Hantera stor mängd Logg data

Hej, jag har ett problem som jag inte vet redigt hur jag ska lösa än.

Problemet är
Jag har ca 200 000 000 poster i en tabell. Detta är då extremfallet!
Att hämta alla poster typ (SELECT * from Logg) det går redigt fort.
Problemet jag har är att det tar väldigt långtid att köra WHERE & ORDER BY samt GROUP BY i frågan.

Tabellen ser ut på följande:

ID | Grupp | Timestamp | Value

Frågan kan vara:
Grupp, TimeStamp, Count(Value) som Antal.
Hämta där Grupp = 1
Där Timestamp är mellan två datum
Grupera Timestamp på timmar
Sotera på timmar

Resultatet blir då:

Grupp | Timestamp | Antal
1 | 2011-01-01 00:00:00 | 500
1 | 2011-01-01 01:00:00 | 550
1 | 2011-01-01 02:00:00 | 499
1 | 2011-01-01 03:00:00 | 350
Fast för ett helt år.

Hur ska jag göra för att snabba upp sökningarna?

Hänger allt bara på prestandan på datorn?
Ifall det gör detta, vad för typ av prestanda krävs för att kunna gå igen 20000k poster på en tid som skulle vara rimligt för att visa statistiken på en hemsida?
SweLogan är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-18, 12:57 #2
Silodon Silodon är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2005
Inlägg: 38
Silodon Silodon är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2005
Inlägg: 38
Vad har du för index i din tabell? Har du inga så kan det säkert snabba upp.
Silodon är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-18, 12:58 #3
coredevs avatar
coredev coredev är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Sep 2007
Inlägg: 1 554
coredev coredev är inte uppkopplad
Bara ett inlägg till!
coredevs avatar
 
Reg.datum: Sep 2007
Inlägg: 1 554
Du kan göra ett "jobb" som varje natt selekterar och aggregerar data till en annan tabell. Sedan blir det snabbt och lätta att hämta datat därifrån. Du kanske missar det som har hänt sedan senaste aggregeringen, men det är förhoppningsvis en felmarginal som din applikation kan leva med.
coredev är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-19, 16:53 #4
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Det finns ett bra antal sätt att lösa problemet.

T ex:
- Som redan nämnts att skapa ett bakgrundsjobb som redan grupperar på de vanliga filtrena som läggs på. Det man inte aggregerat kan man istället köra enligt nästa metod.
- Skapa en extra sample-data som tar ut en liten del av din data med bästa möjliga representation av din riktiga data.
- Lägga på någon extern indexerings-mjukvara. Av ditt exempel verkar det t ex som om SphinxSearch skulle klara av allt med gruppering och filtrering. Nu för tiden har de även liveuppdatering så det är mycket mindre arbete att få till en realtidslösning. Det finns även som tabellmotor till MySQL så du t o m slipper byta interface.
- Köra mapreduce eller liknande för att dela upp jobb över flera maskiner
- Lägga index över relevanta kolumner eller kanske t o m täckande index
- Se till att ha tillräckligt med ram och använda innodb och få en cpu-bunden (jämför med io-bunden som de flesta workloads blir vid den nivån)
Clarence är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017