2010-06-16 3 views
3

Мне было поручено сжать базу данных SQL Server 2005. Это информационная база данных и составляет около 35 гб.Сжатие базы данных

  1. Как сжать базу данных?
  2. Можно ли это сделать, пока эта база данных в прямом эфире?
  3. Насколько велика эта база данных, когда она будет сокращена?

Заранее спасибо.

ответ

7

Во-первых, если вы можете избежать сокращения базы данных производства, тогда сделайте это. Покупка дополнительного дискового хранилища практически всегда является более практичным решением в долгосрочной перспективе.

Существует причина, по которой ваши данные базы данных/файлы журнала выросли до их текущего размера, и если вы не очистили данные из своей базы данных, то очень вероятно (если не определенность), что ваша база данных будет расти до текущего размера еще раз, после усадки.

Учитывая это, вы должны посмотреть, как определить причину роста базы данных.

И наконец, если вы абсолютно должны сжать свою базу данных, выберите время, чтобы сделать это с умом, то есть выполнить это обслуживание в то время, когда ваша живая система обычно испытывает более низкую рабочую нагрузку. Сокращение файлов данных приводит к значительному объему дискового ввода-вывода, особенно если страницы данных должны быть реорганизованы.

Затем определите, какие файлы данных или файлы журналов содержат наибольшее свободное пространство и нацеливают их на сжатие отдельно. Нет смысла выполнять упражнение с уменьшением ширины базы данных, если, например, это только файл журнала, на котором имеется значительное количество свободного места.

Для этого обратитесь к документации для команды DBCC SHRINKFILE.

Полезная информация:

Indentify количество свободного пространства в базе данных в целом:

EXEC sp_spaceused 

Определить количество свободного пространства журнала:

DBCC SQLPERF('logspace') 

Определить количество свободного места на каждый файл данных/журнала:

SELECT 
    name AS 'File Name' , 
    physical_name AS 'Physical Name', 
    size/128 AS 'Total Size in MB', 
    size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS 'Available Space In MB', 
    * 
FROM sys.database_files; 
4
  1. Открыть SQL Server Management Studio. Щелкните правой кнопкой мыши вашу базу данных -> Задачи -> Усадка -> База данных

  2. Да. База данных остается в режиме реального времени.

  3. Трудно сказать. Это зависит от того, сколько свободного места в файле 35Gb. Если база данных фактически использует все 35Gb для хранения (а не для свободного места), то ваша база данных вообще не будет сокращаться.

Смежные вопросы