Avatar billede vraa Nybegynder
28. april 2006 - 10:30 Der er 8 kommentarer

Placering af 1 mill. records fra joined tabeller

Jeg har op mod 1 million records hentet fra joined tabeller, order by osv i en ms sql 2005 db. Er det dumt at gemme disse i et dataset og hvis jeg gemmer dem i et dataset, er det så filbaseret eller bruger den RAM.

Findes der et alternativ. Vil gerne at dataene er hentet eller så programmet ikke ustandslig skal ned og kigge i alle de records.
Avatar billede arne_v Ekspert
28. april 2006 - 12:44 #1
DataSet læser til memory

Umiddelbart er det ikke meningen at man skal bruge DataSet til så store data
mængder.

Men hvis din målsætning er at få data i memory så er det jo OK at data er
i memory.

Jeg vil tro at du kan spare lidt memory forbrug ved at skifte fra DataSet
til en Collection af user klasse.

Det var ijvertfald værd at lave en lille benchmark.

(den læses så ind via DataReader)

Hvor store er dine records ?
Avatar billede vraa Nybegynder
28. april 2006 - 14:04 #2
Det er slet ikke meningen det skal være i memory'en. Vil finde ud af hvad der er hurtigst og mindst ressource krævende når man arbejder med en lille mill. records.

F.eks. hvis jeg har en form med en masse tekst felter som udfyldes med data fra db ved at klikke på en "Næste record" knap".

Hvordan gør man bedst det? Henter det hele ned i én user collection eller fyrer noget select af hver gang?
Avatar billede arne_v Ekspert
28. april 2006 - 19:10 #3
I den sammenhaeng ville jeg ihvertfald ikke laese en million records ind.

Jeg vill nok laese den der skulle bruges plus de naeste 10-100 records
og cache disse, saa de er i memory naar brugeren klikker next.

God balance mellem hastighed, memory forbrug og database bealstning. Tror jeg.
Avatar billede vraa Nybegynder
02. maj 2006 - 08:23 #4
Sagen er den at der er ca. 100 brugere der logger på næsten samtidig, på en 4gb pentium server. Er lidt bange for performance.

Kan man ikke hente den næste record ved SQL kald, hver gang man klikker på en "Næste record"-knap? Og måske holde forbindelsen til DB åben. Programmet ligger bag en citrix pladsform, så der burde ikke være nogen sikkerhedsmæssige problemer ved at holde den åben.
Avatar billede arne_v Ekspert
03. maj 2006 - 04:24 #5
Det var en mulighed.

Men husk at DataReader er forward only.
Avatar billede vraa Nybegynder
03. maj 2006 - 09:36 #6
He... mit problem ligger i at jeg rent programmeringsmæssigt ikke ved hvordan jeg nemmest griber det an. Hvordan mit SQL kald skal se ud og hvordan jeg kalder det fra vb.net :-)
Avatar billede arne_v Ekspert
04. maj 2006 - 03:00 #7
det er en helt normal SELECT statement

du springer bare M rækker over, læser N rækker og lukker data reader igen
Avatar billede arne_v Ekspert
19. juni 2006 - 01:20 #8
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester