Назад | Перейти на главную страницу

Простое секционирование таблиц в SQL Server 2005 для таблиц фактов?

Я читал статью на http://msdn.microsoft.com/en-us/library/ms345146(SQL.90).aspx в рамках подготовки к реализации некоторого разбиения.

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

Но в статье показан относительно сложный ряд шагов, необходимых для этого.

Кто-нибудь создал какие-нибудь хранимые процедуры для автоматизации этого? Это может показаться довольно распространенной и общей проблемой в хранилищах данных.

Я вроде как. Разбиение на разделы в SQL Server 2005 несколько неудобно и, вероятно, не стоит проблем, если у вас нет достаточного количества данных для реального выигрыша в производительности. Вместо того, чтобы создавать разделы на лету, вы должны просто создавать разделы до определенного периода в будущем. Они ничего не стоят, пока вы не введете в них данные.

Удаление разделов немного сложнее - вам нужно будет создать таблицу с правильной схемой и ограничением проверки для вашего ключа раздела, а затем выполнить alter table swap partition. Получить идентификатор раздела может быть немного сложно, но вы можете сделать это из словаря данных. Я также однажды сделал это, сделав «ведущую» таблицу с одной строкой для каждого раздела в той же схеме разделов и выбрав $ partition. {Partition function} из той таблицы, где ключ является подходящим значением.

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

Я думаю, что краска для секционирования для SQL Server 2005 все еще не совсем ясна. Есть несколько недостающих функций, например, вы не можете легко создавать индексы для определенной секции; единственный способ избежать построения и перестройки индексов для всей таблицы фактов - это проделать аналогичный трюк с заменой данных в рабочую таблицу и из нее. В SQL Server 2008 также есть возможность перемещать таблицы между файловыми группами, не прибегая к трюку с кластерным индексом.

Однако мне ничего не известно о загрузке, чтобы автоматизировать это. Все, что я сделал для этого id DIY, и да, это заноза в заднице.

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

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