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
Tento článek popisuje kompresi záloh SQL Serveru, včetně omezení, kompromisu mezi výkonem při komprimaci záloh, konfigurací komprese zálohování a poměrem komprese. Komprese záloh se podporuje v edicích SQL Serveru: Enterprise, Standard a Developer. Každá edice SYSTÉMU SQL Server 2008 (10.0.x) a novější může obnovit komprimovanou zálohu.
Výhody
Vzhledem k tomu, že komprimované zálohování je menší než nekomprimované zálohování stejných dat, komprese zálohy obvykle vyžaduje méně vstupně-výstupních operací zařízení, a proto obvykle výrazně zvyšuje rychlost zálohování.
Další informace najdete v tématu Dopad komprese záloh na výkon dále v tomto článku.
Omezení
Na komprimované zálohy platí následující omezení:
Komprimované a nekomprimované zálohy nemůžou existovat společně v sadě médií.
Předchozí verze SQL Serveru nemůžou číst komprimované zálohy.
NTbackups nemůže sdílet pásku s komprimovanými zálohami SQL Serveru.
Algoritmus komprese ZSTD zavedený v SQL Serveru 2025
Počínaje VERZÍ SQL Server 2025 (17.x) Preview je k dispozici nový algoritmus komprese ZSTD pro kompresi záloh. Tento algoritmus je rychlejší a efektivnější než předchozí algoritmus MS_XPRESS.
K kompresi záloh můžete použít algoritmus ZSTD jedním z následujících způsobů:
- Zadáním možnosti
WITH COMPRESSION (ALGORITHM = ZSTD)
v příkazu ZÁLOHOVÁNÍ Transact-SQL pro určitou zálohu. - Nastavením serverové konfigurační možnosti komprese zálohování na 3. Tato možnost nastaví výchozí algoritmus komprese zálohování na ZSTD pro všechny zálohy , které tuto
WITH COMPRESSION
možnost používají.
Poznámka:
Algoritmus ZSTD je aktuálně ve verzi Preview a je k dispozici pouze v SQL Serveru 2025 (17.x) Preview.
Dopad na výkon komprimace záloh
Komprese ve výchozím nastavení výrazně zvyšuje využití procesoru a další procesor spotřebovaný procesem komprese může nepříznivě ovlivnit souběžné operace. Proto můžete chtít vytvořit komprimované zálohy s nízkou prioritou v relaci, jejíž využití procesoru omezuje správce prostředků. Další informace naleznete v tématu Použití správce prostředků ke snížení využití procesoru prostřednictvím komprese zálohy (Transact-SQL).
Počínaje SQL Serverem 2022 (16.x) můžete pomocí integrovaného snižování zátěže a akcelerace zkomprimovat zálohy a přesměrovat prostředky procesoru pro zálohování.
Pokud chcete získat dobrý přehled o výkonu vstupně-výstupních operací zálohování, můžete izolovat vstupně-výstupní operace zálohování do nebo ze zařízení vyhodnocením následujících druhů čítačů výkonu:
Čítače výkonu vstupně-výstupních operací windows, jako jsou čítače fyzického disku
Čítač propustnosti zařízení v bajtech za sekundu objektu SQLServer:Backup Device
Čítač propustnosti zálohování/obnovení za sekundu objektu SQLServer:Databases
Informace o čítačích Windows naleznete v nápovědě k systému Windows. Informace o tom, jak pracovat s čítači SQL Serveru, naleznete v tématu Použití objektů SYSTÉMU SQL Server.
Výpočet poměru komprese komprimované zálohy
K výpočtu poměru komprese zálohy použijte hodnoty pro zálohování v backup_size a compressed_backup_size sloupce tabulky historie zálohovací sady následujícím způsobem:
backup_size:compressed_backup_size
Například poměr komprese 3:1 značí, že ušetříte přibližně 66% na místě na disku. K dotazování na tyto sloupce můžete použít následující příkaz Transact-SQL:
SELECT backup_size/compressed_backup_size FROM msdb..backupset;
Poměr komprese komprimované zálohy závisí na komprimovaných datech. Získaný poměr komprese může mít vliv na různé faktory. Mezi hlavní faktory patří:
Typ dat.
Znaková data komprimují více než jiné typy dat.
Konzistence dat mezi jednotlivými řádky na stránce
Obvykle platí, že pokud stránka obsahuje několik řádků, ve kterých pole obsahuje stejnou hodnotu, může pro danou hodnotu dojít k významné kompresi. Naproti tomu pro databázi, která obsahuje náhodná data nebo která obsahuje pouze jeden velký řádek na stránku, bude komprimovaná záloha téměř tak velká jako nekomprimovaná záloha.
Jestli jsou data zašifrovaná
Šifrovaná data komprimují výrazně méně než ekvivalentní nešifrovaná data. Pokud jsou například data šifrovaná na úrovni sloupce pomocí funkce Always Encrypted nebo s jiným šifrováním na úrovni aplikace, nemusí komprese záloh významně snížit velikost.
Další informace související s komprimací databází šifrovaných transparentním šifrováním dat najdete v tématu Komprese záloh pomocí transparentního šifrování dat.
Zda je databáze komprimovaná.
Pokud je databáze komprimovaná, komprese záloh nemusí snížit jejich velikost o moc, pokud vůbec.
Komprese zálohování s využitím transparentního šifrování dat
Počínaje SQL Serverem 2016 (13.x), nastavení MAXTRANSFERSIZE
větší než 65536 (64 kB) umožňuje optimalizovaný algoritmus komprese pro transparentní šifrování dat (TDE) šifrovaných databází, které nejprve dešifrují stránku, komprimují ho a pak ho znovu zašifrují. Pokud MAXTRANSFERSIZE
není zadáno nebo pokud MAXTRANSFERSIZE = 65536
se používá (64 kB), komprese záloh s šifrovanými databázemi transparentním šifrováním dat přímo komprimuje šifrované stránky a nemusí přinést dobrý poměr komprese. Další informace naleznete v tématu Komprese zálohování pro databáze s podporou transparentního šifrování dat.
Od verze SQL Server 2019 (15.x) CU5 už nastavení MAXTRANSFERSIZE
nevyžaduje povolení tohoto optimalizovaného komprimačního algoritmu pomocí transparentního šifrování dat. Pokud je zadaný WITH COMPRESSION
příkaz zálohování nebo je výchozí konfigurace komprese zálohování nastavená na 1, MAXTRANSFERSIZE
automaticky se zvýší na 128 tisíc, aby se povolil optimalizovaný algoritmus. Pokud MAXTRANSFERSIZE
je v příkazu zálohování zadána hodnota > 64K, je zadaná hodnota dodržena. Jinými slovy, SQL Server nikdy automaticky nezmenší hodnotu, zvýší ji pouze. Pokud potřebujete zálohovat šifrovanou databázi transparentního šifrování dat pomocí MAXTRANSFERSIZE = 65536
, musíte zadat WITH NO_COMPRESSION
nebo zajistit, aby výchozí konfigurace komprese zálohování serveru byla nastavena na hodnotu 0.
Další informace naleznete v tématu BACKUP (Transact-SQL).
Přidělení místa pro záložní soubor
U komprimovaných záloh závisí velikost konečného záložního souboru na tom, jak jsou komprimovatelná data, a to není známo před dokončením operace zálohování. Proto při zálohování databáze pomocí komprese používá databázový stroj algoritmus předběžné polohy pro záložní soubor. Tento algoritmus předem přiděluje předdefinované procento velikosti databáze záložního souboru. Pokud během operace zálohování potřebujete více místa, databázový stroj soubor zvětšuje. Pokud je konečná velikost menší než přidělený prostor, databázový stroj na konci operace zálohování zmenší soubor na skutečnou konečnou velikost zálohy.
Pokud chcete záložnímu souboru umožnit růst pouze podle potřeby, aby dosáhl konečné velikosti, použijte příznak trasování 3042. Příznak trasování 3042 způsobí, že operace zálohování vynechá výchozí algoritmus předlokace komprese zálohování. Tento příznak trasování je užitečný, pokud potřebujete ušetřit místo přidělením pouze skutečné velikosti požadované pro komprimované zálohování. Použití tohoto příznaku trasování však může způsobit mírné snížení výkonu (možné zvýšení doby trvání operace zálohování).
Související úkoly
Zobrazení nebo konfigurace výchozí možnosti komprese záloh v nastavení serveru
Omezení využití procesoru pomocí správce prostředků kompresí zálohování (Transact-SQL)
Další kroky
přehled zálohování (SQL Server)
příznaky trasování (Transact-SQL)