Компресирането на база данни

Всеки файл база данни може да се компресира чрез премахване на неизползвани страници. Въпреки че Database Engine лостове дисково пространство, има ситуации, когато файловете вече не се изискват такъв обем, както преди. Това може да доведе до необходимостта от компресиране на файлове. файлове с данни и регистър на операциите, можете да намалите (компресиране). Възможно е да компресирате файловете на базата данни ръчно (като група или индивидуално) или автоматично на редовни интервали.

компресиране на файлове се извършва винаги в края. Например, ако има 5 GB файл и където като стойността на аргумента target_size DBCC SHRINKFILE набор инструкции 4GB, компонент Database Engine освободи максималното място от последната гигабайт файла. Ако освободените части на файла са заети страница, Database Engine компонент първо да ги преместите в магазина често. Свиване базата данни само до степен, че да не е по-голямо пространство. Например, ако база данни 5GB съдържа размера на 4 GB на данни, и като стойността на аргумент target_size DBCC SHRINKFILE инструкция избран 3 GB, той ще се освобождава само 1 GB.

Ако параметърът данни на база AUTO_SHRINK е настроен на ON, компонент Database Engine автоматично компресира база данни, в която да има празно място. Тази настройка е конфигуриран с помощта на ALTER изявление база данни. По подразбиране тази опция е настроена на OFF. Машината на базата данни периодично проверява използването на дисково пространство във всяка база данни. Ако параметър AUTO_SHRINK в базата данни е настроен на ON, компонент Database Engine намалява размера на файловете на базата данни. Тази операция се извършва във фонов режим и не засяга действията на потребителя в базата данни.

автоматичен режим на компресия Създаване на база данни

База данни или файлове могат да бъдат компресирани ръчно с помощта на отчета за DBCC SHRINKDATABASE или DBCC SHRINKFILE. Ако твърдението DBCC SHRINKDATABASE или DBCC SHRINKFILE не може да запазваме всички дисково пространство, посочено в лог файл, информационно съобщение се посочва, че трябва да бъде издадена на действието, което трябва да се следват, за да може свободно дисково пространство. За повече информация за компресия, вижте лог файловете. При компресия на регистъра на операциите.

Операции DBCC SHRINKDATABASE DBCC SHRINKFILE и може да бъде спряно във всеки един етап от процеса, с цялата работа, извършена е съхранен.

Използване на инструкции DBCC SHRINKDATABASE не може да компресира цялата база данни до размер, който е по-малък от оригинала. Ето защо, ако базата данни е създадена с площ от 10 MB, а след това се увеличи до 100 MB, то може да се компресира само 10 MB, дори и ако всички данни, се изтрива от базата данни.

Въпреки това, с помощта на изявление DBCC SHRINKFILE да компресирате отделни файлове на базата данни до размер, който е по-малък от първоначалното. В този случай, всеки файл, да бъдат компресирани индивидуално.

Невъзможно е да се компресира в базата данни или регистър на операциите на резервацията си. От друга страна, не можете да създадете резервно копие на регистъра на база данни или сделката, тъй като те са компресирани.

Той предвижда фиксирани крайности, на които е възможно да се компресира регистър на операциите по делото. Размерът на виртуални лог файловете в дневника определяне на границите на компресия. Ето защо, лог файл не може да се компресира до размер, по-малък от размера на един виртуален лог файл. В допълнение, за да се намали размера на лог файл е възможно само с една стъпка, равна на размера на виртуалната лог файл. Така например, размер на файла от дневника на 1 GB на сделките може да се състои от пет виртуални лог файловете на 200 МБ. Когато регистър на операциите на файл с компресиране неизползвани виртуални лог файловете се изтриват, но трябва да остане минимум два файла. Тъй като всяка виртуална лог файл в този пример е регистър на транзакциите, 200 MB може да се компресира до най-малко 400 MB на стъпки от 200MB. За да бъде в състояние да изтръгне повече на регистрационен файл, сделка, трябва да създадете малко списание, и да настроите автоматичен режим на увеличение с неговия размер, а не само за създаване на обем на регистрационен файл, сделка.

DBCC SHRINKDATABASE команда или DBCC SHRINKFILE се опита веднага да се намали размера на търговията на регистрационните файлове до желания (след закръгляване). Преди компресия трябва да извършва архивиране на регистрационните файлове до намаляване на размера на логическата дневника, и маркирани като неактивни всички виртуални дневници, които не съдържат който и да е част от логическата дневника. За повече информация, вижте. Раздел на компресията на регистър на транзакциите.

препоръки

Следните съображения следва да бъдат взети под внимание при планирането на база данни или файл компресия.

Най-голям ефект се постига чрез операция на компресия в случай, че се извършва след операцията, което създава много губи пространство (отрязване или заличаване на таблицата).

Повечето бази данни, за да изпълняват функциите ежедневните операции изискват определено количество свободно място. Ако компресията на базата данни се извършва редовно, но тя отново увеличава размера си, което означава, че не се изисква освобождаването на пространство за компресиране за редовни операции. В такива случаи отново компактен базата данни е безсмислена.

компресия операция база данни не премахва разпокъсаността на индексите, но напротив, обикновено са още по-го увеличава. Например, не компресира файла с базата данни или след корекция на индекса. Това е още една причина да се откаже повторно компактен базата данни.

Не инсталирайте опция базата данни на на AUTO_SHRINK без достатъчно основание.

Операции могат да блокират операция пресоване, която се извършва с нивото на изолация на основата на контрол ред версии. Например, когато се извършва мащабно ниво на изолация операция отстраняване на базата на ред версии за да направите ръчно DBCC SHRINK на база данни, а след това, преди да се пристъпи към компресиран файл, той ще изчака завършването на операцията по изтриване. В този случай, операцията по DBCC SHRINKFILE и изход DBCC SHRINKDATABASE в SQL Server грешка дънер информационно съобщение (5202 за SHRINKDATABASE и 5203 за SHRINKFILE), което го прави на всеки 5 минути през първия час, а след това един съобщението на всеки час. За допълнителна информация. Вижте DBCC SHRINKDATABASE (Transact-SQL).