Mdf-файл базы данных Sql server 2008 больше ожидаемого

У меня есть база данных Sql server 2008, которая содержит много изображений. Теоретически они должны занимать большую часть пространства в базе данных.

Я переместил изображения в поля Filestrem, но размер mdf практически не уменьшился. Как это возможно? Как я могу проверить, что занимает все это пространство в файле mdf? Я пытался сжать файл mdf, оставляя немного свободного места для роста, но это не принесло особых результатов. Я стараюсь держать размер достаточно низким, чтобы иметь возможность хранить файл mdf на более быстром жестком диске C.

Я также ожидал, что папка Filestream займет больше места, чем сейчас.

Размер до реализации Filestream:

mdf -> 40Gb or less
ldf -> raughly 90Gb

Текущий размер:

mdf -> 39Gb
ldf -> 119Gb
Filestream folder -> 7.8Gb

2 ответа

Решение

Я переместил изображения в поля Filestrem, но размер mdf практически не уменьшился. Как это возможно?

Потому что сжатие файлов не является чем-то волшебным. Это случается, когда вы говорите серверу sql попытаться его обойти. Кроме того, дело в том, что данные блога медленно отбрасываются - с довольно низкой скоростью. Может занять некоторое время для больших данных.

Я стараюсь держать размер достаточно низким, чтобы иметь возможность хранить файл mdf на более быстром жестком диске C.

Это заставляет меня съеживаться, пока C не SSD;)

Я также ожидал, что папка Filestream займет больше места, чем сейчас.

Зачем?

Или: отправьте отчет и узнайте, что, черт возьми, занимает место. Может быть, вы что-то упустили? Если вы ожидаете, что данных будет намного больше, чем в файловом потоке, возможно, вы не переместили бы все данные? Я бы запустил отчет, чтобы увидеть, что такое пространство - они доступны в качестве стандартного отчета в студии управления.

У меня нет опыта работы с файловым потоком, и я использую SQL 2005, но я могу щелкнуть правой кнопкой мыши по базе данных в MSSMS, перейти к отчетам> Стандартные отчеты> Использование диска и получить симпатичную круговую диаграмму пространства, используемого в mdf. Вы также можете выполнить этот запрос, чтобы выяснить, какие таблицы в БД имеют наибольшее количество строк (не обязательно занимающих больше места, но могут помочь вам - http://blog.sqlauthority.com/2009/01/13/sql-server-find-row-count-in-table-find-largest-table-in-database-t-sql/).

SELECT OBJECT_NAME(OBJECT_ID) TableName, st.row_count
FROM sys.dm_db_partition_stats st
WHERE index_id < 2
ORDER BY st.row_count DESC
GO

Наконец, и снова, я никогда не делал этого, я полагаю, что вы можете создавать несколько mdf-файлов и распределять свои данные между ними, сохраняя данные, к которым вы хотите получить быстрый доступ, на более быстром диске. http://blog.sqlauthority.com/2008/01/25/sql-server-2005-database-table-partitioning-tutorial-how-to-horizontal-partition-database-table/

Другие вопросы по тегам