FIX: Verminderde prestaties wanneer u een database herstellen als er veel VLF's in het transactielogboek in SQL Server 2005, SQL Server 2008 of SQL Server 2008 R2

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 2455009 - Bekijk de producten waarop dit artikel van toepassing is.
Microsoft distribueert Microsoft SQL Server 2005, 2008 en 2008 R2 worden opgelost als één downloadbaar bestand. Aangezien de oplossingen cumulatief zijn, elke nieuwe release bevat alle hotfixes en alle beveiligingscorrecties die opgenomen in de vorige SQL Server 2005, 2008 en 2008 R2 zijn release opgelost.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Symptomen

Overweeg het volgende scenario:
  • U installeert Microsoft SQL Server 2005, Microsoft SQL Server 2008 of Microsoft SQL Server 2008 R2 op een computer.
  • Een of meer van de databases zijn in het volledige of bulk-logged herstelmodel.
  • De aanvankelijke omvang van een transactielogbestand voor de database is klein. Het transactiebestand groeit echter groot.
  • Het autogrow toename van het transactielogbestand is geconfigureerd om een klein formaat. Bijvoorbeeld, de autogrow toename is geconfigureerd voor één megabyte of voor één procent. Of u het transactielogbestand vergroten met behulp van een geringe groei handmatig maken.
  • Het transactielogboekbestand groter wordt door de kleine toename. Na een tijdje is het transactielogbestand groot.

    Het transactielogboek groeit bijvoorbeeld 100 MB tot 10 GB. Het transactielogboekbestand groter wordt door een toename in de groei van elke één megabyte.
In dit scenario kunnen de volgende problemen optreden:
  • Databaseherstel is traag wanneer de database wordt gestart als er een grote hoeveelheid werk te herstellen.

    Een transactie is bijvoorbeeld nog open voor een lange tijd. Of partijen van transacties die klein in grootte zijn worden niet doorgevoerd als de SQL-Server wordt afgesloten of opnieuw opgestart. In dat geval wordt u mogelijk een foutbericht voor een hersteltijd lang verwachte in de analysefase, fase voor het ongedaan maken of de fase voor opnieuw uitvoeren. De fout lijkt op het volgende en is vastgelegd in het foutenlogboekbestand van SQL Server 2005:
    Analyse van database 'MijnDatabase' (7) is 0% voltooid (ongeveer 1234 seconden blijven). Dit is alleen een informatief bericht. Er is geen gebruikersactie vereist.
  • Herstellen van databases is traag wanneer u een back-upbestand van de volledige database en een reeks extra transactie logboek worden teruggezet als de database on line wordt gebracht.

    Opmerking Als u wilt de database on line brengen tijdens de bewerking voor terugzetten, gebruikt u de MET SYSTEEMHERSTEL syntaxis of de MET STAND-BY = <options></options> de syntaxis.
  • Database mirroring herstel is traag op een partnerserver in het paar mirroring.
  • De voortgang van de agent voor logboekweergave voor transactionele replicatie is langzaam voor de volgende bewerkingen:
    • Het transactielogboek van een publicatiedatabase wordt geparseerd.
    • Een opdracht wordt in een distributiedatabase toegevoegd.
    • De transacties worden gerepliceerd.

    Opmerking Ga naar de volgende website van Microsoft Developer Network (MSDN) voor meer informatie:
    949523 De latentie van een transactionele replicatie is hoog in SQL Server 2005 als de waarde van de eigenschap 'Oorspronkelijke grootte' en de waarde van de eigenschap toename zijn klein
  • Trage prestaties doet zich voor wanneer een momentopname van de database wordt gemaakt als u veel transacties worden geregistreerd of als de transactielogboeken voor langere tijd actief blijft. Dit probleem treedt op omdat de momentopname is herstel uitvoeren en de transactielogboeken moeten worden teruggedraaid.
  • Trage prestaties doet zich voor wanneer u de DBCC CHECKDB de syntaxis voor het maken van een databasemomentopname van een verborgen met volledig herstellen de momentopname om uit te voeren van de consistentie van de database wordt gecontroleerd.

Oorzaak

Deze problemen treden op omdat de virtuele logboekbestanden (VLF's) in een transactielogboekbestand mogelijk traag wanneer SQL Server via deze VLF's tijdens de volgende bewerkingen scant:
  • Herstellen van databases
  • Database-mirroring
  • Momentopname van de database
  • Transactionele replicatie logboek lezer databaseactiviteiten
Wanneer een transactielogboekbestand voor een database wordt geteeld in kleine stappen tijdens de van de extreme groeiomstandigheden, staan duizenden of zelfs honderdduizenden VLF's binnen een enkele set van transactielogbestanden (.ldf). Echter grote logboek groei met grote stappen gemaakt alleen verschillende VLF vergelijking. Bijvoorbeeld mogelijk verschillende minder dan 100 VLF's.

Opmerking De VLF's zijn de afdelingen of segmenten die intern worden gebruikt door SQL Server in het transactielogbestand.

Oplossing

Cumulatieve update-informatie

SQL Server 2008 R2

De correctie voor dit probleem werd voor het eerst uitgebracht in cumulatieve Update 6. Voor meer informatie over het verkrijgen van dit cumulatieve updatepakket voor SQL Server 2008 R2, klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
2489376 Cumulatieve updatepakket 6 voor SQL Server 2008 R2
Opmerking Omdat de opbouw cumulatief van opzet zijn, elke nieuwe versie van de correctie bevat alle hotfixes en alle beveiligingscorrecties die opgenomen in de vorige SQL Server 2008 R2 zijn release opgelost. Wij raden aan dat u toe te passen van de meest recente hotfix-versie waarin deze hotfix is opgenomen. Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken:
981356 SQL Server 2008 R2 versies die zijn uitgebracht na de release van SQL Server 2008 R2

SQL Server 2008 servicepack 1

De correctie voor dit probleem werd voor het eerst uitgebracht in cumulatieve Update 12 voor SQL Server 2008 Service Pack 1. Voor meer informatie over dit cumulatieve updatepakket klikt u op het volgende artikel in de Microsoft Knowledge Base:
2467236 Cumulatieve updatepakket 12 voor SQL Server 2008 Service Pack 1
Opmerking Omdat de opbouw cumulatief van opzet zijn, elke nieuwe versie van de correctie bevat alle hotfixes en alle beveiligingscorrecties die opgenomen in de vorige versie van SQL Server 2008 zijn release opgelost. Microsoft raadt u aan de toepassing van de meest recente hotfix-versie waarin deze hotfix is opgenomen. Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken:
970365 De SQL Server 2008 bouwt die zijn uitgebracht na Service Pack 1 voor SQL Server 2008 is uitgebracht
Hotfixes voor Microsoft SQL Server 2008 worden gemaakt voor een specifieke servicepacks voor SQL Server. U moet een hotfix voor SQL Server 2008 Service Pack 1 toepassen op een installatie van SQL Server 2008 Service Pack 1. Voor elke hotfix die wordt geleverd in een SQL Server servicepack is standaard opgenomen in het volgende servicepack voor SQL Server.

SQL Server 2008 servicepack 2

De correctie voor dit probleem werd voor het eerst uitgebracht in cumulatieve Update 2 voor SQL Server 2008 Service Pack 2. Voor meer informatie over dit cumulatieve updatepakket klikt u op het volgende artikel in de Microsoft Knowledge Base:
2467239 Cumulatieve updatepakket 2 voor SQL Server 2008 Service Pack 2
Opmerking Omdat de opbouw cumulatief van opzet zijn, elke nieuwe versie van de correctie bevat alle hotfixes en alle beveiligingscorrecties die opgenomen in de vorige versie van SQL Server 2008 zijn release opgelost. Microsoft raadt u aan de toepassing van de meest recente hotfix-versie waarin deze hotfix is opgenomen. Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken:
2402659 SQL Server 2008-versies die zijn uitgebracht nadat SQL Server 2008 Service Pack 2 is uitgebracht.
Hotfixes voor Microsoft SQL Server 2008 worden gemaakt voor een specifieke servicepacks voor SQL Server. U moet een SQL Server 2008 Service Pack 2 hotfix toepassen op een installatie van SQL Server 2008 Service Pack 2. Voor elke hotfix die wordt geleverd in een SQL Server servicepack is standaard opgenomen in het volgende servicepack voor SQL Server.

SQL Server 2005 servicepack 3

De correctie voor dit probleem werd voor het eerst uitgebracht in 13, cumulatieve Update voor SQL Server 2005 Service Pack 3. Voor meer informatie over dit cumulatieve updatepakket klikt u op het volgende artikel in de Microsoft Knowledge Base:
2438344 Cumulatieve updatepakket 13 voor SQL Server 2005 Service Pack 3
Opmerking Omdat de opbouw cumulatief van opzet zijn, elke nieuwe versie van de correctie bevat alle hotfixes en alle beveiligingscorrecties die opgenomen in de vorige versie van SQL Server 2005 zijn release opgelost. Microsoft raadt u aan de toepassing van de meest recente hotfix-versie waarin deze hotfix is opgenomen. Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken:
960598 De SQL Server 2005 maakt die zijn uitgebracht na Service Pack 3 voor SQL Server 2005 is uitgebracht.
Hotfixes voor Microsoft SQL Server 2005 worden gemaakt voor een specifieke servicepacks voor SQL Server. U moet een hotfix voor SQL Server 2005 Service Pack 3 toepassen op een installatie van SQL Server 2005 Service Pack 3. Voor elke hotfix die wordt geleverd in een SQL Server servicepack is standaard opgenomen in het volgende servicepack voor SQL Server.

SQL Server 2005 servicepack 4

De correctie voor dit probleem werd voor het eerst uitgebracht in cumulatieve Update 1 voor SQL Server 2005 Service Pack 4. Voor meer informatie over dit cumulatieve updatepakket klikt u op het volgende artikel in de Microsoft Knowledge Base:
2464079 Cumulatieve updatepakket 1 voor SQL Server 2005 Service Pack 4
Opmerking Omdat de opbouw cumulatief van opzet zijn, elke nieuwe versie van de correctie bevat alle hotfixes en alle beveiligingscorrecties die opgenomen in de vorige versie van SQL Server 2005 zijn release opgelost. Microsoft raadt u aan de toepassing van de meest recente hotfix-versie waarin deze hotfix is opgenomen. Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken:
2485757 De SQL Server 2005 maakt die zijn uitgebracht na de release van SQL Server 2005 Service Pack 4
Hotfixes voor Microsoft SQL Server 2005 worden gemaakt voor een specifieke servicepacks voor SQL Server. U moet een hotfix voor SQL Server 2005 Service Pack 4 toepassen op een installatie van SQL Server 2005 Service Pack 4. Voor elke hotfix die wordt geleverd in een SQL Server servicepack is standaard opgenomen in het volgende servicepack voor SQL Server.

Status

Microsoft heeft bevestigd dat dit een probleem is in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.

Workaround

Deze hotfix installeren en opnieuw opstarten van SQL Server kan de recovery-prestaties verbeteren. Bijvoorbeeld, kan de prestaties voor de volgende bewerkingen worden verbeterd nadat u deze hotfix hebt geïnstalleerd en start SQL Server opnieuw:
  • Herstellen van databases
  • Database-mirroring
  • Momentopname van de database
  • Transactionele replicatie logboek lezer databaseactiviteiten

Als u deze hotfix installeren kunt, kunt u de volgende oplossingen aan een bestaand actie-item te beperken en te voorkomen dat een toekomstige gebeurtenis uitvoeren.

Een bestaand actie-item oplossen

  • Wacht tot het terugzetten of herstelbewerking te voltooien

    Als u een database niet hersteld die de prestaties ondervindt bij het herstellen of herstel de database hebt, is het wellicht te wachten tot de bewerking voor terugzetten of herstellen in te vullen. Zo ziet u de status off line of de herstellen status in SQL Server Management Studio (SSMS) voor een database niet hersteld. SQL Server stoppen meestal biedt geen vrijstelling voor een langzaam herstel en kan langer duren te herhalen dezelfde herstel analysefase, fase opnieuw of fase ongedaan maken.
  • Voorkomen dat de transactie log-reeks met duizenden VLF's terugzetten

    Als u de prestaties ondervindt tijdens het herstellen en terugzetten van een database met behulp van een back-upbestand, vermijdt u de transactie log reeksen met duizenden VLF's herstellen. Vastgelegd voor het back-upbestand met de meeste virtuele logboekbestanden, de volgende instructie gebruiken zodat de kolommen FirstLSN en LastLSN in de logboekbestanden van de back-up:
    TERUGZETTEN HEADERONLY van DISK='C:\folder\file.trn'

    U kunt voorkomen dat de logboekbestanden van de back-up terugzetten. Of u kunt de STOP AT instructie in de HERSTELLEN opdrachten om te voorkomen dat de zeer gefragmenteerde delen van de transactielogboeken. Als u het logboek reeksen tot aan het laatste punt niet volledig tijdens een fout bij het herstellen van fouten terugzetten, verloren gegevens in de SQL Server-database. Dit gegevensverlies treedt op omdat niet alle transacties worden gehouden. Daarom is een verhouding zakelijke beslissing. U kunt een zeer gefragmenteerde transactielogboek volledig terugzetten. Deze bewerking kan echter vele uren duren. Of u kunt de STOP AT de instructie in de terugvordering het herstel voor de sterk gefragmenteerde gedeelte van het logboek stoppen. Ontbrekende transacties die u weglaat, zijn echter verloren gegaan.

    Opmerking Zonder het installeren van deze hotfix is meestal geen veilige beroep voor versnelde herstel nadat u SQL Server opnieuw start. SQL Server is te vinden van de lijst met VLF's voor het analyseren van de logbestanden opnieuw voltooid transacties, en vervolgens om onvolledige transacties om te herstellen om de database on line veilig voltooien ongedaan te maken. U kunt geen transacties veilig overslaan tijdens het herstellen.

Voorkomen dat een toekomstige gebeurtenis

  • De optie autogrow-interval van de database ingesteld op de juiste grootte

    Als de grootte van het autogrow-interval te klein is, zal er veel virtuele logboekbestanden (VLF's) en kan traag in SQL Server. Als de grootte van het autogrow-interval te groot is, wellicht query's waarmee u de transactie logboeken automatisch laten groeien te wachten een lange tijd te voltooien, een groei. Daarom kan een time-out optreden in SQL Server. U kunt deze problemen omzeilen, kunt u de grootte van het autogrow-interval instellen voor de database op de juiste grootte.
  • Het grote aantal VLF's te elimineren en een handmatige groei gebruiken

    Als veel VLF's in het transactielogboek, verminderen de grootte van het transactielogboek, waardoor het voordat piek bedrijven om te voldoen aan de vraag met behulp van een handmatige groei vergroten. Het transactielogboek wordt bijvoorbeeld verhoogd naar een redelijke gemiddelde grootte in een grote stap of in een enkele handmatige groei. Daarom is de grootte van het transactielogboek bereikt een maximale capaciteit en de back-logboekbestanden worden gepland op basis van frequente en periodieke. Bovendien het transactielogboek afgekapt en de VLF's voor het transactielogboek opnieuw kunnen worden gebruikt in een cyclus.
  • Het verkleinen en vergroten van het transactielogboek handmatig

    U kunt een logboek met te veel VLF's door als volgt te werk om het logboek te verkleinen en opnieuw handmatig te verhogen:
    1. Als de database zich in een volledig of bulk-logged herstelmodel, hebt u de back-up van het transactielogboek zodat voor de actieve VLF's worden afgekapt en kunnen opnieuw worden gebruikt.
      BACKUP LOG databasename TO DISK='C:\folder\log_backupfile.trn'

      Ga naar de volgende website van Microsoft Developer Network (MSDN) voor meer informatie over hoe u back-up van het transactielogboek met behulp van SSMS:
      Reservekopie maken van het transactielogbestand met behulp van SSMS
      Ga naar de volgende MSDN-website voor meer informatie over hoe u back-up van het transactielogboek met behulp van Transact-SQL-instructies:
    2. Om te bepalen van de logische naam van het transactielogbestand, een van de volgende instructies worden uitgevoerd.
      Verklaring 1
      exec sp_helpfile 
      Statement 2
      select * from sys.sysfiles 
      Als u wilt de grootte van het transactielogboekbestand op de gewenste grootte verminderen, moet u de volgende code gebruiken:
      DBCC SHRINKFILE(transactionloglogicalfilename, TRUNCATEONLY) 
    3. U kunt de grootte van het transactielogboekbestand op de juiste grootte kunt verhogen. Wij raden aan dat u de grootte van het transactielogboekbestand groter piek regelmatig laten. Daarom de autogrow Increment wordt vermeden. De grootte van het transactielogboek, gebruik de pagina Eigenschappen van Database in SSMS of gebruikt u de volgende ALTER DATABASE Syntaxis:
      MODIFY FILE ( NAME = transactionloglogicalfilenae, SIZE=newtotalsize MB) 

      Ga naar de volgende MSDN-website voor meer informatie over het verhogen van de grootte van een database in SSMS:
      Het vergroten van de grootte van een database in SSMS
      Voor meer informatie over de ALTER DATABASE BESTAND WIJZIGEN syntaxis, gaat u naar de volgende MSDN-website:
      Algemene informatie over de syntaxis ALTER DATABASE wijzigen FILE

Meer informatie

U kunt het aantal segmenten VLF controleren aan de hand van het foutenlogboekbestand van SQL en vervolgens op het volgnummer van het logboekbestand (LSN) in elk back-transactielogbestand te zoeken. De eerste cijfers voor het symbool van de dubbele punt in de LSNs komen overeen met het nummer van de LSN.

Bijvoorbeeld, is het eerste nummer in het eerste bericht voor de LSN 1. Het eerste nummer in het tweede bericht voor de LSN is echter 100001. In dit scenario zijn er 100.000 VLF's die worden gebruikt tussen het moment van het eerste bericht en het tweede bericht. Daarom het vastgelegde gefragmenteerde transactielogboek die veel virtuele logboekbestanden (VLF's) heeft de volgende strekking weergegeven:

{Log back-up. Database: mydbname, date(time) maken: 2010/07/08(12:36:46), eerste LSN: 1:5068:70, laatste LSN: 1:5108:1, aantal dump-apparaten: 1, gegevens van een apparaat: (bestand = 1, TYPE = schijf: {C:\folder\logbackup1.trn}). Dit is alleen een informatief bericht. Er is geen gebruikersactie vereist.

Log back-up. Database: mydbname, date(time) maken: 2010/07/08(15:36:46), eerste LSN: 100001:5108:1, laatste LSN: 100002:5108:1, aantal dump-apparaten: 1, gegevens van een apparaat: (bestand = 2, TYPE = schijf: {C:\folder\logbackup2.trn}). Dit is alleen een informatief bericht. Is geen gebruikersactie vereist.}

De volgende tabel vindt u meer informatie over de producten of programma's waarmee automatisch wordt gecontroleerd op de voorwaarde die wordt beschreven in de sectie 'Symptomen' in uw exemplaar van SQL Server en de versies van SQL Server waarop de regel wordt geëvalueerd.

Deze tabel samenvouwenDeze tabel uitklappen
Regel softwareTitel van de regelBeschrijving van de regelVersies van het product waarop de regel wordt beoordeeld
System Center AdvisorSQL Server met transactionele replicatie, de prestaties van logboek Reader Agent kan negatieve gevolgen hebben vanwege de grootte van het transactielogboek of aantal VLFIn dit exemplaar van SQL Server advisor heeft gevonden de aanwezigheid transactionele replicatie met aantal VLF of TLOG aanzienlijk groter. Het logboek Reader Agent prestaties wordt negatief beïnvloed door de grootte van het transactielogboek of het nummer van een VLF. De transactielogboekgrootte en het aantal VLF ter verbetering van de prestaties van de Agent voor logboekweergave verminderen.SQL Server 2008

SQL Server 2008 R2

SQL Server 2012



Referenties

Voor meer informatie over de fysieke architectuur van het transactielogboek, gaat u naar de volgende MSDN-website:
Algemene informatie over de fysieke architectuur van het transactielogboek

Ga naar de volgende MSDN-website voor meer informatie over volgnummers logboek (LSN):
Algemene informatie over volgnummers van logboek

Voor meer informatie over de 1413-fout bij het starten van database-mirroring, gaat u naar de volgende MSDN-website:
Algemene informatie over de 1413-fout bij het starten van database-mirroring

Ga naar de volgende MSDN-website voor meer informatie over hoe de structuur van een log-bestand database hersteltijd kan beïnvloeden:
Hoe de structuur van een log-bestand database hersteltijd kan beïnvloeden

Ga naar de volgende MSDN-website voor meer informatie over het transactielogboek VLF's:
Algemene informatie over het transactielogbestand

Ga naar de volgende MSDN-website voor meer informatie over het maken van een momentopname van de database:
Het maken van een momentopname van de database
Voor meer informatie over de incrementele Servicing-Model voor SQL Server, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
935897 Een incrementeel Servicing-Model is beschikbaar van het SQL Server-team om hotfixes voor gemelde problemen te leveren
Voor meer informatie over het naamgevingsschema voor SQL Server-updates klikt u op het volgende artikel in de Microsoft Knowledge Base:
822499Nieuw naamgevingsschema voor software-updatepakketten voor Microsoft SQL Server
Voor meer informatie over de software-update terminologie, klik op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken:
824684 Beschrijving van de standaardterminologie die wordt gebruikt om Microsoft software-updates te beschrijven

Eigenschappen

Artikel ID: 2455009 - Laatste beoordeling: dinsdag 7 januari 2014 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Evaluation Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Standard Edition for Small Business
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
Trefwoorden: 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2455009 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.
De Engelstalige versie van dit artikel is de volgende: 2455009

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com