Dela via


Defragmentera SQL Server-databasdiskenheter

Den här artikeln innehåller vägledning om defragmentering av SQL Server-databasenheter.

Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 3195161

Ska SQL Server-diskar defragmenteras på operativsystemlagret?

Det beror på de aktuella enheternas fragmenteringstillstånd. I allmänhet gör det inte ont och det kan hjälpa, förutsatt att du följer de försiktighetsåtgärder som beskrivs i avsnittet Försiktighetsåtgärder vid defragmentering av SQL Server-databasenheter . Det enda negativa är att du måste stänga av SQL Server om inte defragmenteringsverktyget stöder funktioner för transaktionsdata. Den goda nyheten är att när du har kört defragmentering, behöver du egentligen inte göra det igen om du inte har många Autogrowth och andra filer som rör sig på och av diskarna. Se till att du förstår alla strategier för skrivcachelagring som verktyget använder. Cachelagring av ett sådant verktyg kan innebära en icke-batteribaserad cache, och detta kan strida mot KRAVEN för WAL-protokollet.

Mer information

En diskdefragmenterare flyttar alla filer, inklusive databasfilen, till sammanhängande kluster på en hårddisk. Detta optimerar och påskyndar filåtkomsten. Med undantag för Windows NT-operativsystemet kan operativsystemet, om du inte defragmenterar hårddisken, behöva gå till flera fysiska platser på disken för att hämta databasfilen, vilket gör filåtkomsten långsammare.

Eftersom fysisk dataåtkomst är den dyraste delen av en I/O-begäran kan defragmentering ge prestandavinster för SQL Server och andra program. Positioneringsrelaterade datasegment nära varandra minskar I/O-åtgärdskraven.

Olika defragmenteringsverktyg är tillgängliga på marknaden idag. Vissa verktyg möjliggör defragmentering på öppna filer, medan andra kräver defragmentering av stängda filer eller fungerar bättre när de används under stängda filförhållanden. Dessutom har vissa verktyg transaktionsfunktioner, medan andra inte har det.

Försiktighetsåtgärder när du defragmenterar SQL Server-databasenheter

När du utvärderar ett defragmenteringsverktyg för användning med SQL Server kontrollerar du att verktyget tillhandahåller funktioner för transaktionsdata. Mer specifikt väljer du ett defragmenteringsverktyg som tillhandahåller följande funktioner för transaktionsdata:

  • Den ursprungliga sektorn betraktas inte som flyttad förrän den nya sektorn har upprättats och data har kopierats.

  • Verktyget skyddar mot ett systemfel, till exempel ett strömavbrott, på ett säkert sätt som håller filerna logiskt och fysiskt intakta. För att garantera dataintegriteten rekommenderas ett pull-the-plug-test starkt när ett defragmenteringsverktyg körs på en SQL Server-baserad fil.

  • Protokollet Write-Ahead Logging (WAL) kräver att sektoromskrivningar förhindras för att undvika dataförlust. Verktyget måste upprätthålla den fysiska integriteten för filen så länge den utför dataförflyttningar. Verktyget bör fungera på sektorgränser på ett transaktionellt sätt för att hålla SQL Server-filerna intakta.

  • Verktyget bör tillhandahålla lämpliga låsmekanismer för att garantera att filen behåller en konsekvent avbildning för eventuella ändringar. Verktyget bör till exempel se till att den ursprungliga sektorn inte kan ändras när den kopieras till en ny plats. Om ändringar tillåts kan defragmenteringsverktyget förlora skrivning.

Kritiska diskdefragmenterare som inte tillhandahåller dessa funktioner för transaktionsdata bör inte användas om inte SQL Server-instansen som använder diskarna som ska defragmenteras har stängts av så att du inte defragmenterar öppna databasfiler.

Defragmentering med öppen fil ger upphov till flera möjliga problem som defragmentering av stängda filer vanligtvis inte gör:

  • Defragmentering av öppna filer påverkar prestanda. Defragmenteringsverktyg kan låsa delar av filen, vilket hindrar SQL Server från att slutföra en läs- eller skrivåtgärd. Detta kan påverka samtidigheten för servern som kör SQL Server. Kontakta tillverkaren av defragmenteringsverktyget för att lära dig hur filer är låsta och hur detta kan påverka SQL Server-samtidighet.

  • Defragmentering av öppna filer kan påverka cachelagring och ordningsföljd för skrivning. Öppna filbaserade verktyg kräver I/O-sökvägskomponenter. dessa komponenter får inte ändra skrivåtgärdens ordning eller avsedda karaktär. Om skriv-igenom- eller WAL-protokollklienterna är brutna kommer databasskador sannolikt att inträffa. Databasen och alla associerade filer anses vara en enda entitet. (Detta beskrivs i många Microsoft Knowledge Base-artiklar, SQL Server Books Online och olika white papers.) Alla skrivningar måste behålla de ursprungliga skrivordningssekvenserna och genomskrivningsfunktionerna.

Rekommendationer

  • Defragmentera NTFS-volymen, såvida den inte har formaterats, innan du skapar en ny databas eller flyttar befintliga databaser till volymen.
  • Se till att du planerar och storleksanpassar dina SQL-data och loggfiler på rätt sätt när databasen först skapas.
  • Skapa dina transaktionsloggar före SQL Server 2014 med automatisk tillväxt i åtanke om den ska användas.
  • Defragmentera disken eller diskarna som transaktionsloggarna finns på. Detta förhindrar extern filfragmentering av transaktionsloggen. Det här problemet kan uppstå om dina filer har fått mycket automatisk tillväxt eller om det inte är en dedikerad disk som innehåller många databaser, loggar eller andra filer som har ändrats. I så fall kan filer (inklusive transaktionsloggfilen) interfolieras och fragmenteras.
  • Om du defragmenterar databasenheter som är klusterdiskar bör klusterdiskarna konfigureras för att pausa hälsoövervakning (kallas även underhållsläge).
  • Minska inte databasfilerna för att minimera fragmenteringen. Utöka dem också manuellt i storlekar som minimerar tillväxtaktiviteten.
  • Behåll databasfilerna på dedikerade diskar.
  • Utför en fullständig säkerhetskopia innan du defragmenterar de platser som innehåller SQL Server-databas och säkerhetskopieringsfiler.

Referenser