vi har lyckats med att få så många besökare till vår webb att min IPS:s server börjar knäa, Access var aldrig avsett att användas som fleranvändarsystem (vilket i praktiken är vad du har i det här fallet). SQL Server är både robustare och mer skalbart. 1. Slå på INDEX på alla fält du har i WHERE clause. kanske har vi redan där ett problem, vad menas med detta INDEX? vår kod ser ut ung. så här Index sätter du på fält i desginläge på de fält som man oftast söker på i where klausulen. Byt din connectionstring till, borde göra lite: Med andra ord skall jag indexera samtliga nedanstående fält i databasen, se kod Vad jag kan se söker du bara på fälten Modell och Fabrikat, så det är dessa du ska indexera. ja jag har förstått att queryn går att göra snyggare, frågan är bara hur? Om du enbart skickar med Rs("fabrikat"), och lägger resten i hidden forms, så når du ju dom i alla fall.Prestandaproblem tror jag :-(
kan det bero på att vi kör asp samt accessbaser?, vi har optimerat koderna så långt det går men det blir ändå segt när många besökare finns på siten.
Skall vi bygga om? Använda ett annat databassystem?
Vi vill ju helst inte bygga om hela vår site men....
ska vi fortsätta att jobba i asp, (det enda vi kan)
Svar mottages tacksamt! om lite olika jämförelser.Sv: Prestandaproblem tror jag :-(
Fast om det var min sajt, hade jag börjat med att forska i var problemet ligger. Det skulle inte förvåna mig om Access är en potentiell flaskhals (och kanske orsak till andra problem med), men utan mer info är det svårt att säga. Det vore synd om ni rycker ut databasen & skriver om dataåtkomstkod och sedan inte märker någon direkt prestandavinst...
Sök gärna efter "asp performance tuning" eller så för tips.Sv: Prestandaproblem tror jag :-(
Många missar detta och det gör grymt stor skillnad.
2. Optimera mera. Visa upp lite kod om du vill ha hjälp med det.
3. hjälper inte detta, byt till SQL server.Sv:Prestandaproblem tror jag :-(
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("/access/access.mdb")
SQLStmt = "SELECT GRUPPER.ID, BASKET.BASKETID, BASKET.AMOUNT, BASKET.ARTNO, BASKET.PRICE, ARTICLE.ARTNAME, ARTICLE.ARTWEIGHT, BASKET.PERSNO FROM BASKET, ARTICLE INNER JOIN GRUPPER ON ARTICLE.ARTGROUP = GRUPPER.Id "
SQLStmt = SQLStmt & "WHERE BASKET.ARTNO = ARTICLE.ARTNO AND (BASKET.PERSNO = '" & Session("PERSNO") & "') "
SET RS = Connection.Execute(SQLStmt)
Mvh
PeterSv: Prestandaproblem tror jag :-(
Primärnyckel och foreignkey är också en slags index. Detta hjälper upp prestandan vid sökning, uppdatering etc där du har villkor. Observera dock att det bara stjälper om du sätter för många index i din databas. du ska endast ha index på de mest frekventa sökvillkoren!
Du kan också optimera din databas genom att kontrollera att du i varje tabell inte har alltför många stora textfält! Då är det bättre att dela in textfälten i extra länktabeller. Tänk på att försöka använda datatypen nvarchar till dina textfält också! Då reserverar du inte onödigt mycket utrymme i varje post. Vilket också underlättar vid sökning etc...Sv: Prestandaproblem tror jag :-(
"Driver=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("/access/access.mdb") & ";"
/JohanSv:Prestandaproblem tror jag :-(
dvs från art1 - art 30 eller
Mvh
Peter
modell=Request.Querystring("modell")
fabrikat=Request.Querystring("fabrikat")
Set connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=X:/blabla/blalbla/blabla/bla/bla/databas.mdb;"
sql = "SELECT * FROM KATEGORIER_NEW where Modell = '" & Request.Querystring("modell") & "' AND Fabrikat = '" & Request.Querystring("fabrikat") & "' "
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
response.redirect "products.asp?Fabrikat=" & Rs("fabrikat") & " &ART1=" & rs("ART1") & "&ART2=" & rs("ART2") & "&ART3=" & rs("ART3") & "&ART4=" & rs("ART4") & "&ART5=" & rs("ART5") & "&ART6=" & rs("ART6") & "&ART7=" & rs("ART7") & "&ART8=" & rs("ART8") & "&ART9=" & rs("ART9") & "&ART10=" & rs("ART10") & "&ART11=" & rs("ART11") & "&ART12=" & rs("ART12") & "&ART13=" & rs("ART13") & "&ART14=" & rs("ART14") & "&ART15=" & rs("ART15") & "&ART16=" & rs("ART16") & "&ART17=" & rs("ART17") & "&ART18=" & rs("ART18") & "&ART19=" & rs("ART19") & "&ART20=" & rs("ART20") & "&ART21=" & rs("ART21") & "&ART22=" & rs("ART22") & "&ART23=" & rs("ART23") & "&ART24=" & rs("ART24") & "&ART25=" & rs("ART25") & "&ART26=" & rs("ART26") & "&ART27=" & rs("ART27") & "&ART28=" & rs("ART28") & "&ART29=" & rs("ART29") & "&ART30=" & rs("ART30") & "&MODELL=" & rs("Modell") &" "
rs.close
set rs = nothing
conn.close
set conn = nothingSv: Prestandaproblem tror jag :-(
Sedan har jag lite svårt att förstå varför du skickar med alla "ART" i querystringen, det borde gå att göra snyggare genom att enbart skicka med en identitet till posten (det kommer ju endast från en post). Det kanske till och med är så att du borde lagra informationen annorlunda i databasen, men det är svårt att säga utan lite mer bakgrundsinformation.
Koden är skadlig för SQL-injection (sök på begreppet om du inte vet vad det innebär), men det har inte så stor betydelse när du använder Access. Jag kan inte komma på något farligt som kan göras i just detta fall.
/JohanSv:Prestandaproblem tror jag :-(
Sv: Prestandaproblem tror jag :-(