01. juli 2009 - 05:37Der er
10 kommentarer og 3 løsninger
Langsom database
Jeg har en db der er langsom naar alle brugere er paa (60 mennesker). Folk bruger ikke db'en konstant, men jeg vil skyde paa at der er 10-20 brugere paa ad gangen. Mine server specs er:
Pentium dual core 1.6GHz, 4 GB RAM (3 til db)
Jeg har ingen anelse om hvordan man debugger saadanne et problem. Hvad skal jeg kigge paa (detaljeret beskrivelse ville vaere laekkert)?
Jeg har kigget lidt paa sql server profiler, men har svaert ved at finde ud af hvordan man laeser informationen. Jeg ville ogsaa skyde paa at jeg skal kigge paa query plans, men har svaert ved at laese disse ogsaa, alt hjaelp ville vaere laekkert (evt. GODE links).
Hvis du kører sql server 2005, vil jeg klart anbefale dig at downloade og installere Performance Dashboard, som er en custom report der giver et ret godt overblik over hvad for nogle sql klumper der bruger mest IO og cpu. Og den fortæller samtidig hvis de tunge stumper sql-kode kunne drage nytte af et index.
kunne det tænkes at du har sat den til at have f.eks. max 20 connections? For i så fald vil nr. 21 afvente en lede plads - burde normalt ikke være tilfældet med ca. 60 brugere...
Jeg ved der er en "optimize table" i MySQL - tror også der er en i MS SQL - prøv eventuelt at køre den på alle de forskellige tabeller du har.
Du kan også have en harddisk der er stået af f.eks. den ene i et raid - for MS SQL (og alle andre databaser) slider meget på harddiske - undersøg hardware.
Sidst men ikke mindst, så vil jeg anbefale dig at logge på serveren og kigge på om der eventuelt er et program (ikke MS SQL) der bruger RAM eller CPU resourcer.
Det sidste forslag jeg har er at kigge på log-filerne - der kan både stå nyttig information - men der kan også være så absurd mange at harddisken sløves :-)
For i så fald ville en rimelig normal bruger jo kun udføre en query hvert 10 sek måske ... og så kigge lidt på det der kommer frem ... og så trykke igen ...
Så du ender med noget på ca. 1 query per 4 sek.
Og så ville jeg nok også kigge på overstående som Arne_v siger ... er der rigtige indexes på etc.
Eventuelt lad SQL Profiler stå og hapse lidt data ... prøve de forskellige "settings" ... mener der er en der hedder "tuning", så får du frem hvor lang tid de forskellige quries tager at execute, io read/write og mange andre ting ... du får endte den query der bliver udført ... så kan du tager den med over i SSMS og se en execution plan for den query og se hvor det måske går galt og hvor du kan optimere ...
1 query per 4 sekunder - ja det ville være tilfældet på f.eks. en web server... MEN - f.eks. systemer som Navision bruger databasen 10 gange så meget, da alt skal udlæses fra databasen :-)
Saa fandt jeg endelig problemet. Jeg har for ca. 3 uger siden opsat at db'en hver aften automatisk genbygger indicer. Den har aabenbart fejlet, og efter at have genbygget dem manuelt, stroeg sql server 2005 afsted igen.
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.