- •Хранение баз данных
- •Табличные области
- •Табличная область system
- •Другие табличные области
- •Оперативные и отключенные табличные области
- •Постоянные и временные табличные области
- •Табличные области только для чтения и чтения/записи
- •Дополнительные сведения о файлах данных
- •Число файлов данных для табличной области
- •Использование пространства файлов данных
- •Сращивание свободного пространства в файлах данных табличной области
- •Размеры файлов данных
- •Повреждение файлов данных
- •Оперативные и отключенные файлы данных
- •Управляющие файлы
- •Зеркально отображенные управляющие файлы
- •Сегменты, экстенты и блоки данных
- •Сегменты данных и индексные сегменты
- •Временные сегменты
- •Временные табличные области
- •Сегменты отката
- •Запись информации в сегменты отката
- •Сегмент отката system
- •Несколько сегментов отката
- •Назначение конкретных сегментов отката
- •Оперативные и отключенные сегменты отката
- •Общие и частные сегменты отката
- •Отложенные сегменты отката
- •Другие функции сегментов отката
- •Блоки данных
- •Выделение блоков данных
- •Доступность блоков данных и списки свободных блоков
- •Сцепление строк и размер блока данных
- •Параметры хранения объектов
- •Размещение табличных областей
- •Параметры для экстентов
- •Initial 500k
- •Специальные параметры хранения данных для сегментов отката
- •Initial 100k
- •Параметры для блоков данных
- •Параметры для списков свободных блоков
- •Пороги блоков
- •Элементы транзакций
- •Установки по умолчанию для хранения объектов
- •Установки по умолчанию для пользователей
- •Установки по умолчанию для табличных областей
- •Initial 100k
- •Уникальность хранения мультимедийных данных
- •Дополнительные сведения о локаторах lob
- •Разделение данных
- •Разделенные таблицы
- •Размещение строк в разделах данных
- •Использование maxvalue
- •Разделенные индексы
- •Варианты создания разделенных индексов
- •Равноразделенные объекты
- •Глобальные разделенные индексы
- •Имена таблиц с учетом разделов
- •Управление разделением
- •Соответствие индексов и таблиц
- •Контрольные вопросы.
Разделенные таблицы
Как показано на рис. $.12, в Oracle8 можно разбивать области хранения таблиц на более мелкие единицы дисковой памяти, называемые разделами (partitions).
В каждом разделе таблицы содержатся одни и те же столбцы, имеющие одни и те же типы данных и ограничения целостности. Однако каждый раздел таблицы может иметь собственные физические атрибуты. Например, каждый раздел таблицы может храниться в отдельных табличных областях, и для каждого раздела могут быть заданы собственные, отличные от других, установки хранения информации для экстентов и блоков данных.
В Oracle8 применяются таблицы, разделенные по диапазонам (range partitioned tables). Значение ключа разделов для какой-либо строки определяет, в каком разделе она хранится. Ключ разделов (partition key) таблицы - это столбец или упорядоченный набор столбцов (до 16), характеризующий физическое разделение строк этой таблицы. Чтобы предотвратить нерациональное расходование ресурсов при переносе строк из раздела в раздел, приложениям никогда не следует обновлять данные, содержащиеся в ключе разделов таблицы.
Можно задать диапазоны данных для разделов некоторой таблицы, указав верхнюю границу для каждого (не входящую в состав данного раздела). В каждом из них (исключая первый) имеется скрытое нижнее значение, которое представляет собой верхнюю границу предшествующего раздела. Таким образом, нужно создавать табличные разделы так, чтобы их диапазоны возрастали по значениям. Для примера рассмотрим оператор CREATETABLE, демонстрирующий создание большой разделенной таблицыUSA_CUSTOMERSв базе данных Oracle8. Строки таблицы помещаются в различные разделы в соответствии со штатом каждого клиента.
CREATE TABLE sales.usa_customers
(id NUMBER(5) PRIMARY KEY,
lastname VARCHAR2(50) NOT NULL,
firstname VARCHAR2(50) NOT NULL.
address VARCHAR2(100),
city VARCHAR2(50),
state CHAR(2),
zipcode VARCHAR2(15),
phone VARCHAR2(15),
fax VARCHAR2(15),
email VARCHAR2(100) )
PARTITION BY RANGE (state)
(PARTITION p1 VALUES LESS THAN ('H')
-- AL, AK, AZ, AR, CA, CO, CT, DC, DE, FL, GA
TABLESPACE data01,
PARTITION p2 VALUES LESS THAN ('MI')
-- HI, IA, ID, IL, IN, KS, KY, LA, MA, MD, ME
TABLESPACE data02,
PARTITION p3 VALUES LESS THAN ('NM')
-- MI, MN, MS, MO, MT, NC, ND, NE, NH, NJ
TABLESPACE data03,
PARTITION p4 VALUES LESS THAN ('S')
-- NM, NV, NY, OH, OK, OR, PA, PR, RI
TABLESPACE data04,
PARTITION p5 VALUES LESS THAN (MAXVALUE)
-- SC, SD, TN, TX, UT, VA, VT, WA, WI, WV, WY
TABLESPACEdata05);
Размещение строк в разделах данных
Чтобы проиллюстрировать размещение строк в таблицах, разделенных по диапазонам, посмотрим, что происходит, когда приложение вносит в таблицу запись о клиенте, живущем в штате Арканзас (AR-Arkansas).Oracleсравнивает первый символ кода штатаARсо значением, определяющим первый раздел таблицы,P1. А меньше H, поэтому новая строка помещается в раздел P1, который физически хранится в файле данных табличной областиDATA01. Аналогично, когда вводятся данные о новом клиенте из Нью-Джерси (NJ-NewJersey), запись о новом клиенте размещается в разделе P3 (NJменьше NM), который физически хранится в файле данных табличной областиDATA03 и т.д.