Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai Platform System (PDW)
SQL adatbázis a Microsoft Fabric-ben
Az adatbázismotor egy példányából származó I/O logikai és fizikai írásokat tartalmaz. Logikai írásra akkor kerül sor, amikor az adatok módosulnak a gyorsítótár egy lapján. Fizikai írás akkor történik, ha a lap a puffergyorsítótárból a lemezre van írva.
Ha egy lap módosul a puffergyorsítótárban, a rendszer nem írja vissza azonnal a lemezre; ehelyett a lap piszkosként van megjelölve. Ez azt jelenti, hogy egy lapnak több logikai írása is lehet, mielőtt fizikailag lemezre íródott volna. Minden logikai íráshoz a rendszer egy tranzakciónapló-rekordot szúr be a módosítást rögzítő naplógyorsítótárba. A naplórekordokat a lemezre kell írni, mielőtt a társított piszkos lapot eltávolítanák a puffergyorsítótárból, és lemezre íranák.
Az SQL Server egy írás előtti naplózás (WAL) nevű technikát használ, amely megakadályozza a piszkos lapok írását, mielőtt a társított naplórekordot lemezre írták volna. Ez elengedhetetlen a helyreállítási vezető megfelelő működéséhez. További információ: Előírásos tranzakciónapló.
Módosított adatoldal írása az SQL Serveren
Az alábbi ábra a módosított adatoldal írásának folyamatát mutatja be.
Amikor a pufferkezelő egy lapot ír, megkeresi a szomszédos piszkos oldalakat, amelyek egyetlen gyűjtési-írási műveletben is szerepelhetnek. A szomszédos lapok egymást követő oldalazonosítókkal rendelkeznek, és ugyanabból a fájlból származnak; a lapoknak nem kell egybefüggőnek lenniük a memóriában. A keresés mind előre, mind hátra folytatódik, amíg az alábbi események egyike nem következik be:
- A rendszer tiszta lapot talál.
- 32 oldal található.
- Egy olyan piszkos oldal található, amelynek naplósorozatszáma (LSN) még nem lett kiírva a naplóba.
- Olyan lap található, amely nem zárható le azonnal.
Ily módon a teljes lapkészlet egyetlen gyűjtési-írási művelettel írható lemezre.
A lap írása előtt a rendszer hozzáadja az adatbázisban megadott lapvédelem formáját a laphoz.
Ha a szakadt lap védelem hozzá van adva, az oldalnak kizárólagosan zárva kell lennie az I/O (EX) céljából. Ennek az az oka, hogy a sérült oldalvédelem módosítja az oldalt, ami miatt az nem alkalmas más szálak olvasására.
Ha hozzá van adva az ellenőrzőösszeg lapvédelme, vagy az adatbázis nem használ lapvédelmet, a lap egy frissítési (UP) retesz segítségével kerül lezárásra az I/O-hoz. Ez a retesz megakadályozza, hogy bárki más módosítsa a lapot az írás során, de továbbra is lehetővé teszi az olvasók számára a használatát.
A lemez I/O-lapvédelmi beállításairól további információt a Pufferkezelés című témakörben talál.
A piszkos lapok lemezre írásának menete
A rendszer a következő három módszer egyikével ír egy piszkos lapot a lemezre:
A lusta írási, a türelmetlen írási és ellenőrzőpont-folyamatok nem várnak az I/O művelet befejezésére. Mindig aszinkron (vagy átfedésben lévő) I/O-t használnak, és más munkával folytatják, és később ellenőrzik az I/O sikerességét. Ez lehetővé teszi, hogy az SQL Server a cpu- és az I/O-erőforrásokat is maximalizálja a megfelelő feladatokhoz.
Lusta írási folyamat
A lusta író egy olyan rendszerfolyamat, amely az ingyenes puffereket úgy tartja elérhetővé, hogy eltávolítja a ritkán használt lapokat a puffergyorsítótárból. A rendszer először lemezre írja a piszkos lapokat.
Lelkes írási folyamat
A lelkes írási folyamat olyan, minimálisan naplózott műveletekhez társított piszkos adatoldalakat ír, mint a tömeges beszúrás és a kiválasztás. Ez a folyamat lehetővé teszi új lapok párhuzamos létrehozását és írását. Vagyis a hívó műveletnek nem kell megvárnia, amíg a teljes művelet befejeződik, mielőtt a lapokat lemezre írna.
Ellenőrzőpont-folyamat
Az ellenőrzőpont-folyamat rendszeres időközönként ellenőrzi a puffergyorsítótárat egy megadott adatbázis lapjaival, és az összes piszkos lapot lemezre írja. Az ellenőrzőpontok időt takaríthatnak meg egy későbbi helyreállítás során, ha létrehoznak egy pontot, ahol az összes piszkos lap garantáltan lemezre lett írva.
A felhasználó kérheti az ellenőrzőpont-műveletet a CHECKPOINT parancs használatával, vagy az adatbázismotor automatikus ellenőrzőpontokat hozhat létre az utolsó ellenőrzőpont óta eltelt naplóterület és idő alapján. Emellett bizonyos tevékenységek során ellenőrzőpont jön létre. Ha például adatokat vagy naplófájlokat adnak hozzá vagy távolítanak el egy adatbázisból, vagy ha az SQL Server-példány leáll.
További információ: Ellenőrzőpontok és a napló aktív része.