Секционирование

 

Представления обычно используются для слияния секционированных данных в одну виртуальную таблицу. Секционирование используется для снижения размеров таблиц и индексов. Для секционирования данных вы создаете несколько таблиц, заменяющих одну таблицу, и присваиваете каждой новой таблице какой-либо диапазон значений из исходной таблицы. Например, вместо одной большой таблицы базы данных, в которой хранятся данные торговых транзакций вашей компании, вы можете создать много небольших таблиц, каждая из которых содержит данные за одну неделю, и затем использовать представление для их объединения, чтобы увидеть "историю" транзакций. Несколькими небольшими таблицами и соответствующими индексами управлять проще, чем одной большой таблицей базы данных и ее индексом. Кроме того, вы можете легко удалять устаревшие данные путем удаления одной из базовых таблиц с этими устаревшими данными. Рассмотрим эту тему более подробно.

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

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

Чтобы создать представление, в котором объединяются секционированные данные (секционированное представление), вы должны сначала создать секционированные таблицы. Эти таблицы будут, скорее всего, содержать данные по продажам. В каждой таблице будут храниться данные за определенный период – обычно за неделю или месяц. Создав эти таблицы, вы можете использовать оператор UNION ALL, чтобы создать представление, содержащее все данные. Например, предположим, что у вас четыре таблицы с именами table_1, table_2, table_3 и table_4. Следующий оператор создает одну большую виртуальную таблицу, содержащую все данные из этих таблиц:

 

Рисунок 7.8 — Использование представлений для слияния секционированных данных

 

CREATE VIEW partview

AS

SELECT * FROM table_1

UNION ALL

SELECT * FROM table_2

UNION ALL

SELECT * FROM table_3

UNION ALL

SELECT * FROM table_4

 

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