Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
databáze SQL v Microsoft Fabric
Vstupně-výstupní operace z instance databázového stroje zahrnuje logické a fyzické zápisy. K logickému zápisu dochází v případě, že se data upraví na stránce v mezipaměti vyrovnávací paměti. Při zápisu stránky z vyrovnávací paměti na disk dojde k fyzickému zápisu.
Při změně stránky v mezipaměti vyrovnávací paměti se nezapíše okamžitě zpět na disk; místo toho se stránka označí jako špinavá. To znamená, že stránka může mít více než jeden logický zápis, než se fyzicky zapisuje na disk. Při každém logickém zápisu se do mezipaměti protokolu vloží záznam transakčního protokolu, který zaznamenává úpravy. Záznamy protokolu musí být zapsány na disk před odebráním přidružené špinavé stránky z vyrovnávací paměti a jejím zapsáním na disk.
SQL Server používá techniku, která se označuje jako protokolování s předstihem zápisu (WAL), která brání zápisu špinavé stránky před zápisem přidruženého záznamu protokolu na disk. To je nezbytné pro správnou práci správce obnovení. Další informace najdete v tématu Transakční protokol s předběžným zápisem.
Jak SQL Server zapíše upravenou datovou stránku
Následující obrázek znázorňuje proces zápisu upravené datové stránky.
Když správce vyrovnávací paměti zapíše stránku, vyhledá sousední špinavé stránky, které mohou být zahrnuty do jedné operace indexování a zápisu. Sousední stránky mají po sobě jdoucí ID stránek a jsou ze stejného souboru; stránky nemusí být souvislé v paměti. Hledání pokračuje vpřed i dozadu, dokud nedojde k jedné z následujících událostí:
- Byla nalezena čistá stránka.
- Bylo nalezeno 32 stránek.
- V protokolu se najde špinavá stránka, jejíž pořadové číslo protokolu (LSN) ještě není vyprázdněné.
- Byla nalezena stránka, kterou nelze ihned uzamknout.
Tímto způsobem lze celou sadu stránek zapsat na disk pomocí jedné operace indexování a zápisu.
Těsně před zápisem stránky se na stránku přidá forma ochrany stránek zadaná v databázi.
Pokud je přidána ochrana proti roztržení stránky, musí být stránka pro operace vstupu/výstupu výhradně uzamčena (EX). Důvodem je, že ochrana proti roztržení stránky upravuje stránku, což ji činí nevhodnou pro čtení jakýmkoli jiným vláknem.
Pokud je přidána ochrana stránky kontrolního součtu nebo databáze nepoužívá žádnou ochranu stránky, je stránka zamčena západkou aktualizace (UP) pro vstupně-výstupní operace. Tato západka zabraňuje ostatním uživatelům v úpravě stránky během psaní, ale přesto umožňuje čtenářům, aby ji mohli používat.
Další informace o možnostech ochrany vstupně-výstupních stránek disku naleznete v tématu Správa vyrovnávací paměti.
Jak se na disk zapisují špinavé stránky
Špinavá stránka se na disk zapisuje jedním ze tří způsobů:
Procesy líného zápisu, dychtivého zapisování a kontrolních bodů nečekají na dokončení operace vstupně-výstupní. Vždy používají asynchronní (nebo překryvné) vstupně-výstupní operace a pokračují v jiné práci, přičemž úspěšnost těchto operací kontrolují později. Sql Server tak umožňuje maximalizovat prostředky procesoru i vstupně-výstupních operací pro příslušné úlohy.
Líný proces zápisu
Opožděný zapisovač je systémový proces, který udržuje volné vyrovnávací paměti dostupné odebráním zřídka používaných stránek z mezipaměti vyrovnávací paměti. Na disk se nejprve zapisují špinavé stránky.
Proces rychlého zápisu
Proces dychtivého zápisu zapisuje špinavé datové stránky spojené s minimálními protokolovanými operacemi, jako je hromadné vložení a výběr. Tento proces umožňuje paralelně vytvářet a psát nové stránky. To znamená, že volající operace nemusí čekat na dokončení celé operace před zápisem stránek na disk.
Proces kontrolního bodu
Proces kontrolního bodu pravidelně prohledává vyrovnávací paměť pro stránky ze zadané databáze a zapisuje všechny upravené stránky na disk. Kontrolní body šetří čas během pozdějšího obnovení vytvořením bodu, ve kterém jsou zaručeny, že všechny špinavé stránky byly zapsány na disk.
Uživatel může požádat o operaci kontrolního bodu pomocí CHECKPOINT příkazu nebo databázový stroj může vygenerovat automatické kontrolní body na základě využitého místa protokolu a času uplynulého od posledního kontrolního bodu. Kontrolní bod se navíc vygeneruje, když dojde k určitým aktivitám. Například při přidání nebo odebrání datového souboru nebo souboru protokolu z databáze nebo při zastavení instance SQL Serveru.
Další informace najdete v tématu Kontrolní body a aktivní část protokolu.