Avatar billede thenuttyprofessor Nybegynder
27. maj 2009 - 08:14 Der er 23 kommentarer og
1 løsning

Forespørgsel tager lang tid første gang.

Når brugeren foretager en søgning i Navision, tager den lang tid at afvikle første gang, men (selvfølgelig) meget kortere efterfølgende gange.
Hver nat tages der backup af databaserne, hvor SQL Server processen (sikkert...?) lukkes og derfor opstår problemet den efterfølgende morgen igen.

Hvordan kommer man ud over det problem?
Avatar billede thenuttyprofessor Nybegynder
27. maj 2009 - 08:15 #1
Kan man på nogen måde få SQL Server til at gemme disse execution plans på disk og få den til at loade dem igen når servicen starter op efter backup?
Avatar billede aaberg Nybegynder
27. maj 2009 - 09:36 #2
Nu ved jeg absolut intet om Navision, men, kan du ikke oprette et Sql Server Agent Job som udfører en eller anden dummy-søgning hver morgen klokken 05:00 eller lignende? Så vil den første søgning have kørt, når de første brugere kommer på arbejde.
Avatar billede thenuttyprofessor Nybegynder
27. maj 2009 - 10:31 #3
Hmm...om morgenen, når brugeren møder og kører en søgning i f.eks. Fakturaer, tager det lang tid første gang. Hvis brugeren søger igen i Fakturaer, tager det kort tid. Hvis brugeren i stedet søger i f.eks. Ordrer, tager DET lang tid - så det afhænger altså af hvad man søger på, så jeg er ikke sikker på at din løsning er 100% den rigtige løsning.
Avatar billede thenuttyprofessor Nybegynder
27. maj 2009 - 11:45 #4
SQL Server processen lukkes ikke ned under backup proceduren (Tivoli System), så hvorfor "glemmes" søgningerne/forespørgslerne?
Avatar billede arne_v Ekspert
27. maj 2009 - 18:20 #5
Jeg tvivler på at det er fordi execution plan glemmes.

Jeg tror snarere det er fordi alt ryger ud af cache.
Avatar billede Syska Mester
27. maj 2009 - 18:31 #6
Hvordan ser ramforbruget ud efter arbejdsdagen ? og hvordan ser det ud om morgenen ? er der nok ?

Hvis det kun er den første søgning der er langsom, så burde brugere da kunne leve med det ... ellers må du vel som aaberg_cc
siger lave en masse dummy søgninger.
Avatar billede thenuttyprofessor Nybegynder
28. maj 2009 - 08:31 #7
Der er 3 GB ram i serveren, 281 MB fri på nuværende tidspunkt (og det ændrer sig ikke dagen igennem).
sqlservr.exe bruger 1.7 GB og sqlWb.exe bruger 135 MB
Avatar billede thenuttyprofessor Nybegynder
28. maj 2009 - 08:55 #8
arne_v: det var også den konklusion jeg selv kom frem til i går eftermiddags, men er der ikke en måde at omgå dette (at undlade at tage backup er IKKE en option! :))
Avatar billede thenuttyprofessor Nybegynder
28. maj 2009 - 08:57 #9
buzzzzz: serveren er generelt aldrig belastet, hverken CPU eller RAM-mæssigt.
Avatar billede thenuttyprofessor Nybegynder
28. maj 2009 - 09:07 #10
Buzzz: jeg tror ikke helt jeg forstår hvordan det skal skrues sammen, altså dummy searches.
Det er vel ikke nok bare at køre en forespørgsel op mod en SQL Server tabel, det skal vel næsten være en forespørgsel der er identisk med det Navision gør, når man søger f.eks. på et ordrenummer.  Hvordan ser jeg hvad Navision forespørgslen ser ud som??
Avatar billede thenuttyprofessor Nybegynder
28. maj 2009 - 09:08 #11
Når der tages backup af en database, flushes forespørgsels-cachen så? (antager at det gør den, men har ikke kunnet finde noget på det).
Avatar billede thenuttyprofessor Nybegynder
28. maj 2009 - 09:15 #12
Ang. min post af 09:07:22, kan man jo selvfølgelig starte et trace et stykke tid før første bruger logger på og så se forespørgslen der.....
Avatar billede Syska Mester
28. maj 2009 - 11:54 #13
Men er forbruget SQL serveren bruger er det samme ? altså af ram ?

Var til et foredrag med Mark.
http://improve.dk/blog/2009/03/11/anug-talk-optimizing-sql-server-2005

Han kommer ind på mange ting som generelt bare kan optage ram ... og SQL bruger hvad den kan komme til ...

Har en som egentlig ik' laver noget speceilt ... men alligevel bruger den 10GB ... og det er hvad der er i maskinen.

Specielt det med caches query plans er sjovt at se ... havde et forbrug på 220 MB ud af de 10 GB ... hvilket er godt :-)

// ouT
Avatar billede thenuttyprofessor Nybegynder
28. maj 2009 - 13:01 #14
Ja, forbruget af RAM (SQL Server processen) er den samme, hvis det varierer, er det ikke med mange MB.

Hvor ændrer man cache-størrelsen for query plans?
Avatar billede thenuttyprofessor Nybegynder
29. maj 2009 - 09:04 #15
Jeg kørte SQL Server Profiler og oprettede et job med en 20 dummy forespørgsler på de tabeller der blev brugt mest.

Brugeren nøjedes med at låse sin computer (men lukkede Navision), da hun gik hjem i går. Dummy forespørgslerne blev kørt i morges kl. 5, ingen errors.

Brugeren siger at hastigheden stadig er langsom på de første forespørgsler, så nu har jeg bedt hende om at lade Navision være åben og bare låse computeren ved arbejds ophør i dag, så må jeg følge op på det tirsdag morgen.

Hvis der er andre der har forslag at byde ind med, så meget gerne...
Avatar billede Syska Mester
29. maj 2009 - 12:22 #16
Nu skriver du bare "rigtig lang tid" ... er det 5 mins eller 10 sek ?

Nu ved jeg ikke hvor stor sådan en navision db er men er den blevet langsom med tiden ? Så kunne man jo forestille sig at der måske mangler index's ... ?

// ouT
Avatar billede thenuttyprofessor Nybegynder
02. juni 2009 - 09:05 #17
buzz: lang tid er ca. 1.5-2 min. - efterfølgende søgninger tager under 1 sek.

Nå, brugeren lod sin PC stå tændt, med Navision åben og kunne her til morgen fortælle, at alt kørte rigtig hurtigt.
Hurra, tænkte jeg, så er det et PC cache problem! Men nej, for jeg bad hende genstarte sin PC og herefter kørte alt STADIG hurtigt.

Back to square one...

Databasen er på 18 GB, fordelt i 2 databaser på hhv. 0.5(.mdf) og 17.5 (.ndf) GB
Logfilen er på 12.6 GB og placeret på system-drevet.
Avatar billede thenuttyprofessor Nybegynder
03. juni 2009 - 10:41 #18
Lidt nyt i sagen...

Problemet viser sig i Navision (4.0 SP 3) når brugeren vælger Økonomistyring -> Finans -> Kontoplan -> Poster.

Hvis jeg åbner den underliggende tabel i SQL Server Management Studio, farer CPU belastningen op på 70% - free ram forbliver den samme (ca. 450-500 MB).

Mit spørgsmål er så, når nu brugeren vælger Poster for en given Kontoplan og det tager ca. 1-2 minutter før posterne er hentet, og brugeren så efterfølgende vælger en anden konto og det kun tager et par sekunder, hvor ligger dataene da - i SQL Server Cache, Navision Server Cache eller på klient-PC'en?
Avatar billede Syska Mester
03. juni 2009 - 11:30 #19
Hej,

Jeg har oplevet at et reuild af mine "statictics" på en table satte farten om ... nok fordi min struktur var blevet ændret så meget, at der var kommet nye og bedre måder at lave execution plans på ...

Er der de rigtige indexes på (måske rebuild af indexes) ? Hvad siger den hvis du kører en SQL Profiler når den query bliver kørt ? Er der mange fysiske reads ?

Du har stadig ikke svaret på om det bare er blevet langsom med tiden eller ?
Avatar billede thenuttyprofessor Nybegynder
03. juni 2009 - 11:41 #20
Siden Navision blev installeret på serveren for 2-3 år siden, er der ikke foretaget ændringer/optimeringer.
Avatar billede Syska Mester
03. juni 2009 - 11:56 #21
Dvs så må det være størrelsen der gør den langsom.

Så er min første tanke igen ... der må mangle nogen indexes i den table siden den kan blive langsom. Så længe en table er lille og det hele kan være i RAM ... så er index for det meste en dårlig ting. Det kan nu ske at du har nået en sådan størrelse at index reelt har noget at sige.

Jeg ved ikke hvordan Navision databaser bliver oprettet og man måske kan komme til at skippe dem når man sætter det hele op. Men kontroller du har indexes på de felter der er i din WHERE conditions. Og at dit Clustered index er rigtigt.

igen ... måske bare rebuild af indxes og statistics kan hjælpe.
Avatar billede thenuttyprofessor Nybegynder
04. juni 2009 - 10:04 #22
I går kørte jeg Navisions egen Optimer tabeller funktion og ind til videre synes brugerne at hastigheden på første søgninger er lige så hurtig som ved efterfølgende.
Håber det holder over de næste par dage, så vil jeg sige det var løsningen på problemet. :)
Avatar billede thenuttyprofessor Nybegynder
08. juni 2009 - 13:50 #23
Alt ser ud til at være i orden nu, læg et svar, buzz, du var inde på det rigtige med indexes.
Avatar billede Syska Mester
08. juni 2009 - 23:21 #24
Hvis der kommer ny data hele tiden vil der opstå fragmentering på dine data ... så en REORGANIZE INDEX eller REBUILD IDNEX er altid en god ting.

Jeg har min egen db på 100 GB ... organize en gang om dagen, og så en rebuild hver 14 dag, den den tager pænt lang tid.

og et svar.

// ouT
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
Computerworld tilbyder specialiserede kurser i database-management

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