it-swarm-eu.dev

Jak zmenšení souboru protokolu serveru SQL Server ovlivní výkon?

Mám databázi SQL Server 2008, která má datový soubor o velikosti přibližně 2 GB, ale soubor protokolu je přes 8 GB. S databázemi před rokem 2008 jsem mohl použít 'Zálohovací protokol' a TRUNCATE_ONLY možnost, ale to již není k dispozici u databází 2008 a novějších.

Mám skript, který zkrátí soubor protokolu:

USE [MyDatabase]
GO
ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT
DBCC shrinkfile('MyDatabase_log', 1)
ALTER DATABASE [MyDatabase] SET RECOVERY FULL WITH NO_WAIT
GO

Tím se kompletně zkrátí soubor protokolu, ale moje otázka zní: Má to vliv na výkon?

Denně provádím dvě úplné zálohy, takže protokol by ve skutečnosti neměl být nutný, pokud jde o přesouvání dat.

19
MartinHT

Opravdu doporučuji čtení Důležitost správné správy velikosti transakčních protokolů Paul S. Randal.

Kvintesencí je, že existují pouze dva opravdu dobré způsoby zpracování protokolu transakcí :

  1. Buď běžně zálohujte soubory LOG a soubor LOG znovu použije své místo po každém zálohování LOG a nebude růst donekonečna, nebo

  2. Použijte SIMPLE model obnovy a nemusíte se starat o velikost vašeho LOG souboru, stejně jako pravidelné plné zálohy.

Znepokojení Zkrácení a výkon souboru LOG ​​ spočívá v tom, že vždy, když se má soubor LOG zvětšit, vždy dostanete zásah do výkonu (nabídka z výše uvedeného - propojený blogový příspěvek):

Pokud protokol zmenšíte, bude to opět růst - možná způsobí fragmentaci VLF=== a fragmentaci) a určitě způsobí, že se vaše pracovní vytížení pozastaví, zatímco protokol bude růst, protože protokol nemůže použít okamžitou inicializaci [. ..]

Aktualizace: Nezaměňujte zkrácení souboru LOG ​​za zmenšování souboru DATA. Zmenšení souboru DATA je opravdu špatné. Podrobnosti najdete v části Proč byste neměli zmenšovat datové soubory .

26
MicSim

Dobře nejprve ano, protokol je nutný i při denních úplných zálohách, pokud chcete v případě problému obnovit. Zálohujeme transakční protokol každých 15 minut. Problém je v tom, že nezálohujete svůj protokol transakcí, a proto tento protokol tak pobouřeně roste. Pokud provádíte správné zálohy transakčního protokolu, neměli byste téměř nikdy potřebovat zmenšit protokol transakcí.

Před zkrácením protokolu budete muset zálohovat databázi. Navrhuji to provést mimo pracovní dobu, takže mezi zálohy a zkrácení nejsou vložena žádná nová data. Poté nastavte správné zálohy protokolu transakcí, abyste již nikdy tento problém neměli.

Pokud jde o ovlivnění výkonu, bez znalosti podrobností o hardwaru a použití vašeho systému, to by bylo těžké říct.

6
HLGEM

Jak rychle roste protokol transakcí? Pokud je to poměrně rychlé, ovlivníte výkon tím, že se zmenší na téměř nic, protože musí trávit čas jeho růstem zpět. To neznamená, že byste ho neměli čas od času zmenšit, ale musíte myslet spíše na problém velikosti, než jen snížit na minimum. Je perfektní zásah obrovský? Pravděpodobně ne, ale záleží na zatížení serveru (počet transakcí atd.).

Jedna věc, kterou považuji za problematickou, je: „Provádím 2 plné zálohy denně, takže protokol by ve skutečnosti neměl být nutný, pokud jde o postupné předávání dat.“ Protokol je nesmírně důležitý pro body mezi vašimi úplnými zálohami. Dokonce ani dvakrát denně nevylučuje potřebu souboru protokolu pro zotavení po havárii, pokud se nejedná o databázi pouze pro čtení (pokud by to bylo, neviděli byste obrovské zvýšení souboru protokolu).

4
Gregory A Beamer