Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
En kontrollpunkt skapar en känd bra punkt från vilken SQL Server Database Engine kan börja tillämpa ändringar som finns i loggen under återställningen efter en oväntad avstängning eller krasch.
Översikt
Av prestandaskäl utför databasmotorn ändringar av databassidor i minnet, i buffertcacheminnet och skriver inte dessa sidor till disk efter varje ändring. I stället utfärdar databasmotorn regelbundet en kontrollpunkt för varje databas. En kontrollpunkt skriver de aktuella ändrade sidorna i minnet (kallas för smutsiga sidor) och transaktionslogginformation från minne till disk, och registrerar även informationen i transaktionsloggen.
Databasmotorn stöder flera typer av kontrollpunkter: automatisk, indirekt, manuell och intern. I följande tabell sammanfattas typerna av kontrollpunkter.
| Namn | Transact-SQL gränssnitt | Description |
|---|---|---|
| Automatisk | EXEC sp_configure "återställningsintervall", "sekunder" | Utfärdas automatiskt i bakgrunden för att uppfylla den övre tidsgräns som föreslås av serverkonfigurationsalternativet för återställningsintervall. Automatiska kontrollpunkter körs till slutförande. Automatiska kontrollpunkter begränsas baserat på antalet utestående skrivningar och om databasmotorn identifierar en ökning av skrivfördröjningen över 50 millisekunder. Mer information finns i Konfigurera konfigurationsalternativet för återställningsintervallserver. |
| Indirekt | ÄNDRA DATABAS ... ANGE TARGET_RECOVERY_TIME = target_recovery_time { SEKUNDER | MINUTER } | Körs i bakgrunden för att uppfylla en användardefinierad återställningstid för en viss databas. Från och med SQL Server 2016 (13.x) är standardvärdet 1 minut. Standardvärdet är 0 för äldre versioner, vilket indikerar att databasen använder automatiska kontrollpunkter, vars frekvens beror på inställningen för återställningsintervall för serverinstansen. Mer information finns på sidan Ändra målåterställningstiden för en databas (SQL Server). |
| Manuell | KONTROLLPUNKT [ checkpoint_duration ] | Utfärdas när du kör ett Transact-SQL KONTROLLPUNKTskommando. Den manuella kontrollpunkten sker i den aktuella databasen för anslutningen. Som standardinställning körs manuella kontrollpunkter till slutförande. Begränsning fungerar på samma sätt som för automatiska kontrollpunkter. Om du vill anger parametern checkpoint_duration en begärd tid, i sekunder, för att kontrollpunkten ska slutföras. Mer information finns i CHECKPOINT (Transact-SQL). |
| Intern | None | Utfärdas av olika serveråtgärder, till exempel säkerhetskopiering och skapande av databasögonblicksbilder för att garantera att diskbilderna matchar loggens aktuella tillstånd. |
Med -k det avancerade installationsalternativet för SQL Server kan en databasadministratör begränsa I/O-beteendet för kontrollpunkter baserat på dataflödet i I/O-undersystemet för vissa typer av kontrollpunkter. Konfigurationsalternativet -k gäller för automatiska kontrollpunkter och eventuella annars ej roterade manuella och interna kontrollpunkter.
För automatiska, manuella och interna kontrollpunkter behöver endast ändringar som görs efter den senaste kontrollpunkten rullas framåt under databasåterställningen. Detta minskar den tid som krävs för att återställa en databas.
Viktigt!
Långvariga, ogenomförda transaktioner ökar återställningstiden för alla kontrollpunktstyper.
Interaktion mellan alternativen TARGET_RECOVERY_TIME och återställningsintervall
I följande tabell sammanfattas interaktionen mellan inställningen för hela sp_configure 'recovery interval' servern och den databasspecifika ALTER DATABASE ... TARGET_RECOVERY_TIME inställningen.
| MÅLTID_FÖR_ÅTERHÄMTNING | "återställningsintervall" | Typ av kontrollpunkt som används |
|---|---|---|
| 0 | 0 | automatiska kontrollpunkter med ett mål för återställningsintervall på 1 minut. |
| 0 | > 0 | Automatiska kontrollpunkter vars återställningsintervall för mål anges av den användardefinierade inställningen för alternativet sp_configure 'recovery interval'. |
| > 0 | Ej tillämpligt | Indirekta kontrollpunkter vars tid för återställning av mål bestäms av inställningen TARGET_RECOVERY_TIME, uttryckt i sekunder. |
Automatiska kontrollpunkter
En automatisk kontrollpunkt inträffar varje gång antalet loggposter når det antal som databasmotorn uppskattar att den kan bearbeta under den tid som anges i konfigurationsalternativet för återställningsintervallservern . Mer information finns i Konfigurera konfigurationsalternativet för återställningsintervallserver.
I varje databas utan en användardefinierad måltid för återställning genererar databasmotorn automatiska kontrollpunkter. Frekvensen beror på alternativet för avancerad serverkonfiguration för återställningsintervall , vilket anger den maximala tid som en viss serverinstans ska använda för att återställa en databas under en omstart av systemet. Databasmotorn uppskattar det maximala antalet loggposter som den kan bearbeta inom återställningsintervallet. När en databas som använder automatiska kontrollpunkter når det maximala antalet loggposter utfärdar databasmotorn en kontrollpunkt i databasen.
Tidsintervallet mellan automatiska kontrollpunkter kan vara mycket varierande. En databas med en betydande transaktionsarbetsbelastning har oftare kontrollpunkter än en databas som främst används för läsbara operationer. Under den enkla återställningsmodellen placeras även en automatisk kontrollpunkt i kö om loggen blir 70 procent full.
Under den enkla återställningsmodellen trunkerar en automatisk kontrollpunkt det oanvända avsnittet i transaktionsloggen om inte någon faktor fördröjer loggens trunkering. Under de fullständiga och massloggade återställningsmodellerna orsakar automatiska kontrollpunkter däremot inte loggtrunkering när en loggsäkerhetskedja har upprättats. Mer information finns i Transaktionsloggen (SQL Server).
Efter en systemkrasch beror den tid som krävs för att återställa en viss databas till stor del på hur mycket slumpmässig I/O som behövs för att göra om sidor som var smutsiga vid tidpunkten för kraschen. Det innebär att inställningen för återställningsintervall är otillförlitlig. Det går inte att fastställa en korrekt återställningstid. När en automatisk kontrollpunkt pågår ökar dessutom den allmänna I/O-aktiviteten för data avsevärt och oförutsägbart.
Effekt av återställningsintervall på återställningsprestanda
För ett OLTP-system (Online Transaction Processing) med korta transaktioner är återställningsintervall den primära faktorn som avgör återställningstiden. Återställningsintervallalternativet påverkar dock inte den tid som krävs för att ångra en tidskrävande transaktion. Återställning av en databas med en tidskrävande transaktion kan ta mycket längre tid än den tid som anges i inställningen för återställningsintervall .
Om en tidskrävande transaktion till exempel tog två timmar att utföra uppdateringar innan serverinstansen inaktiverades tar den faktiska återställningen betydligt längre tid än återställningsintervallvärdet för att återställa den långa transaktionen. Mer information om effekten av en tidskrävande transaktion på återställningstiden finns i Transaktionsloggen (SQL Server). Mer information om återställningsprocessen finns i Översikt över återställning och återställning (SQL Server).
Standardvärdena ger normalt optimala återställningsprestanda. Att ändra återställningsintervallet kan dock förbättra prestanda under följande omständigheter:
Om återställningen rutinmässigt tar betydligt längre tid än 1 minut när pågående transaktioner inte rullas tillbaka.
Om du märker att frekventa kontrollpunkter försämrar prestanda för en databas.
Om du väljer att öka inställningen för återställningsintervall rekommenderar vi att du ökar den gradvis med små steg och utvärderar effekten av varje inkrementell ökning på återställningsprestanda. Den här metoden är viktig eftersom databasåterställning tar så många gånger längre tid att slutföra allt eftersom inställningen för återställningsintervall ökar. Om du till exempel ändrar återställningsintervallet till 10 minuter tar återställningen ungefär 10 gånger längre tid att slutföra än när återställningsintervallet är inställt på 1 minut.
Indirekta kontrollpunkter
Indirekta kontrollpunkter, som introducerades i SQL Server 2012 (11.x), ger ett konfigurerbart alternativ på databasnivå till automatiska kontrollpunkter. Detta kan konfigureras genom att ange alternativet för målåterställningstid för databaskonfiguration. För mer information, se Ändra den avsedda återställningstiden för en databas (SQL Server). I händelse av en systemkrasch ger indirekta kontrollpunkter potentiellt snabbare och mer förutsägbar återställningstid än automatiska kontrollpunkter.
Indirekta kontrollpunkter erbjuder följande fördelar:
Indirekta kontrollpunkter säkerställer att antalet smutsiga sidor ligger under ett visst tröskelvärde så att databasåterställningen slutförs inom målåterställningstiden.
Konfigurationsalternativet för återställningsintervall använder antalet transaktioner för att fastställa återställningstiden, till skillnad från indirekta kontrollpunkter som använder antalet felaktiga sidor. När indirekta kontrollpunkter är aktiverade på en databas som tar emot ett stort antal DML-åtgärder kan bakgrundsskrivaren aggressivt rensa smutsiga buffertar till disken för att säkerställa att den tid som krävs för återställningen ligger inom databasens förutbestämda återställningstiden. Detta kan orsaka ytterligare I/O-aktivitet på vissa system, vilket kan bidra till en flaskhals för prestanda om diskundersystemet körs över eller närmar sig I/O-tröskelvärdet.
Med indirekta kontrollpunkter kan du kontrollera databasåterställningstiden på ett tillförlitligt sätt genom att räkna in kostnaden för slumpmässig I/O under REDO. Detta gör det möjligt för en serverinstans att hålla sig inom en övre gräns för återställningstider för en viss databas (förutom när en långvarig transaktion orsakar för höga ÅNGRA-tider).
Indirekta kontrollpunkter minskar kontrollpunktsrelaterad I/O-spikning genom att kontinuerligt skriva smutsiga sidor till disken i bakgrunden.
En onlinetransaktionsarbetsbelastning på en databas som konfigurerats för indirekta kontrollpunkter kan dock uppleva prestandaförsämring. Det beror på att bakgrundsskrivaren som används av indirekt kontrollpunkt ibland ökar den totala skrivbelastningen för en serverinstans.
Viktigt!
Indirekt kontrollpunkt är standardbeteendet för nya databaser som skapats i SQL Server 2016 (13.x), inklusive databaserna model och tempdb .
Databaser som har uppgraderats på plats eller återställts från en tidigare version av SQL Server använder det tidigare automatiska kontrollpunktsbeteendet om det inte uttryckligen ändras för att använda indirekt kontrollpunkt.
Förbättrad skalbarhet för indirekta kontrollpunkter
Före SQL Server 2019 (15.x) kan du uppleva icke-återkommande schemaläggarfel när det finns en databas som genererar ett stort antal smutsiga sidor, till exempel tempdb. SQL Server 2019 (15.x) introducerar förbättrad skalbarhet för indirekta kontrollpunkter, vilket bör bidra till att undvika dessa fel på databaser som har en tung UPDATE/INSERT arbetsbelastning.
Interna kontrollpunkter
Interna kontrollpunkter genereras av olika serverkomponenter för att garantera att diskbilderna matchar loggens aktuella tillstånd. Interna kontrollpunkter genereras som svar på följande händelser:
Databasfiler har lagts till eller tagits bort med hjälp av ALTER DATABASE.
En databassäkerhetskopia görs.
En ögonblicksbild av databasen skapas, antingen explicit eller internt för DBCC CHECKDB.
En aktivitet som kräver en databasavstängning utförs. Till exempel AUTO_CLOSE är PÅ och den senaste användaranslutningen till databasen stängs, eller så görs en ändring av databasalternativet som kräver en omstart av databasen.
En instans av SQL Server stoppas genom att tjänsten SQL Server (MSSQLSERVER) stoppas. Den här åtgärden orsakar en kontrollpunkt i varje databas i instansen av SQL Server.
Koppla från en SQL Server-redundansklusterinstans (FCI).
Nästa steg
- Konfigurera alternativet för återställningsintervall i serverkonfigurationen
- Ändra den målsatta återställningstiden för en databas (SQL Server)
- KONTROLLPUNKT (Transact-SQL)