Microsoft SQL Server. Первые шаги в секционировании (partition)

Microsoft SQL Server. Первые шаги в секционировании (partition)

Автор: Вячеслав

Чтобы создать секционированную таблицу или индекс, необходимо выполнить следующие шаги:

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

 

  1. Создание функции секционирования:

В итоге наша функция разделяет данные на периоды:

1 период:  val <=5,
2 период:  5<val <=10,
3-й: 10<val <15,
4 –од:  15 <val

  1. Далее создадим схему секционирования:

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

 

  1. Затем создаем таблицу с указанием нашей функции секционирования:

Все, таблица секционирована.

Чтобы проверить,  в какую секцию попадет значение , можно выполнить функцию

результат это номер секции, куда попадает данное значение.
Так же представления, для получения информации по секционированию:

По запросу

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

Запрос взят с sql.ru

Теперь немного поиграемся с нашей секционированной таблицей:

1)      Добавить /удалить секцию к таблице.

Пусть в выше указанном примере необходимо добавить  новый период от 20<val

Для этого необходимо сначала добавить новую файловую группу в функцию секционирования:

После этого изменяем функцию секционирования:

Т.е добавляем новую границу и сопоставляется с файловой группой f4.

Если посмотреть код создания функции и схемы  секционирования:

То мы увидим наши новый периоды.

Если выполним скрипт alter partition function с командой merge, то получим сливание периодов секционирования, на нашем примере вернемся к первоначальной схеме секционирования

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

Для этого делаем:
Удаляем левую границу:

Удаленную файловую группу, которая принадлежала левой границе , назначаем, как следующая :

Отделяем актуальные данные, у нас это значения id больше 20:

Вот и все окончательное секционирование выглядит так:

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

Вот вроде и все, по секционированию.

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

Добавить комментарий

Войти с помощью: