Shrink ms sql database: Shrink a database — SQL Server
База данных
. Как лучше всего использовать сжатый SQL Server?
, если файл данных большой и занимает много места, мне нужно больше
пространство для вставки и обновления некоторых новых данных, сокращение, по-видимому, уменьшает
размер файла на диске, который я предполагал, что смогу использовать
свободное место для вставки новых данных.
Если ваш файл данных занимает много места, это не значит, что это место пусто .
Вы должны использовать sp_spaceused
, чтобы определить, есть ли неиспользуемое пространство в файле данных.
Если есть неиспользуемое пространство , это будет уже используется «для вставки и обновления некоторых новых данных», и если нет делать сжать
ничего не изменит: сжать
не удалит ваш data, все, что он делает, это перемещает данные в начале файла, чтобы освободить место в конце, чтобы вернуть его в OS
.
Уменьшение файла данных может быть полезно, если у вас был файл данных размером 2 ТБ, а 1 ТБ данных был удален, и вы не планируете вставлять еще один ТБ данных в ближайшие 10 лет.
Вы можете представить свой файл данных
как коробку размером 1 м x 1 м x 1 м. Если у вас есть только половина коробки, полная игрушек, даже если вы не используете термоусадку
, вы можете положить в эту коробку другие игрушки (сделайте вставкой
/ обновите
). То, что вместо делает
, собирает все игрушки в 1 угол, а затем разрезает коробку, чтобы сделать ее размером 50 см х 50 см х 50 см. Таким образом, ваша комната (ОС) теперь имеет больше свободного места, потому что ваша коробка для игрушек занимает только половину места, которое она занимала до сжатия.
…И если ваша коробка уже была полна, вы не можете добавить больше игрушек, даже если попытаетесь сделать уменьшить
.
, если журнал заполнен, сжатие журнала не должно быть проблемой, верно?
Shrinkig log
это другой процесс, внутри log file
ничего нельзя переместить, в этом смысле конечно Shrinkig
не может сильно навредить как в случае с data file
: он не требует ресурсов сервера, он не вызывает фрагментации и т. д.
Но если это удастся или нет, зависит от причины, по которой ваш «журнал заполнен».
Если ваш журнал заполнен из-за полной модели
, сжатие файла журнала ничего не изменит: журнал сохраняется, чтобы дать вам возможность иметь цепочку резервных копий журнала
(или сделать возможным зеркалирование
, или доставка журнала
и т. д.).
Если вместо этого ваша база данных модель восстановления
является простой
, и возникли проблемы с транзакцией
, которая была открыта в течение длительного периода времени, или была огромная загрузка данных
(возможно, с полным ведением журнала, например, вставить в
без tablock
), и ваш файл журнала
стал больше, чем файл данных
, и вы нашли и устранили проблему, и вам не нужен такой огромный файл журнала .
, да, вы можете уменьшить его до разумного размера, и это не вредно.
размер — Уменьшить базу данных в SQL Server
спросил
Изменено
7 лет, 6 месяцев назад
Просмотрено
3к раз
У меня есть база данных, которая почти заполнена, и у нас есть несколько вариантов решения этой проблемы:
- мы можем увеличить размер файла базы данных
- сжать базу данных
Прежде чем я выберу первый вариант, я хочу знать, как я могу проверить размер базы данных и сколько данных в ней на самом деле, чтобы я мог уменьшить базу данных, чтобы получить немного свободного места.
- sql-сервер
- размер
- сжатие
2
Итак, посмотрите, где у вас есть неиспользуемое пространство, какой файл насколько велик, используйте следующий запрос. …
Use DatabaseName ИДТИ Выберите имя AS [FileName] , размер/128,0 AS [Размер файла (МБ)] , fileproperty(name, 'SpaceUsed')/128.0 AS [Space_Used(MB)] , (размер - свойство файла(имя, 'Использованное пространство')) /128.0 AS [FreeSpace(МБ)] Из dbo.sysfiles ИДТИ
Наконец, когда вы решили сжать файл с большим количеством свободного места, вы можете использовать для этого команду DBCC сжатия файла.
USE Имя базы данных ИДТИ DBCC SHRINKFILE('FileName', 10) --<-- сократит его до 10 МБ. ИДТИ
Примечание
Если какое-либо неиспользуемое пространство было занято столбцом типа данных BLOB (текст, ntext, xml и т. д.), возможно, вы не сможете вернуть это неиспользуемое пространство, пока не удалите и не создадите таблицу заново.
1
Эту информацию можно получить несколькими способами. В SSMS вы можете щелкнуть правой кнопкой мыши базу данных, выбрать свойства и просмотреть файлы.