Avatar billede m-koldsgaard Nybegynder
06. august 2002 - 15:29 Der er 19 kommentarer og
3 løsninger

Langsom database

Jeg fik ikke et brugbart svar i http://www.eksperten.dk/spm/237769 så spm er fornyet.

Håber jeg for svar denne gang !
Avatar billede m-koldsgaard Nybegynder
06. august 2002 - 15:33 #1
Dette er lovligt efter Ekspertens regler §2.1.11
Avatar billede a1a1 Novice
06. august 2002 - 16:21 #2
tjaaa..

når du lukker din connection skal du ikke skrive Set conn = Nothing, men kun conn.close
set conn = Nothing sletter din connection fra connection poolen (og det tager så længere tid at oprette forbindelsen)
Men "fejlen" ligger jo nok ikke der, men det kan/vil give lidt bedre performance.

Jeg mener ikke at iis på win2k pro kører lige så godt som en "rigtig" server (win2k server).

Har du de nyeste mdac drivere på din maskine? (database driver)

Hvad har du af ram i din maskine? (en alm. webserver har nok min. 512mb)

Det er vel ikke kun første gang du køre din fil? (webserveren skal så først starte op)

:)
Avatar billede a1a1 Novice
06. august 2002 - 16:23 #3
Avatar billede mhoffmann Nybegynder
06. august 2002 - 16:43 #4
lige et spm til a1. Er du sikker på at man ikke skal skrive set conn = nothing ?? På html som er rimelig prof. har de en asp tutorial hvor de skriver at man skal gøre det sådan.

http://www.html.dk/tutorials/asp/lektion18.asp
Avatar billede a1a1 Novice
06. august 2002 - 16:54 #5
-> mhoffmannn
ja, jeg er STEN sikker....(læste engang en længere artikel på 15seconds.com eller var det 4guysfromrolla.com ? :) )

det er nok fordi at det er "det rigtige" at gøre...

altså, at destruere sine objecter efter brug...

og du SKAL også gøre det med alt andet end database connections.
(også recordsets (da de ikke kan "genbruges") )
Avatar billede m-koldsgaard Nybegynder
06. august 2002 - 17:09 #6
Test-script:

<%
'Genereringstid - StartTid
StartTid = Timer

' Databaseforbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("SimpelDatabase.mdb")
Conn.Open DSN

'Indsætter infomation om brugeren i tablen "Log"
strQ = "select Felt from Tabel where Felt = 'Simpel'"
Set RS = conn.execute(strQ)

Response.write RS("Felt") & "<br>"

'Luk tablen
Set RS = Nothing

'Lukker databaseforbindelsen
Conn.Close

'Genereringstid - SlutTid
SlutTid = Timer

'Genereringstiden bliver fundet ved at række StartTid fra SlutTid
Genereringstid = Round(SlutTid-StartTid,10)
'Genereringstiden bliver skrevet
Response.write "Genereringstid: " & Genereringstid & " sek."
%>

Hos mig selv giver det en genereringstid på ca. 4 sek.
På serveren giver det en genereringstid på ca. 0.01 sek.

Det har dog hjulpet efter installeringen af den update og ved at fjerne set conn = Nothing
Avatar billede m-koldsgaard Nybegynder
06. august 2002 - 17:10 #7
Hvad kan der mere være galt?
Avatar billede a1a1 Novice
06. august 2002 - 17:14 #8
har du opdateret din komputer med windows update?

hvad med ram?
Avatar billede m-koldsgaard Nybegynder
06. august 2002 - 17:21 #9
Jeps total opdateret.

Computeren har 384 MB Ram, og når jeg kører scriptet bliver der kun brugt under halvdelen.
Avatar billede a1a1 Novice
06. august 2002 - 18:08 #10
hmmm, skal gå nu men vil prøve at se om jeg kan komme på noget...:)

har microsoft noget om dårlig performance på iis (under windows 2000 PRO)
Avatar billede nih Novice
07. august 2002 - 19:14 #11
<%
'Genereringstid - StartTid
StartTid = Timer

' Databaseforbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("SimpelDatabase.mdb")
Conn.Open DSN
SlutTid = Timer
Genereringstid = Round(SlutTid-StartTid,10)
Response.write "Genereringstid 1: " & Genereringstid & " sek."

'Indsætter infomation om brugeren i tablen "Log"
strQ = "select Felt from Tabel where Felt = 'Simpel'"
Set RS = conn.execute(strQ)
SlutTid = Timer
Genereringstid = Round(SlutTid-StartTid,10)
Response.write "Genereringstid 2: " & Genereringstid & " sek."

Response.write RS("Felt") & "<br>"

'Luk tablen
Set RS = Nothing

'Lukker databaseforbindelsen
Conn.Close

SlutTid = Timer
Genereringstid = Round(SlutTid-StartTid,10)
Response.write "Genereringstid 3: " & Genereringstid & " sek."
%>

Uden at vide det store om ASP, har jeg dette forslag til fejlfinding.

Niels
Avatar billede m-koldsgaard Nybegynder
08. august 2002 - 12:56 #12
Det giver:
Genereringstid 1: 2,09375 sek.
Genereringstid 2: 3,054688 sek.
Genereringstid 3: 4,105469 sek.
Avatar billede m-koldsgaard Nybegynder
08. august 2002 - 13:29 #13
nih - Jeg har lige udbygget lidt:

<%
'Genereringstid - StartTid
StartTid = Timer

'StartTid
SlutTid = Timer
Genereringstid = Round(SlutTid-StartTid,10)
Response.write "StartTid: " & Genereringstid & " sek.<br>"

' Databaseforbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("SimpelDatabase.mdb")
Conn.Open DSN

'Genereringstid 1
SlutTid = Timer
Genereringstid = Round(SlutTid-StartTid,10)
Response.write "Genereringstid 1: " & Genereringstid & " sek.<br>"

'Henter data fra "Tabel"
strQ = "select Felt from Tabel where Felt = 'Simpel'"
Set RS = conn.execute(strQ)

'Genereringstid 2
SlutTid = Timer
Genereringstid = Round(SlutTid-StartTid,10)
Response.write "Genereringstid 2: " & Genereringstid & " sek.<br>"

'Skriv data fra tabel
Response.write RS("Felt") & "<br>"

'Genereringstid 3
SlutTid = Timer
Genereringstid = Round(SlutTid-StartTid,10)
Response.write "Genereringstid 3: " & Genereringstid & " sek.<br>"

'Luk tablen
Set RS = Nothing

'Genereringstid 4
SlutTid = Timer
Genereringstid = Round(SlutTid-StartTid,10)
Response.write "Genereringstid 4: " & Genereringstid & " sek.<br>"

'Lukker databaseforbindelsen
Conn.Close

'Genereringstid 5
SlutTid = Timer
Genereringstid = Round(SlutTid-StartTid,10)
Response.write "Genereringstid 5: " & Genereringstid & " sek."
%>


Det giver:
StartTid: 0 sek.
Genereringstid 1: 2,101563 sek.
Genereringstid 2: 3,023438 sek.
Genereringstid 3: 3,734375 sek.
Genereringstid 4: 3,9375 sek.
Genereringstid 5: 4,105469 sek.
Avatar billede nih Novice
08. august 2002 - 14:35 #14
prøv at åbne din connection sådan her:

conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " & _
Server.MapPath ("SimpelDatabase.mdb")
Avatar billede nih Novice
08. august 2002 - 14:40 #15
Den access du åbner er det 97, for så skal du bruge:

Microsoft.Jet.OLEDB.3.5
Avatar billede m-koldsgaard Nybegynder
08. august 2002 - 15:09 #16
Tak skal du have.

Synes du det er 200 point vær?
Avatar billede m-koldsgaard Nybegynder
08. august 2002 - 15:10 #17
Giv forresten et svar. Jeg var lige ved at acceptere a1's svar.
Avatar billede nih Novice
08. august 2002 - 15:46 #18
nej - jeg lærer jo også noget.
30 pts er rigeligt

Hjalp det ??

Niels
Avatar billede nih Novice
08. august 2002 - 15:50 #19
de connectionstrings :(
et lille fif:

opret en tom fil i notepad, og ændre filtypen fra .txt til .udl
dobbeltklik på den og windows hjælper dig med at oprette din connection - følg guiden
herefter kan du åbne den i notepad igen, og direkte kopiere din connectionstring ind det script du bruger.

Niels
Avatar billede m-koldsgaard Nybegynder
08. august 2002 - 16:39 #20
Ja, det hjalp. Godt tip.

A1 for points for link til updaten.


Takker endnu en gang.
Avatar billede a1a1 Novice
08. august 2002 - 18:21 #21
jamen tak for points....;)

men, hvad var det der hjalp? (var det bare din connectionstring der var en "gammel" model?)
Avatar billede m-koldsgaard Nybegynder
08. august 2002 - 21:13 #22
Ja, min connectionstring var fejlen.

Men den update hjalp lidt på hastighed på den gamle connectionstring.
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
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

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