Search

onze sponsors

microsoft_logo.gif


 

computrain_logo.JPG

Forum Login | Register
   Forum

 

Subject: Restore Database
Prev Next
You are not authorized to post a reply.

Author Messages
Danny GobardhanUser is Offline

Posts:8

02-10-2007 12:37:49 Alert 

Ik heb een probleem die niet reproduceerbaar is.
Situatie is het volgende: Bij een klant komt het voor dat ze performance probleem hebben bij een bepaalde usecase.
Hierbij wordt een SP gebruikt om  data op te halen.
Als ik een backup van de klant restore dan kan ik dat niet reproduceren. Bij ons duurt het ca. 2 sec en bij de klant tussen 25-50 seconde of zelfs langer.

De vraag is: -- Gebeurt er iets met de database als ik deze restore, waardoor ik het niet kan reproduceren?
                    -- Wat verandert er bij een restore van een database? staat deze ergens beschreven?

 

André KammanUser is Offline
PASS Nederland

Posts:137


02-10-2007 14:11:06 Alert 
Danny,

Welke verschillen zijn er tussen jullie testomgeving en de klantomgeving ?
Denk hierbij aan andere gelijktijdig lopende queries. (locking probleem ipv performance probleem)
Of verschil in het aantal CPU's (Paralelism probleem)

Hoewel het mogelijk is om de statistieken te updaten tijdens een backup wat er voor zou kunnen zorgen dat het lijkt alsof er iets verandert tijdens de restore
is het meestal de invloed van andere gebruikers op hetzelfde productie systeem die niet in een testomgeving nagebootst kunnen worden die het probleem veroorzaken.
Soms zie je de performance van een query onder gelijke omstandigheden drastisch veranderen als je de database verplaatst van een single cpu systeem naar een multi cpu systeem
(En dan met name systemen met hyperthreading)

Om te kijken of je locking probemen hebt kun je tijdens het draaien van de sp in een ander venster sp_who2 draaien.
De spid die de sp draait zou dan in de kolom 'blocked' een waarde moeten hebben.
(Dit zie je dan waarschijnlijk alleen in productie en niet of minder in je testomgeving)

Verder zou je nog naar de executie plannen van de queries kunnen kijken. (En dan vooral het verschil in executie plannen tussen productie en test)
Dit is iets moeilijker als de sp uit meerdere queries bestaat, die zul je dan even los moeten draaien om zo wellicht de vertragende factor te kunnen isoleren.
Als je een query hebt met een aantal joins kun je met "set statistics io on" een overzicht krijgen van het aantal io's per tabel.

Als de sp alleen data leest is het in dit geval wellicht mogelijk om de query te draaien op het systeem van de klant (onderzoeken in productie dus, voorzichtigheid is geboden).
Zijn er bepaalde tijden waarop de query slecht presteerd, is het alleen deze query of zijn er nog andere, etc.

Groeten,

André

Hugo KornelisUser is Offline

Posts:46

04-10-2007 23:39:55 Alert 
Hoi Danny,

In aanvulling op het antwoord van André heb ik nog een andere suggestie. Het kan zijn dat er sprake is van parameter sniffing. Een procedure wordt op productie "toevallig" bij de eerste aanroep aangeroepen met een parameter die een slecht execution plan voor andere parameters oplevert; dat plan gaat dan wel in de cache.

Omdat de cache niet op de backup staat, zal op je test systeem gewoon een nieuw plan gegenereerd worden bij de eerste aanroep; is dat dan niet met die ongunstige parameter, dan heb je dus geen enkel probleem!

Verder nog een opmerking naar aanleiding van het bericht van André. Hij noemt hyperthreading en daar kan ik heel kort over zijn - op een systeem dat SQL Server draait moet je de hyperthreading gewoon uitzetten. Ergens in een blog van een Microsoft medewerker worden de technische details uitgelegd, maar het komt er op neer dat hyperthreading gunstig is op een computer die verschillende processen tegelijk doet, maar als je meerdere processoren hetzelfde laat doen (zoals het geval is als SQL Server een query parallel uitvoert op de twee virtuele processors), dan zitten de twee halve processoren zo te vechten om dezelfde resources te mogen gebruiken dat de totale performance minder is dan wanneer je de hyperthreading uitzet.

Met vriendelijke groeten,

Hugo Kornelis (SQL Server MVP)
Danny GobardhanUser is Offline

Posts:8

05-10-2007 13:43:46 Alert 
Heren,

Bedankt voor de info. Ik zal dit zeker mee nemen om dit probleem op te lossen. hyperthreading uitzetten moet ik dan aan de klant vragen om dat te doen. Uiteindelijk is het hun server.

grt,
Danny
You are not authorized to post a reply.
Forums > Forums > Performance (SIG) > Restore Database



ActiveForums 3.6
  
Copyright (c) 2012 PASS Nederland   Privacy Statement  Terms Of Use