- •Урок 1: Типы данных
- •Типы данных Microsoft sql Server
- •Точные числа
- •Приблизительные числа
- •Двоичные данные
- •Пространственные типы данных
- •Специальные типы данных
- •Устаревшие типы данных
- •Пользовательские типы данных
- •Изменение таблиц
- •Удаление таблиц
- •Урок 3: Горизонтальное секционирование таблиц
- •Архитектура секционирования
- •Создание функции секционирования
- •Создание схемы секционирования
- •Создание секционированной таблицы или индекса
- •Секционирование индексов
- •Сценарий "Скользящее Окно"
- •Контрольные вопросы по изученному материалу
Создание схемы секционирования
Схема секционирования сопоставляет секции, полученные в результате использования функции секционирования, с определенным набором файловых групп.
При создании схемы секционирования пользователь определяет файловые группы, с которыми сопоставляются табличные секции, в соответствии с аргументами функции секционирования. Необходимо указать достаточно файловых групп для размещения соответствующего количества секций. Можно указать сопоставление всех секций с различными файловыми группами, сопоставление некоторых секций с одной группой файлов или сопоставление всех секций с одной файловой группой. Можно также указать дополнительные, «неназначенные» файловые группы в случае, если в дальнейшем предполагается добавить еще секции. В этом случае SQL Server помечает одну из файловых групп свойством NEXT USED. Это означает, что файловая группа будет содержать следующую добавленную секцию.
Для схемы секционирования может быть использована только одна функция секционирования. Однако функция секционирования может участвовать в двух и более схемах секционирования.
CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] )
partition_scheme_name
Имя схемы секционирования. Имена схемы секционирования должны быть уникальными в пределах базы данных и должны соответствовать правилам для идентификаторов.
partition_function_name
Имя функции секционирования, использующей схему секционирования. Секции, созданные функцией секционирования, сопоставляются с файловыми группами, заданными в схеме секционирования. Указанная функция секционирования partition_function_name уже должна существовать в базе данных.
ALL
Указывает, что все секции сопоставляются с файловой группой, определяемой аргументом file_group_name, или с первичной файловой группой, если указывается [PRIMARY]. Если указывается ALL, то может быть указано только одно значение аргумента file_group_name.
file_group_name | [ PRIMARY ] [ ,...n]
Указывает имена файловых групп, содержащих секции таблицы. Перечисленные файловые группы уже должны существовать в базе данных.
Если указывается [PRIMARY], секция сохраняется в первичной файловой группе. Если указывается ALL, то может быть указано только одно значение аргумента file_group_name. Секции назначаются файловым группам, начиная с секции 1, в том порядке, в котором файловые группы перечисляются в [,...n]. Одно и то же имя file_group_name может быть указано в [,...n] несколько раз. Если значение n не достаточно для количества секций, указываемого в аргументе partition_function_name, CREATE PARTITION SCHEME завершается с ошибкой.
Если аргумент partition_function_name формирует меньше секций, чем количество файловых групп, первая неназначенная файловая группа отмечается как NEXT USED и информационное сообщение выводит наименование файловой группы NEXT USED. Если указывается параметр ALL, единственный аргумент file_group_name сохраняет свое свойство NEXT USED для аргумента partition_function_name.
Пример:
В следующем примере создается функция секционирования для секционирования таблицы или индекса на четыре секции. Затем создается схема секционирования, которая задает файловые группы, каждая из которых должна содержать одну из четырех секций. В примере предполагается, что в базе данных уже существуют файловые группы.
CREATE PARTITION FUNCTION myRangePF (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS
AS PARTITION myRangePF
TO (test1fg, test2fg, test3fg, test4fg);
Секции таблицы, использующей функцию секционирования myRangePF на столбце секционирования col1, будут назначены так, как показано в следующей таблице.
Файловая группа |
test1fg |
test2fg |
test3fg |
test4fg |
Секция |
1 |
2 |
3 |
4 |
Values |
col1 <= 1 |
col1 > 1 AND col1 <= 100 |
col1 > 100 AND col1 <= 1000 |
col1 > 1000 |
