Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Вопрос по сжатию БД  [new]
Alex_men
Member

Откуда:
Сообщений: 783
Прошу прощения за возможно дилетантский вопрос.

Имею
1)БД на sql2005 размером в 25 гиг.
2) Софт который периодически по критерию "ранее указанной даты" производит как это разработчики называют архивацию. Суть простая из рабочей БД данные переливаются в архивную БД. В рабочей данные, по заверению разработчиков, удаляются. Обычно архивация выполняется за месяц. В зависимости от "сезона" архивная база прибавляет в весе от 300 МБ до 1 ГБ

Что хотелось бы. Хотелосьбы понять
1) Возможно ли ужать основную базу на размер удаленных файлов? (т.к. жесткие диски не резиновые , а денег на новые хрен выбъешь пока все не упадет. Да еще и огребеш по полной за то что "не убедил и не предотвратил")
2) сейчас паралельно лопачу форум и часто встречаю намеки что сжатие штука сама в себе и не шибко безопасно. Чем мне это может грозить?
22 ноя 11, 20:55    [11640721]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Alex_men
Member

Откуда:
Сообщений: 783
Alex_men,

В дополнение. Я только начинаю осваивать SQL в плотном режиме. Прочиталь в мелкософтовском учебнике по 2005 что сжатие это хорошо и экономит место и вообще рекомендуют делать это периодически например раз в неделю по выходным
22 ноя 11, 21:16    [11640841]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
1. Можно. dbcc shrinkdatabase/shrikfile
2. штука безопасная. Но, как и любая другая штука должна применятся с умом.
22 ноя 11, 21:19    [11640856]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Alex_men
Alex_men,

В дополнение. Я только начинаю осваивать SQL в плотном режиме. Прочиталь в мелкософтовском учебнике по 2005 что сжатие это хорошо и экономит место и вообще рекомендуют делать это периодически например раз в неделю по выходным

очень хорошо экономит место удаление базы как таковой.
Что за учебник такой, с такими рекомендациями?
22 ноя 11, 21:20    [11640861]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Alex_men
Member

Откуда:
Сообщений: 783
locky
очень хорошо экономит место удаление базы как таковой.


:) этот совет тоже часто встречаю на форуме, но на это пойти никак не могу.

locky
Что за учебник такой, с такими рекомендациями?


так это "официальное пособие для самоподготовки SQL Server 2005 Реализация и обслуживание. Учебный курс Микрософт" стр 376 :)
22 ноя 11, 21:30    [11640882]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Alex_men
Member

Откуда:
Сообщений: 783
locky
1. Можно. dbcc shrinkdatabase/shrikfile
2. штука безопасная. Но, как и любая другая штука должна применятся с умом.


Вот по dbcc shrikfile вопрос. Там же надо указать размер до которого я хочу ужать. Но базу не ужмешь меньше чем объем данных в ней. Как правильно определить объем до коророго я могу файлы ужать? Опятьже имеет смысл оставить некий запас, чтобы не при тормаживало при первом приращении файлов( если я урежу по полной). ну это я так понимаю

И еще dbcc shrinkdatabase/shrikfile должны использовать вместе и в определенной последовательности. или же могут быть сами по себе?
22 ноя 11, 21:35    [11640899]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Alex_men
locky
1. Можно. dbcc shrinkdatabase/shrikfile
2. штука безопасная. Но, как и любая другая штука должна применятся с умом.


Вот по dbcc shrikfile вопрос. Там же надо указать размер до которого я хочу ужать. Но базу не ужмешь меньше чем объем данных в ней. Как правильно определить объем до коророго я могу файлы ужать? Опятьже имеет смысл оставить некий запас, чтобы не при тормаживало при первом приращении файлов( если я урежу по полной). ну это я так понимаю

И еще dbcc shrinkdatabase/shrikfile должны использовать вместе и в определенной последовательности. или же могут быть сами по себе?

1. Ставишь 1мб. Меньше чем возможно - всё равно не ужмёт.
2. можно использовать отдельно. лично я использую shrinkfile - точнее контроль.

Хотя я не до конца понимаю необходимость сжатия после удаления данных. Зачем сжимать - если гарантированно такой же (или больший объем) будет затребован до следующего удаления данных?
22 ноя 11, 21:41    [11640911]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Alex_men
так это "официальное пособие для самоподготовки SQL Server 2005 Реализация и обслуживание. Учебный курс Микрософт" стр 376 :)

наверное там описаны также какие-то дополнительные условия для сего действия.
22 ноя 11, 21:42    [11640916]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Alex_men
Member

Откуда:
Сообщений: 783
[quot locky]
Alex_men
пропущено...
Хотя я не до конца понимаю необходимость сжатия после удаления данных. Зачем сжимать - если гарантированно такой же (или больший объем) будет затребован до следующего удаления данных?

Вот тут собственно я видимо не очень понимаю а используется ли высвободившееся место в базе в дальнейшем

Там написано при массовом удалении данных надо жать
22 ноя 11, 21:46    [11640926]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
LenaV
Member

Откуда: USA
Сообщений: 6796
после архивирования перестройте индексы.

а используется ли высвободившееся место в базе в дальнейшем - да.
22 ноя 11, 21:52    [11640941]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
LenaV
после архивирования перестройте индексы.

а используется ли высвободившееся место в базе в дальнейшем - да.


а зачем? для чего после удаления перестраивать индексы? может есть какието причины и критерии согласно которым когдато надо перестроить когдато сделать реорганизацию а когдато и не трогать?
22 ноя 11, 22:36    [11641079]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Кудряшка
Member

Откуда: Сидней
Сообщений: 2219
DBCC SHRINKFILE как правило результатом имеет сильно фрагментированные индексы в базе данных.
Это влияет весьма негативно на производительность, т.о. желательно индексы перестроить, что в свою очередь может повлиять на размер БД в сторону увеличения :)

Эту задачу можно решать через партицирование (например, по дате). При архивировании просто делать SWITCH и потом переливать в архивную базу.

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

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

Это конечно если очень надо каждый раз освобождать место...

Шринковать фаилы с живыми данными - это плохое решение.

ИМХО.
23 ноя 11, 07:03    [11641813]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Кудряшка,

>DBCC SHRINKFILE как правило результатом имеет сильно фрагментированные индексы в базе данных.

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

ps ТСу - не стоит заниматься шринкованием, в Вашем случае это похоже бесполезная трата времени и ресурсов сервера.
23 ноя 11, 09:13    [11642004]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Alex_men,

Можете также попробовать сжатие индексов ( DATA_COMPRESSION = { ROW | PAGE}) или разрежённые столбцы (SPARSE), если Вы уж так рьяно боретесь за место.
23 ноя 11, 11:17    [11642711]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
komrad
Member

Откуда:
Сообщений: 5763
Alex_men,

если очень хочется, то вот относительно безвредный (ничего не перемешивает, а просто отрезает свободное место с коеца файла):


dbcc shrinkfile (file_id,TRUNCATEONLY)

BOL
Releases all free space at the end of the file to the operating system but does not perform any page movement inside the file. The data file is shrunk only to the last allocated extent.
23 ноя 11, 11:39    [11642910]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Alex_men
В рабочей данные, по заверению разработчиков, удаляются.


По идее, рост базы не может быть значительным. Попробуйте делать почаще ребилд индексов.
23 ноя 11, 12:00    [11643143]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Jovanny
Alex_men
В рабочей данные, по заверению разработчиков, удаляются.


По идее, рост базы не может быть значительным. Попробуйте делать почаще ребилд индексов.


Как часто надо делать ребилд индексов?
23 ноя 11, 12:48    [11643608]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3637
Извиняюсь, но не увидел модель восстановления базы ну и собственно отсюда вытекающий: А что пухнет то, данные или логи ? (*.mdf или *.ldf)
23 ноя 11, 12:57    [11643708]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Ozerov
Извиняюсь, но не увидел модель восстановления базы ну и собственно отсюда вытекающий: А что пухнет то, данные или логи ? (*.mdf или *.ldf)


так ни че не пухнет... просто решили они "архивировать" периодически данные - отсюда и вопрос был, чтобы как ток заархивировали шринковать.
23 ноя 11, 13:12    [11643874]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Кудряшка
Member

Откуда: Сидней
Сообщений: 2219
komrad
Alex_men,

если очень хочется, то вот относительно безвредный (ничего не перемешивает, а просто отрезает свободное место с коеца файла):


dbcc shrinkfile (file_id,TRUNCATEONLY)

BOL
Releases all free space at the end of the file to the operating system but does not perform any page movement inside the file. The data file is shrunk only to the last allocated extent.


Да да... ключевое слово именно "в конце" файла.
Успехов :)
23 ноя 11, 13:22    [11643965]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3637
Alex_men
Что хотелось бы. Хотелосьбы понять
1) Возможно ли ужать основную базу на размер удаленных файлов? (т.к. жесткие диски не резиновые , а денег на новые хрен выбъешь пока все не упадет. Да еще и огребеш по полной за то что "не убедил и не предотвратил")


Все же, мне кажется, из выше изложенного, он хочет ужимать ОСНОВНУЮ базу, после переноса данных в архив. Отсюда, если модель FULL, а бэкап логов не настроен, то хоть обшринкуйся, пардон за мой французский, то мало что изменится. Поэтому и спрашивал о моделе.
23 ноя 11, 13:22    [11643966]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Кудряшка
Member

Откуда: Сидней
Сообщений: 2219
SanyL
Кудряшка,

>DBCC SHRINKFILE как правило результатом имеет сильно фрагментированные индексы в базе данных.

Совсем не обязательно. Но направление правильное - проблема связанная с фрагментированием.


Я и не говорила, что обязательно, я сказала "как правило" :) И уровень фрагментации в принципе непредсказуем, что есть некомфортно.

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


Мнэ... занимайтесь :)
Я лично вижу тут 1 проблему: Невозможно ОБЕСПЕЧИТЬ освобождение места на диске в обьеме заархивированных данных (опять же, если такая задача остро стоит, лично я бы вообще не заморачивалась на эту тему) и избежать фрагментации.

ИМХО, только оперируя файловыми группами.
23 ноя 11, 13:33    [11644069]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Кудряшка
SanyL
Кудряшка,

>DBCC SHRINKFILE как правило результатом имеет сильно фрагментированные индексы в базе данных.

Совсем не обязательно. Но направление правильное - проблема связанная с фрагментированием.


Я и не говорила, что обязательно, я сказала "как правило" :) И уровень фрагментации в принципе непредсказуем, что есть некомфортно.

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


Мнэ... занимайтесь :)
Я лично вижу тут 1 проблему: Невозможно ОБЕСПЕЧИТЬ освобождение места на диске в обьеме заархивированных данных (опять же, если такая задача остро стоит, лично я бы вообще не заморачивалась на эту тему) и избежать фрагментации.

ИМХО, только оперируя файловыми группами.


Почитайте про:
1. DBCC SHOWCONTIG
2. sys.dm_db_index_physical_stats

Дальше поймите суть внешней и внутренней фрагментации MS SQL.

Полагаю поймете что уровень фрагментации (как внутренней так и внешней) можно оценить. Дальше есть рекомендации по действиям которые следует принять на основе полученной оценки.

Зачем тут оперировать ФГ? Это как бэ ни при чем...
23 ноя 11, 13:59    [11644371]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Кудряшка
Member

Откуда: Сидней
Сообщений: 2219
SanyL,

Т.е. Вы утверждаете, что имея БД с, допустим, 30% свободного места в ней, возможно оценить % фрагментации которая возникнет после примемения к файлам БД команды DBCC SHRINKFILE ?
23 ноя 11, 14:10    [11644499]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по сжатию БД  [new]
Кудряшка
Member

Откуда: Сидней
Сообщений: 2219
SanyL
Зачем тут оперировать ФГ? Это как бэ ни при чем...


Очень даже причем.

У ТС есть база данных, которая используется в постоянном режиме.
Раз в месяц из нее архивируются данные.
У него стоит задача после архивации освободить место на диске.

Я правильно понимаю?

Вы ратуете за SHRINKFILE + посмотреть на фрагметированные индексы и реорганизовать или перестроить их. Я правильно понимаю?
Я же пытаюсь сказать следующее - невозможно утверждать что размер БД в ГБ после этих манипуляций уменьшится на размер заархивированных данных. БД в размере может и увеличиться (теоретически и это возможно) после перестроения зафрагментировавшихса инексов.

Смотрите хоть в DBCC SHOWCONTIG хоть в sys.dm_db_index_physical_stats, а факт достижения поставленной цели не гарантирован.

Если же оперировать ФГ, как я описала в моем первом своем посте, эта цель достигается.
23 ноя 11, 14:34    [11644721]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить