Неиспользуемое пространство, выделенное для таблицы в SQL-сервере - PullRequest
0 голосов
/ 22 января 2019

В моей базе данных есть таблица, в которой неиспользуемое пространство составляет около 55 ГБ. Как уменьшить это неиспользуемое пространство?

Шаги, которые я пробовал:

  1. Я перестроил индексы, это мне очень помогло, сократило неиспользуемое пространство со 110 ГБ до 55 ГБ.
  2. Запустив DBCC SHOWCONTIG, я обнаружил, что средняя плотность страниц в моей таблице составляет 99% (что в некотором смысле хорошо, но это не помогло мне уменьшить неиспользуемое пространство)
  3. Я изменил коэффициент заполнения и заново перестроил индекс (на этот раз перестроение индекса после изменения коэффициента заполнения до 100 не отражало какого-либо желаемого результата)
  4. Я пытался DBCC CLEANTABLE (DBNAME, "Tablename"), я не смог уменьшить неиспользуемое пространство
  5. Я не пробовал сокращать БД, я хочу уменьшить неиспользуемое пространство без сжатия БД.

Токовый выход:

CurrentOutput

Требуемый вывод: я хочу уменьшить общее пространство, чтобы уменьшить неиспользуемое пространство.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Решение:

ALTER INDEX ALL ON MyTable REBUILD WITH (FILLFACTOR = 100);
0 голосов
/ 22 января 2019

Создайте новую таблицу и затем экспортируйте данные в эту новую таблицу.

SELECT * INTO newtable FROM table -- or copy wizard (by SSMS)

А затем удалите старую таблицу, но убедитесь, что все данные были успешно переданы.

...