Кластеры таблиц

Кластерами называют две или более таблиц, которые физически хранятся вместе, чтобы использовать преимущества совпадающих между таблицами столбцов. Если две таблицы имеют идентичный столбец и вам, к примеру, часто приходится соединять таблицы по нему, то становится выгодно хранить значения общих столбцов в одном и том же блоке данных. Целью такой организации является сокращение объема ввода-вывода с увеличением скорости доступа при соединении связанных таблиц. Однако кластеры понижают производительность операторов INSERT, поскольку для хранения данных нескольких таблиц требуется больше блоков.

Для создания кластеризованных таблиц сначала необходимо создать кластер. В следующем примере демонстрируется создание кластера по имени emp_dept, который будет хранить таблицы emp и dept, кластеризованные по столбцу deptno

SQL> CREATE CLUSTER emp_dept(deptno NUMBER(3))
2 TABLESPACE users;
Cluster created.
SQL>

Создать две таблицы — emp и dept — как составные части кластера можно следующим образом:

SQL> CREATE TABLE dept(
2 deptno NUMBER(3) PRIMARY KEY)
3* CLUSTER emp_dept (deptno);
Table created.
SQL>
SQL> CREATE TABLE emp(
2 empno NUMBER(5) PRIMARY KEY,
3 ename VARCHAR2(15) NOT NULL,
4 deptno NUMBER(3) REFERENCES dept)
5* CLUSTER emp_dept(deptno);
Table created.
SQL> 

Удостоверьтесь в том, что включаете в кластеры только те таблицы базы данных Oracle Database, к которым приложение часто обращается в операторах соединения.

Хеш-кластеры

При необходимости можно создать хеш-кластер и поместить в него таблицы. В этом случае строки извлекаются в соответствии с результатом некоторой хеш-функции. Для нахождения любого значения строки все, что потребуется сделать — это получить хеш значение для ключа кластера, так что единственная операция ввода-вывода выдаст данные нужной строки и обеспечит более эффективную производительность. Когда приложение использует запросы по эквивалентности, скажем, запрос, который возвращает все строки для региона 10, то хеш-кластеры являются более подходящим выбором, чем обычная таблица с индексами. Причина в том, что база данных хеширует специфицированный ключ кластера, и значение хеш-ключа непосредственно указывает на область диска,в которой база хранит строки. Ниже приведен простой пример создания хеш-кластера в базе данных Oracle Database 12c.

SQL> CREATE CLUSTER emp_dept(deptno NUMBER(3))
2 TABLESPACE users
3* HASH IS deptno HASHKEYS 200;
Cluster created.
SQL>

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

 

Вас заинтересует / Intresting for you:

Oracle Personal Edition
Oracle Personal Edition 5192 просмотров Надин Tue, 21 Nov 2017, 13:32:12
Oracle alerts: генерируемые се...
Oracle alerts: генерируемые се... 4472 просмотров Алексей Вятский Tue, 21 Nov 2017, 13:18:05
Установка Oracle 11g на Linux
Установка Oracle 11g на Linux 15027 просмотров Илья Дергунов Tue, 21 Nov 2017, 13:18:05
Демонстрационные образцы схем,...
Демонстрационные образцы схем,... 4464 просмотров Андрей Волков Wed, 28 Mar 2018, 17:46:01
Войдите чтобы комментировать

1dz аватар
1dz ответил в теме #8506 29 мая 2017 06:44

ildergun пишет: Комрадэн, кто-нибудь из Вас применял кластеры таблиц в базах данных Oracle в реальной жизни?

Мне не доводилось. Тема интересная, делитесь опытом, форумчане!)
ildergun аватар
ildergun ответил в теме #8490 12 мая 2017 08:27
Комрадэн, кто-нибудь из Вас применял кластеры таблиц в базах данных Oracle в реальной жизни?