Megosztás a következőn keresztül:


Adatbázis-ellenőrzőpontok (SQL Server)

A következőkre vonatkozik:SQL ServerAzure SQL Database

Az ellenőrzőpontok létrehoznak egy ismert hasznos pontot, amelyből az SQL Server adatbázismotor egy váratlan leállítás vagy összeomlás után megkezdheti a naplóban található módosítások alkalmazását.

Áttekintés

Teljesítménybeli okokból az adatbázismotor a memóriában, a puffergyorsítótárban módosítja az adatbázislapokat, és nem írja ezeket a lapokat a lemezre minden módosítás után. Ehelyett az adatbázismotor rendszeresen kiad egy ellenőrzőpontot az egyes adatbázisokon. Egy ellenőrzőpont megírja az aktuális memóriabeli módosított lapokat (más néven piszkos oldalakat) és a tranzakciónapló adatait a memóriából a lemezre, és rögzíti a tranzakciónaplóban lévő információkat is.

Az adatbázismotor többféle ellenőrzőpontot támogat: automatikus, közvetett, manuális és belső. Az alábbi táblázat összefoglalja az ellenőrzőpontok típusait.

Név Transact-SQL felület Description
Automatikus EXEC sp_configure "helyreállítási időköz", "másodperc" Automatikusan kiadva a háttérben annak érdekében, hogy megtörténjen a helyreállítási időköz kiszolgáló konfigurációs beállításai által javasolt felső időkorlát elérése. Az automatikus ellenőrzőpontok a befejezésig futnak. Az automatikus ellenőrzőpontok szabályozása a függőben lévő írások számától és attól függ, hogy az adatbázismotor észleli-e az írási késés 50 ezredmásodperc feletti növekedését.

További információ: A helyreállítási időköz konfigurálása kiszolgálókonfigurációs lehetőség.
Közvetett ALTER DATABASE ... SET TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | PERCEK } A háttérben végrehajtva, hogy megfeleljen egy adott adatbázis felhasználó által megadott helyreállítási célnak megfelelő időnek. Az SQL Server 2016 -tól kezdve (13.x) az alapértelmezett érték 1 perc. Az alapértelmezett érték a 0 a régebbi verziók esetében, ami azt jelzi, hogy az adatbázis automatikus ellenőrzőpontokat fog használni, amelyek gyakorisága a kiszolgálópéldány helyreállítási időközének beállításától függ.

További információ: Adatbázis (SQL Server) célhelyreállítási idejének módosítása.
Kézikönyv CHECKPOINT [ checkpoint_duration ] Transact-SQL CHECKPOINT-parancs végrehajtásakor van kiadva. A manuális ellenőrzőpont végrehajtása a kapcsolat jelenlegi adatbázisában történik. Alapértelmezés szerint a manuális ellenőrzőpontok teljesen lefutnak. A szabályozás ugyanúgy működik, mint az automatikus ellenőrzőpontok esetében. Ha szükséges, a checkpoint_duration paraméter másodpercben megadja a kért időt az ellenőrzőpont befejezéséhez.

További információ: CHECKPOINT (Transact-SQL).
belső None A különböző kiszolgálói műveletek, például a biztonsági mentés és az adatbázis-pillanatkép létrehozása által kibocsátott lemezképek garantálják, hogy a lemezképek megfeleljenek a napló aktuális állapotának.

Az -k SQL Server speciális beállításával az adatbázis-rendszergazda szabályozhatja az ellenőrzőpontok I/O-viselkedését az I/O-alrendszer bizonyos típusú ellenőrzőpontok átviteli sebessége alapján. A -k beállítás az automatikus ellenőrzőpontokra, valamint az egyébként nem szabályozott manuális és belső ellenőrzőpontokra vonatkozik.

Az automatikus, manuális és belső ellenőrzőpontok esetében csak a legutóbbi ellenőrzőpont utáni módosításokat kell előterjeszteni az adatbázis-helyreállítás során. Ez csökkenti az adatbázisok helyreállításához szükséges időt.

Fontos

A hosszú ideig futó, nem véglegesített tranzakciók növelik az összes ellenőrzőpont-típus helyreállítási idejét.

A TARGET_RECOVERY_TIME és a helyreállítási időköz beállításainak interakciója

Az alábbi táblázat összefoglalja a kiszolgálószintű sp_configure 'recovery interval' és az adatbázis-specifikus ALTER DATABASE ... TARGET_RECOVERY_TIME beállítás közötti interakciót.

CÉLZOTT_HELYREÁLLÍTÁSI_IDŐ "helyreállítási időköz" Használt ellenőrzőpont típusa
0 0 automatikus ellenőrzőpontok, amelyek visszaállítási célzott időtartama 1 perc.
0 > 0 Automatikus ellenőrzőpontok, amelyeknek a helyreállítási céltartományát a felhasználó által megadott sp_configure 'recovery interval' beállítás határozza meg.
> 0 Nem alkalmazható Közvetett ellenőrzőpontok, amelyek célhelyreállítási idejét a TARGET_RECOVERY_TIME beállítás határozza meg, kifejezve másodpercekben.

Automatikus ellenőrzőpontok

Az automatikus ellenőrzőpont minden alkalommal megtörténik, amikor a naplórekordok száma eléri azt a számot, amely az adatbázismotor becslése szerint feldolgozható a helyreállítási időköz kiszolgáló konfigurációs beállításában megadott idő alatt. További információ: A helyreállítási időköz konfigurálása kiszolgálókonfigurációs lehetőség.

Minden olyan adatbázisban, amelyben nincs felhasználó által meghatározott célhelyreállítási idő, az adatbázismotor automatikus ellenőrzőpontokat hoz létre. A gyakoriság a helyreállítási időköz speciális kiszolgálókonfigurációs beállításától függ, amely meghatározza, hogy egy adott kiszolgálópéldány mennyi időt használjon adatbázis helyreállítására a rendszer újraindítása során. Az adatbázismotor a helyreállítási időközön belül feldolgozható naplórekordok maximális számát becsüli meg. Amikor egy automatikus ellenőrzőpontot használó adatbázis eléri a naplórekordok maximális számát, az adatbázismotor egy ellenőrzőpontot ad ki az adatbázison.

Az automatikus ellenőrzőpontok közötti időintervallum nagy mértékben változó lehet. A jelentős tranzakciós számítási feladatokkal rendelkező adatbázisok gyakrabban rendelkeznek ellenőrzőpontokkal, mint egy elsősorban írásvédett műveletekhez használt adatbázissal. Az egyszerű helyreállítási modellben egy automatikus ellenőrzőpont is várólistára kerül, ha a napló 70%-kal megtelik.

Az egyszerű helyreállítási modellben, hacsak nem valamilyen tényező késlelteti a napló csonkolását, az automatikus ellenőrzőpont csonkolja a tranzakciónapló nem használt szakaszát. Ezzel szemben a teljes és tömeges naplózású helyreállítási modellekben, miután létrejött egy naplómentési lánc, az automatikus ellenőrzőpontok nem okoznak napló metszését. További információ: A tranzakciónapló (SQL Server).

A rendszer összeomlása után az adott adatbázis helyreállításához szükséges idő nagyban függ attól, hogy mennyi véletlenszerű I/O szükséges az összeomlás időpontjában piszkos oldalak újbóli végrehajtásához. Ez azt jelenti, hogy a helyreállítási időköz beállítása megbízhatatlan. Nem tudja meghatározni a helyreállítás pontos időtartamát. Továbbá, ha egy automatikus ellenőrzőpont folyamatban van, az adatok általános I/O-tevékenysége jelentősen és kiszámíthatatlanul nő.

A helyreállítási időköz hatása a helyreállítási teljesítményre

A rövid tranzakciókat használó online tranzakciófeldolgozási (OLTP) rendszerek esetében a helyreállítási időköz az elsődleges tényező, amely meghatározza a helyreállítási időt. A helyreállítási időköz beállítás azonban nem befolyásolja a hosszú ideig futó tranzakciók visszavonásához szükséges időt. Egy hosszú ideig futó tranzakcióval rendelkező adatbázis helyreállítása sokkal tovább tarthat, mint a helyreállítási időköz beállításában megadott idő.

Ha például egy hosszú ideig futó tranzakció két órát vett igénybe a frissítések végrehajtásához, mielőtt a kiszolgálópéldány le lett tiltva, a tényleges helyreállítás jelentősen tovább tart, mint a helyreállítási időköz értéke a hosszú tranzakció helyreállításához. A hosszú ideig futó tranzakciók helyreállítási időre gyakorolt hatásáról további információt a Tranzakciónaplóban (SQL Server) talál. A helyreállítási folyamatról további információt a Visszaállítás és helyreállítás áttekintése (SQL Server) című témakörben talál.

Az alapértelmezett értékek általában optimális helyreállítási teljesítményt biztosítanak. A helyreállítási időköz módosítása azonban a következő körülmények között javíthatja a teljesítményt:

  • Ha a helyreállítás rutinszerűen 1 percnél hosszabb időt vesz igénybe, amikor a hosszú ideig futó tranzakciók nincsenek visszaállítva.

  • Ha azt tapasztalja, hogy a gyakori ellenőrzőpontok rontják az adatbázisok teljesítményét.

Ha úgy dönt, hogy növeli a helyreállítási időköz beállítását, javasoljuk, hogy kis lépésekkel fokozatosan növelje, és értékelje az egyes növekményes növekedésnek a helyreállítási teljesítményre gyakorolt hatását. Ez a megközelítés azért fontos, mert a helyreállítási időköz beállításának növekedésével az adatbázis-helyreállítás ennyi ideig tart. Ha például a helyreállítási időközt 10 percre módosítja, a helyreállítás körülbelül 10-szer hosszabb időt vesz igénybe, mint amikor a helyreállítási időköz 1 percre van állítva.

Közvetett ellenőrzőpontok

Az SQL Server 2012-ben (11.x) bevezetett közvetett ellenőrzőpontok konfigurálható adatbázisszintű alternatívát biztosítanak az automatikus ellenőrzőpontok helyett. Ez a célhelyreállítási idő adatbázis konfigurációs beállításának megadásával konfigurálható. További információ: Adatbázis (SQL Server) célhelyreállítási idejének módosítása. Rendszer összeomlása esetén a közvetett ellenőrzőpontok potenciálisan gyorsabb, kiszámíthatóbb helyreállítási időt biztosítanak, mint az automatikus ellenőrzőpontok.

A közvetett ellenőrzőpontok a következő előnyöket kínálják:

  • A közvetett ellenőrzőpontok biztosítják, hogy a piszkos oldalak száma egy bizonyos küszöbérték alatt legyen, így az adatbázis helyreállítása a célhelyreállítási időn belül befejeződik.

    A helyreállítási időköz konfigurációs beállítás a tranzakciók számát használja a helyreállítási idő meghatározásához, szemben a közvetett ellenőrzőpontokkal , amelyek a piszkos oldalak számát használják. Ha egy nagy számú DML-műveletet fogadó adatbázisban engedélyezve vannak a közvetett ellenőrzőpontok, a háttéríró elkezdhet agresszíven kiüríteni a piszkos puffereket a lemezre, hogy a helyreállításhoz szükséges idő az adatbázis célhelyreállítási időhalmazán belül legyen. Ez további I/O-tevékenységet okozhat bizonyos rendszereken, ami hozzájárulhat a teljesítmény szűk keresztmetszetéhez, ha a lemezalrendszer az I/O-küszöbérték felett vagy közelében működik.

  • A közvetett ellenőrzőpontok lehetővé teszik az adatbázis-helyreállítási idő megbízható szabályozását a reDO során a véletlenszerű I/O költségeinek figyelembe adásával. Ez lehetővé teszi, hogy a kiszolgálópéldány egy adott adatbázis helyreállítási idejének felső határán belül maradjon (kivéve, ha egy hosszú ideig futó tranzakció túlzott UNDO időt okoz).

  • A közvetett ellenőrzőpontok csökkentik az ellenőrzőponttal kapcsolatos I/O-spikálást azáltal, hogy folyamatosan piszkos lapokat írnak a lemezre a háttérben.

A közvetett ellenőrzőpontokhoz konfigurált adatbázisok online tranzakciós számítási feladatai azonban teljesítménycsökkenést tapasztalhatnak. Ennek az az oka, hogy a közvetett ellenőrzőpont által használt háttéríró néha növeli a kiszolgálópéldány teljes írási terhelését.

Fontos

A közvetett ellenőrzőpont az SQL Server 2016-ban (13.x) létrehozott új adatbázisok alapértelmezett viselkedése, beleértve a model és tempdb adatbázisokat is.

A helyben frissített vagy az SQL Server egy korábbi verziójából visszaállított adatbázisok az előző automatikus ellenőrzőpont-viselkedést használják, kivéve, ha explicit módon módosították a közvetett ellenőrzőpont használatát.

Továbbfejlesztett közvetett ellenőrzőpontok méretezhetősége

Az SQL Server 2019 (15.x) előtt előfordulhatnak nem jelentkező ütemezési hibák, ha van egy olyan adatbázis, amely nagyszámú piszkos oldalt generál, például a tempdb. Az SQL Server 2019 (15.x) továbbfejlesztett méretezhetőséget biztosít a közvetett ellenőrzőpontokhoz, ami segít elkerülni ezeket a hibákat a nagy UPDATE/INSERT számítási feladattal rendelkező adatbázisokban.

Belső ellenőrzőpontok

A belső ellenőrzőpontokat különböző kiszolgálóösszetevők állítják elő, hogy a lemezképek megfeleljenek a napló aktuális állapotának. A belső ellenőrzőpontok a következő eseményekre reagálva jönnek létre:

  • Az adatbázisfájlokat az ALTER DATABASE használatával adták hozzá vagy távolították el.

  • A rendszer biztonsági másolatot készít az adatbázisról.

  • Létrejön egy adatbázis-pillanatkép, akár explicit módon, akár belsőleg a DBCC CHECKDB-hez.

  • Egy adatbázis-leállítást igénylő tevékenység történik. Például AUTO_CLOSE be van kapcsolva, és az adatbázis utolsó felhasználói kapcsolata lezárul, vagy olyan adatbázis-beállításmódosítás történik, amely az adatbázis újraindítását igényli.

  • Az SQL Server egy példányát leállítja az SQL Server (MSSQLSERVER) szolgáltatás leállítása. Ez a művelet az SQL Server példányában lévő adatbázisokban ellenőrzőpontot okoz.

  • SQL Server feladatátvevő fürtpéldány (FCI) offline állapotba helyezése.

Következő lépések

Lásd még