Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Приблизительное потребление дискового пространства строками в SQL Server

Автор вопроса: ChristianОтветов: 2

Я хотел бы понять, чем обусловлен размер базы данных SQL Server 12. В мдф 21,5 Гб. Используя отчет "Использование диска основными таблицами" в SQL Server Management Studio, я вижу, что 15,4 ГБ используются "данными" одной таблицы. Эта таблица имеет 1691 строку из 4 столбцов (int, varchar(512), varchar(512), image). Я предполагаю, что столбец изображений отвечает за большую часть потребления. Но

Select (sum(datalength(<col1>)) + ... )/1024.0/1024.0 as MB From <Table>

дает только 328,9 МБ.

В чем может быть причина такого огромного расхождения?

Дополнительная информация: Для некоторых строк столбец изображений регулярно обновляется.

Это скриншот отчета: Если верить этому, индексы или неиспользуемое пространство не должны быть причиной.

  • Интересно. datalength() ненадежен для оценки размера таблицы, но он не должен отличаться в 50 раз. Gordon Linoff 26.01.2018
  • Возможно, вы также захотите разместить это на dba.stackexchange.com. Может быть, проблема с регистрацией? Jacob H 26.01.2018
  • Возможно ли, что текущий статус является результатом нескольких операций, оставивших много неиспользованного пространства внутри страниц данных. Недавно у меня было что-то подобное, когда я применил разреженный вариант. Чтобы освободить место, вы должны использовать ALTER DATABASE {имя базы данных} REBUILD ildanny 26.01.2018

sqlsql-serverdiskspace

Ответы

Ответ 1 · GabrielVa

Возможно, вы используете много индексов для каждой таблицы, и все они складываются. Возможно, ваши настройки автоматического роста неверны.

Ответ 2 · Christian

Причиной была длительная транзакция в другой несвязанной базе данных (!) на том же экземпляре SQL Server. Уровень изоляции зафиксированного моментального снимка чтения заполнил хранилище версий. Отключение другого приложения уменьшило использование памяти до разумного уровня.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы