Avatar billede mikkel_strack Nybegynder
20. august 2006 - 16:06 Der er 6 kommentarer og
1 løsning

Tidsforbrug ved at åbne og lukke connections til database

Jeg sidder med noget hvor jeg looper gennem et dataset af objekter og opdaterer databasen hvor det kræves.

Jeg genbruger den funktion der opdaterer databasen for et enkelt objekt, hvilket betyder at jeg åbner og lukker connections for hver gang.
Hvis jeg skal opdatere 300 gange, så tar det små 10 sek, hvilket jeg synes er temmelig meget i overkanten.

Hvordan optimerer man den slags. Er der fx. tid at spare ved kun at åbne og lukke connections én gang...eller skal jeg gribe det an på en helt anden måde?

Mvh. Mikkel
Avatar billede arne_v Ekspert
20. august 2006 - 16:48 #1
.NET bruger connection pool så overheadet ved at lave en connection
burde være minimal

du kan prøve og holde connection åben og se om det gør en forskel

men ellers tror jeg at vi skal kigge lidt på dine opdaterings SQL
Avatar billede mikkel_strack Nybegynder
21. august 2006 - 09:43 #2
Alletiders..
Den tabel der skal opdateres er temmelig stor - har mange attributter.

Jeg har en funktion der bare opdaterer alle felter - uanset at det ikke er nødvendigt. Da det tog lang tid, lavede jeg en ny der kun opdaterde de 3-4 stykker som rent faktisk blev ændret. Umiddelbart synes jeg ikke der var noget at hente.

Hvor meget betydning har det at tabellen er stor?

Hvis der er noget specifikt du gerne vil se (SQL), så siger du bare til :o)
Avatar billede arne_v Ekspert
21. august 2006 - 13:29 #3
hvis du opdaterer alle rækker : meget

hvis du kun opdatererfå rækker og har index på felter som indgår i WHERE : lidt
Avatar billede mikkel_strack Nybegynder
21. august 2006 - 14:49 #4
Min SQL hedder noget i stil med
UPDATE tabel SET x = 'værdi_1', y = 'værdi_2'......., z = 'værdi_n' WHERE id = k

id er tabellens nøgle som er et autonummer. Går ud fra at det i så fald er indexeret?

Jeg opdaterer ikke alle rækker. Typisk vil det kun være max 100, og det vil i praksis nok ikke ta længere tid end at man kan holde det ud (Det skal kun gøres 1-2 gange dagligt)

Det var mere den generelle problemstilling omkring hvad man kan gøre for at optimere sine kald til databasen. Går ud fra at det ikke bliver sidste gang jeg støder på denne slags problematikker.
Avatar billede arne_v Ekspert
22. august 2006 - 00:56 #5
hvis id er primary key, så er der automatisk index på

generelt er man ikke bekymret for at åbne og lukke database connections
når frameworket bruger connection pooling
Avatar billede mikkel_strack Nybegynder
22. august 2006 - 10:04 #6
Rart at vide. Èn ting mindre at bekymre sig om :o)

Smider du et svar, så kvitterer jeg med point.
Avatar billede arne_v Ekspert
22. august 2006 - 13:28 #7
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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