Горизонтальное разделение таблицы фактов в SQL Server 2005 - Создание секционированной таблицы

ОГЛАВЛЕНИЕ


Создание секционированной таблицы

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

CREATE TABLE SALESFact
  (SalesFact_KEY bigint identity
  (1, 1) primary not clustered NOT
  NULL,
  ... all the other columns in the
  table, ending up with the
  partitioning column... ,
  Date_of_Event datetime
  NOT NULL)
  ON MyPartitionScheme (Date_of_Event)

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

Можно объединять данные из многих секций в одну. Тем не менее, за один раз можно объединять только две смежные секции. И если попробовать объединить таблицу, которая имеет множество секций, нужно повторить этот шаг много раз. Для того чтобы слить две секции, выполните команду

ALTER PARTITION FUNCTION
  MyPartitionFunction()
  MERGE RANGE (‘1/01/2003')

Эта команда будет объединять секции следующим образом: секция 1 (P1) вольется в P2. Это означает, что P2 будет содержать все строки со значением Date_of_Event до 1/01/05. Внутри (то есть в системной таблице sys.partitions) секции будут перенумерованы, начиная с единицы (не с нуля). Секции P1 и P2 станут P1, секция P3 станет P2 и P4 станет P3. Я рекомендую ознакомиться с DDL, прежде чем объединять секции, потому что потенциально можно остановить все операции на время выполнения задания, если не быть осторожным при выполнении объединений. Эрик Хансон, руководитель проекта по обработке запросов в SQL Server Relational Engine Team в Microsoft, рекомендует выполнять разбиение и объединение только на пустых секциях, даже если для этого придется временно освободить секции.

Как просто управлять громадными таблицами

SQL Server 2005 способен поддерживать горизонтальное разделение таблицы без пересечений на секции и размещать каждую секцию в особый раздел, что облегчает управление большими таблицами данных. Поскольку в SQL Server 2005 Enterprise и в SQL Server 2005 Developer Editions поддерживается создание секций и правильно написанные запросы будут обращаться только к строкам в пределах нужной им секции, выполнение будет происходить намного быстрее, чем если бы запросы перебирали содержание всей таблицы.