07. august 2005 - 20:10Der er
5 kommentarer og 1 løsning
Optimering ved store datamænger
Jeg er ved at lave et program til at gennemparse en tabel. Tabellen fylder ca. ~35gb.
Prgrammet kører således: -Select første række (-Opret ny tabel udfra kriterie) -Parsning af felt i rækken -Indsæt data i ny tabel -Slet række (i en løkke selvfølgelig)
Hver "ny tabel" kommer til at indeholde 2-5 millioner rækker. (7 colums med 5-15 tegn i hver, numeriske data. se struktur nedenfor)
Mit spørgsmål går på hvordan jeg kan optimere dette mest muligt, da programmet skal køre simultant med at førstnævnte tabel fyldes op. Senere skal jeg kunne søge i disse data, så det skal helst være så smart opbygget som muligt.
Skal jeg f.eks. lave en id colum, således mssql kan indeksere ud fra den, eller giver det ingen mening? (jeg har ikke brug for id)
Generelle tanker omkring optimeringen vil være kærkomment.
Struktur på den "lille" tabel: [dato] [char] (10) [protocol] [tinyint] [outip] [varchar] (15) [outport] [varchar] (5) [inip] [varchar] (15) [inport] [varchar] (5) [bits] [varchar] (12)
Jeg antager ikke der er noget at hente på at fidle med feltstørrelserne, men for at kvikke søgningen op (Og inddateringen ned :-() kan man vælge at lægge index på de felter der søges på.
Hvilke felter indgår i primærnøgle? Hvilke felter (og feltkombinationer) vil der blive søgt på ?
Feltstørrelserne er så små som overhovedet muligt, men jeg er ikke 100% på felttyperne.
Der vil blive søgt på dato, inip, outport og protocol i kombination. Dem kan jeg jo så indexere. At indsætningen af data kommer til at ta lidt ekstra tid, tror jeg ikke vil betyde noget.
Primærnøglen er det - eller de felter - som unik identificerer den enkelte post. Og umiddelbart ser det ikke ud til at du har nogle felter der er i stand til at gøre dette. Primærnøglen er også et index, med den finesse at det er unikt. Men sæt index op for de meldte felter - evt. et ad gangen så du kan vurdere om du 'vinder' noget ved det enkelte index.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.