Delen via


Schijfstations van SQL Server-database defragmenteren

Dit artikel bevat enkele richtlijnen met betrekking tot defragmentatie van SQL Server-databasestations.

Oorspronkelijke productversie: SQL Server
Oorspronkelijk KB-nummer: 3195161

Moeten SQL Server-schijven worden gedefragmenteerd op de laag van het besturingssysteem?

Dat hangt af van de fragmentatiestatus van de huidige stations. Over het algemeen kan dit geen kwaad en het kan helpen, ervan uitgaande dat u de voorzorgsmaatregelen volgt die worden beschreven in de sectie Voorzorgsmaatregelen bij het defragmenteren van SQL Server-databasestations . Het enige negatieve is dat u SQL Server moet afsluiten, tenzij het hulpprogramma voor defragmentatie ondersteuning biedt voor transactionele gegevensmogelijkheden. Het goede nieuws is dat, nadat je de defragmentatie hebt uitgevoerd, je het niet echt opnieuw hoeft te doen, tenzij je veel autogroei en andere bestanden hebt die op en van de schijven bewegen. Zorg ervoor dat u inzicht krijgt in alle strategieën voor write-caching die door het hulpprogramma worden gebruikt. Caching door een dergelijk hulpprogramma kan betrekking hebben op een cache zonder batterij, en dit kan in strijd zijn met de WAL-protocolvereisten.

Meer informatie

Met een schijfdefragmentatie worden alle bestanden, inclusief het databasebestand, verplaatst naar aaneengesloten clusters op een harde schijf. Dit optimaliseert en versnelt bestandstoegang. Met uitzondering van het Windows NT-besturingssysteem, als u de harde schijf niet defragmenteert, moet het besturingssysteem mogelijk naar verschillende fysieke locaties op de schijf gaan om het databasebestand op te halen, waardoor bestandstoegang langzamer wordt.

Omdat fysieke gegevenstoegang het duurste deel van een I/O-aanvraag is, kan defragmentatie prestatieverbeteringen bieden voor SQL Server en andere toepassingen. Het plaatsen van gerelateerde segmenten van gegevens dicht bij elkaar vermindert de I/O-bewerkingsvereisten.

Momenteel zijn er diverse ontfragmentatievoorzieningen beschikbaar in de markt. Sommige hulpprogramma's maken defragmentatie van geopende bestanden mogelijk, terwijl andere defragmentatie van gesloten bestanden vereisen of beter presteren wanneer ze worden gebruikt onder voorwaarden voor gesloten bestanden. Daarnaast hebben sommige hulpprogramma's transactionele mogelijkheden, terwijl andere niet.

Voorzorgsmaatregelen bij het defragmenteren van SQL Server-databasestations

Wanneer u een hulpprogramma voor defragmentatie evalueert voor gebruik met SQL Server, moet u ervoor zorgen dat het hulpprogramma transactionele gegevensmogelijkheden biedt. Kies met name een hulpprogramma voor defragmentatie dat de volgende mogelijkheden voor transactionele gegevens biedt:

  • De oorspronkelijke sector wordt pas verplaatst als de nieuwe sector tot stand is gebracht en de gegevens zijn gekopieerd.

  • Het hulpprogramma beschermt tegen een systeemfout, zoals een stroomstoring, op een veilige manier die de bestanden logisch en fysiek intact houdt. Om gegevensintegriteit te garanderen, wordt een pull-the-plug-test ten zeerste aanbevolen wanneer een hulpprogramma voor defragmentatie wordt uitgevoerd op een SQL Server-bestand.

  • Voor het WAL-protocol (Write-Ahead Logging) is het voorkomen van herschrijven van sectoren vereist om gegevensverlies te voorkomen. Het hulpprogramma moet de fysieke integriteit van het bestand behouden zolang het gegevensverplaatsing uitvoert. Het hulpprogramma moet op een transactionele manier op sectorgrenzen werken om de SQL Server-bestanden intact te houden.

  • Het hulpprogramma moet de juiste vergrendelingsmechanismen bieden om ervoor te zorgen dat het bestand een consistente afbeelding behoudt voor eventuele wijzigingen. Het hulpprogramma moet er bijvoorbeeld voor zorgen dat de oorspronkelijke sector niet kan worden gewijzigd wanneer deze naar een nieuwe locatie wordt gekopieerd. Als wijzigingen zijn toegestaan, kan het hulpprogramma voor defragmentatie de schrijfbewerking verliezen.

Kritieke schijfdefragmentaties die deze transactionele gegevensmogelijkheden niet bieden, moeten niet worden gebruikt, tenzij het SQL Server-exemplaar dat de schijven gebruikt om te defragmenteren, is afgesloten, zodat u open databasebestanden niet defragmenteert.

Open-filedefragmentatie veroorzaakt verschillende mogelijke problemen die defragmentatie van gesloten bestanden doorgaans niet doet:

  • Het defragmenteren van een bestand is van invloed op de prestaties. Hulpprogramma's voor defragmentatie kunnen secties van het bestand vergrendelen, waardoor SQL Server geen lees- of schrijfbewerking kan voltooien. Dit kan van invloed zijn op de gelijktijdigheid van de server waarop SQL Server wordt uitgevoerd. Neem contact op met de fabrikant van het hulpprogramma voor defragmentatie om te leren hoe bestanden worden vergrendeld en hoe dit van invloed kan zijn op gelijktijdigheid van SQL Server.

  • Het defragmenteren van open bestanden kan van invloed zijn op het opslaan in cache en ordenen van schrijfbewerkingen. Hulpprogramma's op basis van open bestanden vereisen onderdelen van het I/O-pad; deze onderdelen mogen de volgorde of de beoogde aard van de schrijfbewerking niet wijzigen. Als de tenants van het write-through- of WAL-protocol worden verbroken, is er waarschijnlijk sprake van databaseschade. De database en alle bijbehorende bestanden worden beschouwd als één entiteit. (Dit wordt behandeld in veel Microsoft Knowledge Base-artikelen, SQL Server Books Online en verschillende whitepapers.) Alle schrijfbewerkingen moeten de oorspronkelijke schrijfvolgordereeksen en de mogelijkheden voor schrijven behouden.

Aanbevelingen

  • Defragmentatie van het NTFS-volume, tenzij het is geformatteerd, voordat u een nieuwe database maakt of bestaande databases naar het volume verplaatst.
  • Zorg ervoor dat u uw SQL-gegevens en logboekbestanden op de juiste manier plant en groot maakt wanneer de database voor het eerst wordt gemaakt.
  • Maak uw pre-SQL Server 2014-transactielogboeken met automatische groei in gedachten als deze worden gebruikt.
  • Defragmentatie van de schijf of schijven waarop uw transactielogboeken zich bevinden. Dit voorkomt fragmentatie van extern bestand van het transactielogboek. Dit probleem kan optreden als uw bestanden veel autogroei hebben of als het geen toegewezen schijf is die veel databases, logboeken of andere bestanden bevat die zijn gewijzigd. In dat geval kunnen bestanden (inclusief het transactielogboekbestand) worden gefragmenteerd en gefragmenteerd.
  • Als u databasestations defragmenteert die clusterschijven zijn, moeten de clusterschijven worden ingesteld om de statuscontrole op te schorten (ook wel onderhoudsmodus genoemd).
  • Als u fragmentatie wilt minimaliseren, verkleint u uw databasebestanden niet. U kunt ze ook handmatig vergroten in grootten waarmee de groeiactiviteit wordt geminimaliseerd.
  • Houd uw databasebestanden op toegewezen schijven.
  • Voer een volledige back-up uit voordat u de locaties defragmenteert die SQL Server-database en back-upbestanden bevatten.

Verwijzingen