2016-02-18 2 views
1

Наиболее распространенным вариантом этого вопроса, который я видел, является то, что люди удаляли строки и/или столбцы, но размер не уменьшался, и большинство ответов в ответ на этот вопрос состоит в том, что вы не должны пытаться сжиматься если вы можете это сделать. Из того, что я прочитал, лучший способ справиться с этим - вставить содержимое в новую таблицу, которая позволит SQL аккуратно скомпилировать данные.SQL Server - Выпущенная таблица, но неиспользуемое пространство не будет исправлено?

Я не уверен, если то, что я собираюсь сказать, это то же самое, но я удалил несколько большой, неиспользуемую таблицы из моей базы данных, которые должны были высвобожденной некоторое пространство, но кажется, что это ничего не делал. Я начал с размера 14 ГБ, и после удаления я все еще имею размер 14 ГБ.

Вот снимок того, что он выглядит как после удаления:

FileSizeMB UsedSpaceMB UnusedSpaceMB Type DBFileName 
285.06  8.94   276.13  Log  Database_DB_log 
13866.00 9160.88  4705.13  Data Database_DB 
14151.06 9169.82  4981.26    *** Total for all files *** 

Сценарий можно найти здесь: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=61762

Из этого описания, это, безусловно, выглядит как у меня есть неиспользуемое пространство, что это из таблиц, которые я только что удалил, но есть ли способ вернуть его, не делая сокращения? Мне просто очень неудобно делать сокращения из-за всех плохих вещей, которые я читал об этом, и, учитывая, что я никогда не занимался индексами в SQL, я не уверен, что смогу повторно индексировать правильно.

Любые мысли?

ответ

1

Если у вас нет установленной автоматической усадки, что я бы сомневался, вам необходимо сжать файлы.

This объясняет процесс и преимущества/недостатки.

Сокращение не является по своей сути плохим, это просто зависит от вашего прецедента. Если вы собираетесь сжимать БД, чтобы быстро вырастить его, тогда я бы сказал «зачем беспокоиться?», Но если он дает вам необходимое пространство, и вы не думаете, что он быстро вырастет, тогда вы вероятно, хорошо.

+0

У меня возникает вопрос, что я не думаю, что полностью понял из ссылки: «Операция сжатия не сохраняет состояние фрагментации индексов в базе данных и, как правило, увеличивает степень фрагментации до определенной степени. многократно сокращают базу данных ». Если бы мне пришлось сжимать базу данных, но в разделе «Сокращение действия», если флажок «Реорганизовать файлы» пустым - это все равно приведет к фрагментации? – Farellia

+0

Я считаю, что так будет. То, что вы, вероятно, захотите сделать, это реорганизация индекса после завершения операции усадки. Это онлайн-операция (лучше, чем восстановление на чем угодно, кроме Enterprise), но может быть интенсивной, поэтому может возникнуть высокая очередь и тому подобное. – Josh

+1

Прежде чем вы производите случайную усадку базы данных, вы должны прочитать эту статью и все статьи, на которые ссылаются внутри. https://www.brentozar.com/archive/2009/08/stop-shrinking-your-database-files-seriously-now/ И вот действительно хорошая об использовании автоматической усадки. http://serverfault.com/questions/20909/is-it-safe-to-have-sql-server-auto-shrink-turned-on –

Смежные вопросы