Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SHRINKDATABASE и SHRINKFILE  [new]
fasfromua
Member

Откуда:
Сообщений: 12
Здравствуйте!
Проконсультируйте, пожалуйста, по поводу SHRINKDATABASE и SHRINKFILE. А именно:
Не совсем понятно, в каких случаях, и с какими параметрами (когда с NOTRUNCATE, а когда с TRUNCATEONLY) следует использовать данные команды.
К примеру, есть база данных, часть данных из которой была удалена. Размер файла базы данных, при этом, остался прежним.
При выполнении команд:
DBCC SHRINKDATABASE (DataBaseName, NOTRUNCATE) и:
DBCC SHRINKFILE (DataBaseName, NOTRUNCATE)
размер файла базы данных не меняется, а при выполнении:
DBCC SHRINKDATABASE (DataBaseName, TRUNCATEONLY) и:
DBCC SHRINKFILE (DataBaseName, TRUNCATEONLY)
файл базы данных уменьшается в размере.
Что происходит с базой данных при выполнении команд с параметром NOTRUNCATE и что, когда с TRUNCATEONLY ?
Какие действия следует применить к базе данных (хотелось бы вернуть свободное место в файле базы операционной системе) в случае удаления из неё части данных (какие из команд SHRINKDATABASE или SHRINKFILE использовать и с какими параметрами) ?
С П А С И Б О.
17 янв 12, 16:28    [11919210]     Ответить | Цитировать Сообщить модератору
 Re: SHRINKDATABASE и SHRINKFILE  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Хелп почитайте, там все написано.
17 янв 12, 16:29    [11919224]     Ответить | Цитировать Сообщить модератору
 Re: SHRINKDATABASE и SHRINKFILE  [new]
Glory
Member

Откуда:
Сообщений: 104751
Что непонятного то

NOTRUNCATE
Causes the freed file space to be retained in the database files.

TRUNCATEONLY
Causes any unused space in the data files to be released to the operating system.
17 янв 12, 16:30    [11919243]     Ответить | Цитировать Сообщить модератору
 Re: SHRINKDATABASE и SHRINKFILE  [new]
fasfromua
Member

Откуда:
Сообщений: 12
Glory
Что непонятного то

Не понятно в какой последовательности.
Сначала SHRINKDATABASE, а потом SHRINKFILE, или наоборот ?
Когда с NOTRUNCATE, а когда с TRUNCATEONLY ?
17 янв 12, 17:36    [11919922]     Ответить | Цитировать Сообщить модератору
 Re: SHRINKDATABASE и SHRINKFILE  [new]
Glory
Member

Откуда:
Сообщений: 104751
fasfromua
Сначала SHRINKDATABASE, а потом SHRINKFILE, или наоборот ?

Вы точно представляете, что хотите сделать и что получить ?

fasfromua
Когда с NOTRUNCATE, а когда с TRUNCATEONLY ?

Прочитать еще раз, что делают NOTRUNCATE и TRUNCATEONLY
И выбрать, когда вам нужно одно, а когда другое
17 янв 12, 17:40    [11919970]     Ответить | Цитировать Сообщить модератору
 Re: SHRINKDATABASE и SHRINKFILE  [new]
fasfromua
Member

Откуда:
Сообщений: 12
Glory
fasfromua
Сначала SHRINKDATABASE, а потом SHRINKFILE, или наоборот ?

Вы точно представляете, что хотите сделать и что получить ?

fasfromua
Когда с NOTRUNCATE, а когда с TRUNCATEONLY ?

Прочитать еще раз, что делают NOTRUNCATE и TRUNCATEONLY
И выбрать, когда вам нужно одно, а когда другое

Если я правильно понимаю, после удаления части данных из базы данных, для того, чтобы переместить распределенные страницы из конца файла на место нераспределенных страниц в начале файла, необходимо выполнить SHRINKDATABASE с параметром NOTRUNCATE. Далее, чтобы вернуть системе освободившееся свободное пространство в конце файла, следует выполнить SHRINKDATABASE с параметром TRUNCATEONLY.
Затем выполнить SHRINKFILE сначала с параметром NOTRUNCATE, а потом с TRUNCATEONLY.
Или SHRINKFILE выполнять не обязательно (не желательно) ?
Достаточно ли будет выполнить только SHRINKDATABASE сначала с NOTRUNCATE, а потом с TRUNCATEONLY ?
17 янв 12, 18:24    [11920335]     Ответить | Цитировать Сообщить модератору
 Re: SHRINKDATABASE и SHRINKFILE  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31962
fasfromua
Или SHRINKFILE выполнять не обязательно (не желательно) ?
Очень нежелательно. нужна очень серьёзная причина, чтобы её запускать.
17 янв 12, 18:25    [11920345]     Ответить | Цитировать Сообщить модератору
 Re: SHRINKDATABASE и SHRINKFILE  [new]
Glory
Member

Откуда:
Сообщений: 104751
fasfromua
Если я правильно понимаю, после удаления части данных из базы данных, для того, чтобы переместить распределенные страницы из конца файла на место нераспределенных страниц в начале файла, необходимо выполнить SHRINKDATABASE

С чего это _необходимо_ то ?
Откуда вы знаете, на каких страницах располагались ваши данные ?

fasfromua
Достаточно ли будет выполнить только SHRINKDATABASE сначала с NOTRUNCATE, а потом с TRUNCATEONLY ?

Вы точно прочитали про разницу между NOTRUNCATE и TRUNCATEONLY
17 янв 12, 18:41    [11920430]     Ответить | Цитировать Сообщить модератору
 Re: SHRINKDATABASE и SHRINKFILE  [new]
fasfromua
Member

Откуда:
Сообщений: 12
alexeyvg
fasfromua
Или SHRINKFILE выполнять не обязательно (не желательно) ?
Очень нежелательно. нужна очень серьёзная причина, чтобы её запускать.

Почему так много отрицательных отзывов по поводу SHRINKFILE ?
Про SHRINKDATABASE можно сказать то же самое ?
4 фев 12, 20:12    [12033395]     Ответить | Цитировать Сообщить модератору
 Re: SHRINKDATABASE и SHRINKFILE  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31962
fasfromua
alexeyvg
Очень нежелательно. нужна очень серьёзная причина, чтобы её запускать.

Почему так много отрицательных отзывов по поводу SHRINKFILE ?
1. SHRINK уменьшает файл, поэтому серверу придётся тратить ресурсы на его увеличение, причём в неподходящее время (во время транзакции) и, возможно, неподходящим способом (например, мелкими порциями).

2. SHRINK может переместить страницы в файле так, что потом возникнет сильная фрагментация данных.

fasfromua
Про SHRINKDATABASE можно сказать то же самое ?
Да

Идеально - зараннее определить требуемый размер файлов и сделать их сразу требуемого размера, не допуская в будущем изменений (или планируя редкие изменения, например, раз в год).
4 фев 12, 20:49    [12033584]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить