Почему шринк лога БД выполняется быстрее шринка файла данных?

ITSpec

MS SQL 2005 SP3. Файл данных - 90 Гб, файл лога - 230 Гб, можель восстановления - full. Почистил бд, перевел БД в simple, делаю шринк лога - проходит в течении минуты, а шринк файла с данными выполняется уже в течении часа и пока завершаться не собирается. Почему такая разница во времени выполнения?
24 ответа

ITSpec

И еще вопрос. Может ли приложение работать с БД, если та шринкуется?


ITSpec

А что хранится в логах и в каком порядке и что хранится в файле данных и как ?нужно копать в мат. часть.Кстати, при таких объемах БД модель восстановления FULL не просто так стояла.


ITSpec

Все простоЛог наверняка содержал в основном неиспользуемое пространство, вероятно было много откатов транзакций.А данные просто очень дефрагментированы (из-за удалений и тех же откатов).


ITSpec

Почему-то в логе сиквела не вижу время начала/окончания выполнения шринка. Эта операция где-то логируется? В логе вижу изменение модели восстановления, но далее ничего связанного со шринком нет.


ITSpec

Почему-то в логе сиквела не вижу время начала/окончания выполнения шринка.
Вы под логом сиквела что именно понимаете ?


ITSpec

Вы под логом сиквела что именно понимаете ?
Лог БД, файл с расширением ldf


ITSpec

Лог БД, файл с расширением ldf
Наврядли Вы там это увидите. А вообще-то как вы смотрите "Лог БД, файл с расширением"?


ITSpec

MS SQL 2005 SP3. Файл данных - 90 Гб, файл лога - 230 Гб, можель восстановления - full. Почистил бд, перевел БД в simple, делаю шринк лога - проходит в течении минуты, а шринк файла с данными выполняется уже в течении часа и пока завершаться не собирается. Почему такая разница во времени выполнения?
При шринке лога просто освобождается пустое место с конца файла. При шринке файла с данными сначала переносятся страницы с данными, а потом усекается освободившееся место.


ITSpec

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


ITSpec

Не то, чтобы я очень переживал, но вы, я надеюсь, на тестовом сервере этим занимаетесь?
На боевом. Уже все хорошо, шринк закончился. Выяснил, что возможно одновременно делать шринк и запускать приложение, работающее с БД (кстати это возможно всегда или это верно только в моем случае?). На данный момент непонятно где посмотреть логирование шринка, т.е. например время начали и окончания операции.


ITSpec

MS SQL 2005 SP3. Файл данных - 90 Гб, файл лога - 230 Гб, можель восстановления - full. Почистил бд, перевел БД в simple, делаю шринк лога - проходит в течении минуты, а шринк файла с данными выполняется уже в течении часа и пока завершаться не собирается. Почему такая разница во времени выполнения?
Операция шринк выполняет фрагментацию данных, это невозможно сделать быстро, если данных много. Чем долше она выполняется, тем больше вреда Вы нанесёте этой командой (к счастью, операция может быть прервана в любой момент ;).Поскольку журнал транзакций после перевода базы в простую модель сохранил только активную часть, уменьшение размера его файла может выполниться быстро.


ITSpec

ITSpec,Зачем? Шринк логов еще понять можно, но для чего урезали файл данных, можете сказать?Или все еще места экономим.делать шринк и запускать приложение -возможно всегда


ITSpec

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


ITSpec

На боевом. Уже все хорошо
Сомневаюсь. Скорее всего теперь все нехорошо. Поделитесь плиз, зачем вы перевели базу в симпл и почему решили её шринковать?


ITSpec

Сомневаюсь. Скорее всего теперь все нехорошо. Поделитесь плиз, зачем вы перевели базу в симпл и почему решили её шринковать?
Судя по действиям, "ITSpec" - это логин белого пушистого зверька =)


ITSpec

На боевом. Уже все хорошо, шринк закончился. Выяснил, что возможно одновременно делать шринк и запускать приложение, работающее с БД (кстати это возможно всегда или это верно только в моем случае?). На данный момент непонятно где посмотреть логирование шринка, т.е. например время начали и окончания операции.
шринк базы это команда dbcc shrinkdatabase (база), никакого логирования эта команда не делает, если нужно логироание, то оборачивайте команду джобом или же запоминайте начало выполнения и фиксируйте конец выполнения.


ITSpec

Зачем Вам это? ....хотите замести следы
Нет, для того, чтобы понять сколько времени выполнялась эта операция.
ITSpec,Зачем? Шринк логов еще понять можно, но для чего урезали файл данных, можете сказать?Или все еще места экономим.делать шринк и запускать приложение -возможно всегда
После шринка размер БД уменьшился с 90 до 48 Гб - просто было много лишних ненужных данных (связано с особенностью реализации системы, которая пользует БД).
Сомневаюсь. Скорее всего теперь все нехорошо. Поделитесь плиз, зачем вы перевели базу в симпл и почему решили её шринковать?
Почему Вы считаете, что теперь будет все нехорошо. Система уже работает подня без проблем. В симпл перевел, т.к. когда шринковал лог транзакций, то, если база была в фуле, то он не шринковался. Подумал, что для данных нужно делать то же самое - видимо вывод был неверный.
шринк базы это команда dbcc shrinkdatabase (база), никакого логирования эта команда не делает, если нужно логироание, то оборачивайте команду джобом или же запоминайте начало выполнения и фиксируйте конец выполнения.
т.е. в логе самого сиквела это событие не фиксируется?


ITSpec

Нет, для того, чтобы понять сколько времени выполнялась эта операция.
Во время работы запускайте этот сценарий: http://msmvps.com/blogs/gladchenko/archive/2009/04/16/1688040.aspx


ITSpec

Система уже работает подня без проблем
Почему Вы считаете, что теперь будет все нехорошо. Система уже работает подня без проблем. В симпл перевел, т.к. когда шринковал лог транзакций, то, если база была в фуле, то он не шринковался. Подумал, что для данных нужно делать то же самое - видимо вывод был неверный.
Много читать. Сначала тут и тут.Сразу после этих двух тутов top10 вопросов в этой ветке п.1 А потом сюда, сюда и сюда.После этого в планы обслуживания, бэкапы и модели восстановления.


ITSpec

Операция шринк выполняет фрагментацию данных, это невозможно сделать быстро, если данных много. Чем долше она выполняется, тем больше вреда Вы нанесёте этой командой (к счастью, операция может быть прервана в любой момент ;).Поскольку журнал транзакций после перевода базы в простую модель сохранил только активную часть, уменьшение размера его файла может выполниться быстро.
Как дефрагментировать данные? К каким последствиям может привести фрагментация? Снижение произ-ти? Некорректная работа БД? Что-то другое?


ITSpec

Именно производительности!А этого мало?


ITSpec

Именно производительности!А этого мало?
Как сделать дефрагментацию?


ITSpec

http://msdn.microsoft.com/ru-ru/library/ms189858.aspx
т.е. речь идет именно об индексах? я полагал, что о данных.