|
|
Programmer ASP.NET MVC C# |
Programming
|
||
| Previous | Next | |
|
Під час роботи з базами даних SQL Server, особливо на етапі розробки та тестування, файли бази даних MDF (файл даних) і LDF (файл журналу транзакцій) можуть дуже швидко збільшуватися в розмірі. Це відбувається через часті зміни структури БД, масові вставки та видалення даних, а також через особливості роботи журналу транзакцій. Для зменшення розміру цих файлів у SQL Server використовується команда DBCC SHRINKFILE. Що робить DBCC SHRINKFILEКоманда DBCC SHRINKFILE дозволяє:
Файл можна стиснути до розміру, який буде меншим за початковий розмір, заданий під час створення. У такому випадку буде встановлено нове мінімальне значення розміру файлу. Обов’язкові аргументи командиКоманда DBCC SHRINKFILE приймає такі основні аргументи:
Якщо параметр target_size не вказаний, SQL Server намагатиметься зменшити файл до його мінімального розміру, який був заданий під час створення файлу. Приклад використанняУ цьому прикладі файл журналу транзакцій буде зменшено до 1 МБ (наскільки це можливо). Як дізнатися логічне ім’я файлуЛогічне ім’я файлу не завжди співпадає з фізичною назвою файлу в файловій системі. Щоб дізнатися логічні імена файлів бази даних, виконайте запит:
Важливі зауваження та рекомендації1. Не використовуйте SHRINK регулярно на продуктивних БДЧасте використання DBCC SHRINKFILE:
👉 На бойових (production) серверах shrink варто виконувати лише у виняткових випадках. 2. Особливості роботи з LDF (журналом транзакцій)Розмір LDF-файлу напряму залежить від моделі відновлення (Recovery Model):
Якщо база даних у режимі FULL, перед shrink обов’язково потрібно зробити резервну копію журналу транзакцій: Без цього shrink може не дати очікуваного результату. 3. Краще правильне планування, ніж shrinkНайкраща практика — це:
Shrink — це інструмент для виправлення ситуації, а не для щоденного використання. |
||
В 11/14/2012 10:46:56 PM, Anonymous
Бывает перед тем как чистить нужно сделать BACKUP, без него не уменьшаем. BACKUP LOG dbMyDatabase TO DISK = 'E:\BD\Backups\dbMy.bak' DBCC SHRINKDATABASE(N'dbMy') --to shrink the database GO DBCC SHRINKFILE (dbMy , 0, TRUNCATEONLY)--to shrink data file GO DBCC SHRINKFILE (dbMy_log , 0, TRUNCATEONLY)--to shrink ldf
Можно все тоже самое сделать через гуи. Это если кто не умеет строить запросы :). правой кнопкой на базе, задачи, шринк, файлы, выбираем лог (там сразу видно на сколько процентов можно уменьшить). Иногда, если лог большой - например гигов 50, то уменьшать (шринкать) его надо 2 раза - с первого раза уменьшаеться, но не полностью. вот так вот :). WishMaker.