Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции SQL Server.docx
Скачиваний:
49
Добавлен:
24.09.2019
Размер:
4.09 Mб
Скачать

Функции секционирования (Partition Functions)

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

Например, функция секционирования с ключом типа datetime и граничными значениями ‘01/01/2003’, ‘01/01/2004’, ‘01/01/2005’ определит 4 секции по периодам: до 01.01.2003, 01.01.2003-31.12.2003, 01.01.2004-31.12.2004, после 01.01.2005.

Функции секционирования можно сконфигурировать как левые или правые (LEFT, RIGHT). В функции LEFT граничное значение входит в левую секцию. В функции RIGHT граничное значение входит в правую секцию.

Функцию секционирования можно создать с помощью оператора CREATE PARTITION FUNCTION языка Transact-SQL. Пример:

CREATE PARTITION FUNCTION pf_orderDate (datetime)

AS RANGE RIGHT

FOR VALUES (‘01/01/2003’, ‘01/01/2004’, ‘01/01/2005’)

Схема секционирования (Partition Scheme)

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

Когда создается схема секционирования, можно (но необязательно) определить файловую группу для секции, которая будет добавлена в функцию секционирования. Эту файловую группу принято называть next.

Схему секционирования можно создать с помощью оператора CREATE PERTITION SCHEME языка Transact-SQL:

CREATE PARTITION SCHEME ps_OrderDate

AS PARTITION pf_OrderDate

TO (fg1,fg2,fg3,fg4,fg5)

Если вы хотите поместить все секции в одну файловую группу, то используйте ключевое слово ALL, например:

CREATE PARTITION SCHEME ps_ordderDate

AS PARTITION pf_OrderDate

ALL TO ([PRIMARY])

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

Операции над секционированными таблицами

Кроме преимуществ, рассмотренных выше, секционированные таблицы могут обеспечить очень мощные возможности. Можно выполнить три операции над секциями:

  • Переключение (SWITCH)

  • Слияние (MERGE)

  • Разделение (SPLIT)

Можно обменять заполненную таблицу или секцию с пустой таблицей или секцией при использовании фразы SWITCH оператора ALTER TABLE. Эта техника обычно используется для архивирования данных секционированной таблицы или для массовой загрузки (bulk insert) новых данных из некоторой таблицы.

Следующий код показывает, как переключить секцию:

ALTER TABLE dbo.PartitionedTr

SWITCH PARTITION 1

TO dbo.ArchivedTr

Можно слить две секции в одну, использую оператор ALTER PARTITION FUNCTION.

Когда выполняется операция слияния, удаляется секция, в которую входит граничное значение, указанное в операторе ALTER PARTITION FUNCTION, а данные записываются в секцию, смежную с удаленной. Пример:

ALTER PARTITION FUNCTION pf_OrderDate()

MERGE RANGE (‘01/01/2003’)

Подобно слиянию, операция разделения выполняется при помощи оператора ALTER PARTITION FUNCTION. При этом создается новая секция и данные соответствующим образом разделяются по двум секциям. Новая секция создается в файловой группе next. Если такой группы нет, то возникает ошибка.

Пример:

ALTER PARTITION FUNCTION pf_OrderDate()

SPLIT RANGE (‘01/01/2006’)