Сжатие базы данных – это процесс уменьшения размеров файлов базы данных за счет удаления неиспользуемых частей файла. Существует три способа сжатия базы данных:
автоматическое сжатие при установке соответствующего параметра в настройках базы данных;
удаление свободного пространства из файлов базы данных с помощью утилит администрирования MS SQL Server;
уменьшение размера указанных файлов (или файловых групп), а также очистка содержимого файлов для их последующего удаления.
Автоматическое сжатие данных выполняется постоянно с определенными интервалами, если установлен параметр базы данных autoshrink. При операциях автоматического сжатия нельзя определить, какую часть базы данных необходимо сжать. MS SQL Server пытается освободить значительную часть базы данных самостоятельно. Эти операции выполняются в период наименьшей активности пользователей.
Сжатие всей базы данных вручную осуществляется с использованием следующей команды:
DBCC SHRINKDATABASE
( database_name | database_id | 0
[ , target_percent ]
[ , { NOTRUNCATE | TRUNCATEONLY } ]
)
[ WITH NO_INFOMSGS ]
Описание параметров:
- database_name | database_id | 0 - Имя или идентификатор базы данных, которая должна быть сжата. Если указано значение 0, используется текущая база данных.
- target_percent - процент свободного пространства, которое должно остаться в базе данных после сжатия.
- NOTRUNCATE - сжимает данные в файлах с помощью перемещения распределенных страниц из конца файла на место нераспределенных страниц в начале файла. Аргумент target_percent является необязательным. Свободное место в конце файла операционной системе не возвращается, и физический размер файла не изменяется. Следовательно, если указан аргумент NOTRUNCATE, сжатие файлов данных незначительно. Аргумент NOTRUNCATE применим только к файлам данных. Файл журнала не затрагивается.
- TRUNCATEONLY - освобождает все свободное пространство в конце файла операционной системе, но не перемещает страницы внутри файла. Файл данных сокращается только до последнего выделенного экстента. Аргумент target_percent не обрабатывается, если указан аргумент TRUNCATEONLY. Аргумент TRUNCATEONLY оказывает влияние на файл журнала. Для усечения только файла данных используйте инструкцию DBCC SHRINKFILE.
- WITH NO_INFOMSGS - добавляет все информационные сообщения со степенями серьезности от 0 до 10.
Права на сжатие базы данных выданы только членам роли sysadmin и владельцам базы данных. После сжатия базы данных выводится отчет, в котором указывается:
количество страниц, до которых сжимается файл;
расчетное число страниц, в которые могут быть помещены все данные файла;
количество страниц, содержащих данные;
количество страниц, на которые файл может быть еще сжат.
Нельзя сжать базу данных до размера меньше первоначального.
Сжатие базы данных можно осуществить также и путем сжатия каждого ее файла с помощью следующей команды:
DBCC SHRINKFILE (‘имя_файла’, [‘конечный_размер’] [, EMPTYFILE | NOTRUNCATE | TRUNCATEONLY ])
Описание параметров:
имя_файла – логическое имя файла, который необходимо сжать;
конечный_размер – желательный размер (целое число в мегабайтах), который должен иметь файл после выполнения сжатия. Если этот параметр не указан или меньше минимально допустимого размера, то файл сжимается до минимально возможного размера;
EMPTYFILE – выполняется перенос данных из файла в другие файлы файловой группы;
NOTRUNCATE – освободившееся место не возвращается операционной системе, т.е. размер файла не уменьшается на самом деле. При этом данные располагаются более компактно и смещаются к началу файла;
TRUNCATEONLY – происходит обрезание файла, начиная с последней используемой страницы. Никакого перемещения данных не происходит.
Достарыңызбен бөлісу: |