В чем разница между сжатием и сжатием в SQL Server CE? - PullRequest
9 голосов
/ 02 апреля 2009

У меня есть метод, который периодически запускается для оптимизации базы данных приложения SQL Server Compact Edition (3.5). Существующий код использует метод Shrink ():

        SqlCeEngine engine = new SqlCeEngine(dbConnectionString);
        engine.Shrink();

Сегодня я заметил, что есть также метод Compact (). Что предпочтительнее для периодического обслуживания?

1 Ответ

9 голосов
/ 02 апреля 2009

Из Блог группы разработчиков SQL Server :

Разница между этими двумя очень похож на внутренний и внешний Фрагментация памяти.


Из SqlCeEngine.Shrink документации,

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

Из SqlCeEngine.Compact документация,

Восстанавливает потерянное пространство в базе данных создав новый файл базы данных из существующий файл. Создавая новый база данных означает, что она восстанавливает бесплатные пространство между рядами.


Чтобы быть более ясным, Шринк утверждает, что страницы, которые полностью бесплатны или нераспределенные; где, как утверждает Компакт потраченное впустую место на странице тоже. Следовательно, Compact требует создания нового файл базы данных.

...