Почему мой файл .mdf намного больше, чем общее значение UsedSpaceKB всей моей таблицы? - PullRequest
0 голосов
/ 04 ноября 2019

Проблема: моя база данных "dm" является очень большой причиной некоторой таблицы, это 44 ГБ. Мне нужно установить эту базу данных на очень маленький сервер, поэтому я решил удалить эти большие таблицы (они мне не нужны для тестирования моего разработчика). После усечения таблиц размер моей базы данных очень странный (см. Мои 3 вопроса в конце, пожалуйста)

Size of originale DM database

У меня есть дубликат "dm"в" dm_light "для работы с копией. Я использую этот скрипт для определения самых больших таблиц:

SELECT t.NAME AS TableName, s.Name AS SchemaName, p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB, SUM(a.used_pages) * 8 AS UsedSpaceKB,(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM sys.tables t
INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id
WHERE t.NAME NOT LIKE 'dt%' AND t.is_ms_shipped = 0 AND i.OBJECT_ID > 255
GROUP BY t.Name, s.Name, p.Rows
ORDER BY UsedSpaceKB DESC

Tables of Dm-light before truncate

Я обрезал 3 самые большие таблицы, кроме "tbl_expedition" (янужен этот). Согласно предыдущему скриншоту, эти таблицы имеют размер 31 ГБ, поэтому размер моей базы данных должен составлять 44 - 31 = 13 ГБ

Tables of Dm-light after truncate

Первый вопрос: если я выберу«использованный пробел кб» и сделать дополнение, я нахожу 2294984 Кб так довольно много 2,2 Гб. Это не равно 13 Гб, которые я вычислил ранее. Почему это так?

Второй вопрос: если я посмотрел на свой файл dm_light.mdf, он точно такого же размера, как и исходный файл "dm.mdf": 46 ГБ! Почему так ?

Третий вопрос: если я сделаю резервную копию моей dm_light db, я обнаружу, что файл dm_light.bak имеет размер 6 Гб ... Почему это так?

Спасибо за объяснения:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...