2009-07-20 2 views
11

Есть ли необходимость периодически уплотнять базы данных SQL CE? Будет ли автоматическая усадка достаточной? Наш средний размер базы данных составляет около 100 МБ, при этом крупные пользователи поражают 400-500 МБ (но это очень редко). Если нам нужно вручную сжимать, как мы можем сказать, когда мы должны? Есть ли способ программно определить уровень фрагментации или процент потраченного впустую пространства? Если нет, какой другой порог мы можем использовать?Как часто вы должны уплотнять базу данных SQL CE?

Предыдущая версия продукта была построена на базе базы данных MS Access (gasp), поэтому нам приходилось периодически сжимать ее, чтобы она работала.

+0

Возможно, вам повезло с этим вопросом на http://serverfault.com/ – andychase

ответ

8

Я бы предположил, что если вы можете настроить базу данных так, чтобы она автоматически сжималась и ремонтировалась по мере необходимости, это довольно чертово. Именно поэтому существует нехватка литературы о лучших методах; существует преобладающее предположение, что оно «просто работает». Поэтому любое руководство, которое вы получаете в этой области, будет неопределенным.

Вот (частично) цитата из веб-трансляции на http://www.microsoft.com/web/library/Details.aspx?id=sql-server-2008-compact-express-depoly-manage

Поддержание вашего SQL Server Express Editions довольно похож на управление любую другую базу данных многопользовательский, то есть , что есть возможность входите и имеете дело с файловыми группами, мы можем использовать с вариантами резервного копирования и восстановлением моделей, а что нет. [Но] когда мы имеем дело с компактными изданиями или SQL-службой CE, у нас нет почти столько же вариантов. Действительно, единственные варианты, которые мы имеем , - это то, как мы хотим иметь дело с усадки и ремонта.

Вот еще один из MSDN на http://msdn.microsoft.com/en-us/library/ms838028.aspx#youcantakeitwithyou_sqlserverce_topic4

Обратите внимание, что они дают хорошие детали об архитектуре базы данных, но до сих пор не дают график технического обслуживания. Их советы: сделать это, когда база данных начнет замедляться. Также обратите внимание, что этот совет относится к 2005 году, и с тех пор все улучшилось; то есть процедуры технического обслуживания теперь автоматизированы.

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

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

Упорядочить записи по первичному ключу возможно улучшит первичный ключ доступ. Это связано с page-ориентированным характером SQL Server CE (и большинства других баз данных). Скорее , чем загрузка отдельных записей из базы данных в память, SQL Server CE загружает блоки записей под названием страниц. Когда записи базы данных сгруппированы в порядке первичного ключа, , загружая страницу, содержащую одну запись , автоматически загружает эти записи с аналогичными значениями первичного ключа. Для большинства приложений, это приводит то, что называет хорошей «скоростью хита,» это означает, что, когда ваше приложение идет, чтобы получить доступ последовательных баз данных записей, существует большая вероятность того, что страница, содержащая эти записи является уже в памяти и может быть напрямую доступ. При записи более распределена случайным образом, как это часто бывает после большого количества вставок и удалений, есть низкий показатель хита требует SQL CE сервера для получить больше страниц из файла базы данных для доступа одинакового количества записей.

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

Я сочувствую вашему опыту с базами данных Access. Тем не менее, я думаю, вы обнаружите, что ваш опыт работы с SQL Server CE не имеет большого сходства.

Смежные вопросы