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

Откуда:
Сообщений: 325
В описании сказано:
NOTRUNCATE

Сжимает данные в файлах с помощью перемещения распределенных страниц из конца файла на место нераспределенных страниц в начале файла. Аргумент target_percent является необязательным.
Свободное место в конце файла операционной системе не возвращается, и физический размер файла не изменяется. Следовательно, если указан аргумент NOTRUNCATE, сжатие файлов данных незначительно.
Аргумент NOTRUNCATE применим только к файлам данных. Файл журнала не затрагивается.

TRUNCATEONLY
Освобождает все свободное пространство в конце файла операционной системе, но не перемещает страницы внутри файла. Файл данных сокращается только до последнего выделенного экстента. Аргумент target_percent не обрабатывается, если указан аргумент TRUNCATEONLY.

Аргумент TRUNCATEONLY оказывает влияние на файл журнала. Для усечения только файла данных используйте инструкцию DBCC SHRINKFILE.


А затем:

Выполнение операции DBCC SHRINKDATABASE без указания параметра NOTRUNCATE или TRUNCATEONLY равносильно выполнению операции DBCC SHRINKDATABASE с параметром NOTRUNCATE после выполнения операции DBCC SHRINKDATABASE с параметром TRUNCATEONLY.


Разъясните пожалуйста, почему без параметров эта команда выполняется именно в таком порядке:
- операция DBCC SHRINKDATABASE с параметром TRUNCATEONLY
- операция DBCC SHRINKDATABASE с параметром NOTRUNCATE

Мне кажется, что выполнение операции DBCC SHRINKDATABASE без указания параметра было бы более эффективным, если бы логика выполнения была бы другой - наоборот:
- сначала операция DBCC SHRINKDATABASE с параметром NOTRUNCATE
- а потом операция DBCC SHRINKDATABASE с параметром TRUNCATEONLY
В этом случае параметр NOTRUNCATE позволит освободить в конце файла больше пространства, а потом TRUNCATEONLY его обрежет.

Или я ошибаюсь?
11 ноя 14, 07:51    [16825971]     Ответить | Цитировать Сообщить модератору
 Re: Логика выполнения команды SHRINKDATABASE  [new]
Glory
Member

Откуда:
Сообщений: 104760
es3000
Разъясните пожалуйста, почему без параметров эта команда выполняется именно в таком порядке:
- операция DBCC SHRINKDATABASE с параметром TRUNCATEONLY
- операция DBCC SHRINKDATABASE с параметром NOTRUNCATE

Потому что так решили разработчики ?
11 ноя 14, 09:14    [16826107]     Ответить | Цитировать Сообщить модератору
 Re: Логика выполнения команды SHRINKDATABASE  [new]
es3000
Member

Откуда:
Сообщений: 325
Glory
es3000
Разъясните пожалуйста, почему без параметров эта команда выполняется именно в таком порядке:
- операция DBCC SHRINKDATABASE с параметром TRUNCATEONLY
- операция DBCC SHRINKDATABASE с параметром NOTRUNCATE

Потому что так решили разработчики ?


в их решении было какое-то рациональное "зерно"?
11 ноя 14, 18:30    [16830507]     Ответить | Цитировать Сообщить модератору
 Re: Логика выполнения команды SHRINKDATABASE  [new]
Владислав Колосов
Member

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

а что не так? Хвост выкинули, оставшееся место резервируем под рост данных. Для insert-update хорошая стратегия.
11 ноя 14, 18:39    [16830553]     Ответить | Цитировать Сообщить модератору
 Re: Логика выполнения команды SHRINKDATABASE  [new]
es3000
Member

Откуда:
Сообщений: 325
Владислав Колосов
es3000,
а что не так? Хвост выкинули, оставшееся место резервируем под рост данных. Для insert-update хорошая стратегия.


не так то, что если бы сделали в обратном порядке, то выкинуть можно было бы больше,
то есть освободившийся "хвост" был бы больше
11 ноя 14, 19:41    [16830916]     Ответить | Цитировать Сообщить модератору
 Re: Логика выполнения команды SHRINKDATABASE  [new]
Glory
Member

Откуда:
Сообщений: 104760
es3000
не так то, что если бы сделали в обратном порядке, то выкинуть можно было бы больше,
то есть освободившийся "хвост" был бы больше

Что вам мешает выполнить нужное вам число команд с нужными вам параметрами для достижения нужных вам результатов ?
11 ноя 14, 21:13    [16831314]     Ответить | Цитировать Сообщить модератору
 Re: Логика выполнения команды SHRINKDATABASE  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
es3000
Владислав Колосов
es3000,
а что не так? Хвост выкинули, оставшееся место резервируем под рост данных. Для insert-update хорошая стратегия.


не так то, что если бы сделали в обратном порядке, то выкинуть можно было бы больше,
то есть освободившийся "хвост" был бы больше


Для этого существует ручной набор команд. В автоматическом режиме место освобождается оптимально, а не экстремально. При типовой работе с базой хвост и не должен усекаться до нуля.
12 ноя 14, 11:18    [16832971]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить