/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Langsom forbindelse mellem webserver og My~
Fra : Christian R. Larsen


Dato : 11-04-06 13:16

Mit site henter data fra en MySQL-database, men det går undertiden så
langsomt, at siden timer ud, fordi scriptet tog for langt tid at køre på
serveren.

Det mystiske er, at de samme queries kun tager millisekunder at fyre af
direkte i en enterprisemanager.

Eksempelvis er der her en query, der opdaterer en post i databasen. Jeg har
endvidere vist, hvordan jeg opretter forbindelse til databasen.

Hvorfor er det så langsomt?

sub OpenDatabase
Set DB = createobject("ADODB.Connection")
DB.open = "DRIVER={MySQL ODBC 3.51 Driver};"_
& "SERVER=localhost;"_
& "DATABASE=mindb;"_
& "UID=user;"_
& "PWD=password;"
end sub

sub CloseDatabase
DB.close
set db=nothing
end sub

sub UpdateRecord
SQL = "UPDATE Artikler SET" & _
" Artikler.Overskrift = '" & xOverskrift & "'," & _
" Artikler.Artikel = '" & xArtikel & "'," & _
" Artikler.Username = '" & xUsername & "'," & _
"WHERE Artikler.ID=" & xID & ";"
set RecSet = db.execute(sql)
end sub

Det skal bemærkes, at feltet Artikel nogle gange kan indeholde flere 12-13
kb tekst.




 
 
Jens Gyldenkærne Cla~ (11-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 11-04-06 13:30

Christian R. Larsen skrev:

> Mit site henter data fra en MySQL-database, men det går
> undertiden så langsomt, at siden timer ud, fordi scriptet tog
> for langt tid at køre på serveren.
>
> Det mystiske er, at de samme queries kun tager millisekunder
> at fyre af direkte i en enterprisemanager.

Er det på samme server? - og med samme driver?


> sub UpdateRecord
> SQL = "UPDATE Artikler SET" & _
> " Artikler.Overskrift = '" & xOverskrift & "'," & _
> " Artikler.Artikel = '" & xArtikel & "'," & _
> " Artikler.Username = '" & xUsername & "'," & _
> "WHERE Artikler.ID=" & xID & ";"
> set RecSet = db.execute(sql)

En opdateringsforespørgsel returnerer ingen poster - så der er
ingen grund til at generere et postsæt. Slet "Set Recset =" og
nøjes med db.execute(sql). Det bør dog ikke have særlig indflydelse
på hastigheden.


> Det skal bemærkes, at feltet Artikel nogle gange kan indeholde
> flere 12-13 kb tekst.

I så fald kan det måske svare sig at opdatere via en cursor. Så
vidt jeg husker, kan det gøres som følger:

rs.Open "SELECT * FROM Artikler WHERE ID = " & xID
If Not rs.EOF Then
   rs.Edit
   rs("Artikel") = xArtikel
   ...
   rs.Update
End IF
rs.close
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Christian R. Larsen (11-04-2006)
Kommentar
Fra : Christian R. Larsen


Dato : 11-04-06 13:56


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns97A2938AFA6B9jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Christian R. Larsen skrev:
>
> > Mit site henter data fra en MySQL-database, men det går
> > undertiden så langsomt, at siden timer ud, fordi scriptet tog
> > for langt tid at køre på serveren.
> >
> > Det mystiske er, at de samme queries kun tager millisekunder
> > at fyre af direkte i en enterprisemanager.
>
> Er det på samme server? - og med samme driver?

Driver: Det ved jeg ikke. Det er jo et godt spørgsmål.

Men det er på samme maskine og samme databaseserver.

> > sub UpdateRecord
> > SQL = "UPDATE Artikler SET" & _
> > " Artikler.Overskrift = '" & xOverskrift & "'," & _
> > " Artikler.Artikel = '" & xArtikel & "'," & _
> > " Artikler.Username = '" & xUsername & "'," & _
> > "WHERE Artikler.ID=" & xID & ";"
> > set RecSet = db.execute(sql)
>
> En opdateringsforespørgsel returnerer ingen poster - så der er
> ingen grund til at generere et postsæt. Slet "Set Recset =" og
> nøjes med db.execute(sql). Det bør dog ikke have særlig indflydelse
> på hastigheden.

Nej, det var vist også en skrivefejl, at jeg fik skrevet set...

> > Det skal bemærkes, at feltet Artikel nogle gange kan indeholde
> > flere 12-13 kb tekst.
>
> I så fald kan det måske svare sig at opdatere via en cursor. Så
> vidt jeg husker, kan det gøres som følger:

Prøver jeg.



Søg
Reklame
Statistik
Spørgsmål : 177485
Tips : 31964
Nyheder : 719565
Indlæg : 6408406
Brugere : 218885

Månedens bedste
Årets bedste
Sidste års bedste