- •Урок 1: Типы данных
- •Типы данных Microsoft sql Server
- •Точные числа
- •Приблизительные числа
- •Двоичные данные
- •Пространственные типы данных
- •Специальные типы данных
- •Устаревшие типы данных
- •Пользовательские типы данных
- •Изменение таблиц
- •Удаление таблиц
- •Урок 3: Горизонтальное секционирование таблиц
- •Архитектура секционирования
- •Создание функции секционирования
- •Создание схемы секционирования
- •Создание секционированной таблицы или индекса
- •Секционирование индексов
- •Сценарий "Скользящее Окно"
- •Контрольные вопросы по изученному материалу
Создание функции секционирования
Функция секционирования указывает, как секционируется таблица. Посредством этой функции домен преобразуется в набор секций. Чтобы создать функцию секционирования, необходимо указать число секций, столбец секционирования и диапазон значений столбца секционирования для каждой секции.
CREATE PARTITION FUNCTION partition_function_name ( input_parameter_type )
AS RANGE [ LEFT | RIGHT ]
FOR VALUES ( [ boundary_value [ ,...n ] ] )
partition_function_name
Имя функции секционирования. Имена функций секционирования должны быть уникальными внутри базы данных и соответствовать правилам для идентификаторов.
input_parameter_type
Тип данных столбца, используемого для секционирования. В качестве столбцов секционирования могут использоваться данные любого типа, кроме text, ntext, image, xml, timestamp, varchar(max), nvarchar(max), varbinary(max), типов данных-псевдонимов.
boundary_value
Задает граничные значения для каждой секции секционированной таблицы, в которой используется аргумент partition_function_name. Если параметр boundary_value не задан, функция секционирования сопоставляет всю таблицу или индекс одной секции, используя аргумент partition_function_name. Для таблицы может использоваться только один столбец секционирования.
Аргумент boundary_value является постоянным выражением, которое может обращаться к переменным. К ним относятся переменные типов данных, определяемых пользователем, а также стандартные и пользовательские функции. Указанный аргумент не может ссылаться на выражения Transact-SQL. Тип данных аргумента boundary_value должен либо соответствовать типу данных аргумента input_parameter_type, либо неявно в него преобразовываться; кроме того, данные параметра не могут быть усечены во время неявного преобразования типов данных, если размер и масштаб значения не соответствует типу данных аргумента input_parameter_type.
...n
Задает до 999 значений, указанных в аргументе boundary_value. Количество созданных секций равно n + 1. Значения могут отображаться не по порядку. Если значения выведены не по порядку, то компонент Database Engine проводит их сортировку, создает функцию и выдает предупреждение о том, что значения выданы не по порядку. В случае наличия в параметре n повторяющихся значений компонент Database Engine выдает ошибку.
LEFT | RIGHT
Указывает, к какой области интервала значений принадлежит аргумент boundary_value [ ,...n ] (к левой или правой) для случая, когда значения интервалов были отсортированы компонентом Database Engine по возрастанию слева направо. Если значение аргумента не указано, то по умолчанию принимается LEFT (левый). Все строки, которым соответствуют значения NULL столбца секционирования, располагаются в самой левой секции, кроме случая, когда задано пустое граничное значение и параметр RIGHT. В данном случае самая левая секция является пустой, и в нее помещаются значения NULL.
Следующая функция секционирования разбивает таблицу или индекс на четыре секции.
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
В следующей таблице показано, как будет разбита таблица, использующая эту функцию секционирования для столбца секционирования col1.
Секция |
1 |
2 |
3 |
4 |
Значения |
col1 <= 1 |
col1 > 1 AND col1 <= 100 |
col1 > 100 AND col1 <=1000 |
col1 > 1000 |
Все типы данных, допустимые для использования в качестве индексных столбцов, могут использоваться как столбцы секционирования, за исключением timestamp. Не могут быть указаны типы данных ntext, text, image, xml, varchar(max), nvarchar(max) и varbinary(max). Кроме того, нельзя указывать столбцы с данными пользовательского типа.
