Основы проектирования реляционных баз данных



Повышение производительности запросов: Кластеры - часть 4


CREATE CLUSTER emp_dept_c (DEPNO integer) SIZE 512, -- TABLESPACE ѕ -- STORAGE ѕ INDEX; CREATE TABLE DEPARTAMENT ( DEPNO integer NOT NULL, DNAME char(20), LOC char(20), MANAGER char(20), PHONE char(15), CLUSTER emp_dept_c (DEPNO) );

CREATE TABLE EMPLOYEE ( EMPNO integer NOT NULL, ENAME char(25), LNAME char(10), DEPNO int NOT NULL,, SSECNO char(10), JOB char(25), AGE date, HIREDATE date NOT NULL WITH DEFAULT, SAL dec(9,2), COMM dec(9,2), FINE dec(9,2), PRIMARY KEY (EMPNO), CLUSTER emp_dept_c (DEPNO) );

CREATE INDEX emp_dept_c_id ON CLUSTER emp_dept_c;

Назначение и смысл закомментированных предложений команды CREATE мы будем обсуждать в следующей главе в отдельном разделе. Они приведены здесь для полноты изложения. Параметр SIZE определяет размер кластера и, фактически, максимальное число кластерных ключей, которые могут сохраняться на одной физической странице данных. Ключевое слово INDEX означает, что создаваемый кластер является индексным.

Предложение LUSTER emp_dept_c (DEPNO) указывает СУБД, что таблица должна быть добавлена в кластер. Обратите внимание, что в таблице DEPARTAMENT снято ограничение первичного ключа на колонку DEPNO. Это связано с тем, что Oracle автоматически создает индекс на первичный ключ, а этот индекс в данном случае не нужен. Последнее предложение создает кластерный индекс для кластерного ключа кластера.

В одном из предыдущих разделов мы уже обсуждали вопрос использования таблиц хэширования, которые на самом деле представляют один из способов реализации кластера. Там же был приведен пример создания хэш-кластера на диалекте SQL СУБД SQLBase. Рассмотрим теперь подробно, как работать с хэш-кластером СУБД Oracle.

Напомним, что хэширование является способом хранения таблиц данных для увеличения производительности выборки. Физическим механизмом реализации хэширования в СУБД Oracle является хэш-кластер. Данные выбираются из хэш-кластера в соответствии с функцией хэширования, которая используется для генерации распределения значений ключа таблицы в числовые значения, определяющие физические страницы базы данных.


Содержание  Назад  Вперед