CLUSTER в Oracle SQL — как логически объединять таблицы

🟢 CLUSTER в Oracle SQL. Введение

CLUSTER в Oracle SQL используется для создания кластеров таблиц — особой структуры хранения, при которой несколько таблиц размещаются вместе в одних и тех же блоках данных, если у них есть общий столбец (обычно внешний ключ).

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


🔤 Написание

sql
CREATE CLUSTER имя_кластера (столбец_ключ тип)
[SIZE размер];

🔄 Где используется

  • Для оптимизации работы с таблицами, связанными по внешним ключам

  • В приложениях с большим числом JOIN-запросов по одному и тому же ключу

  • Когда важна локальность хранения данных (физическая близость строк)

  • Для систем, где важно минимизировать число дисковых операций


🧪 10 Примеров использования CLUSTER

1️⃣ Создание кластера

sql
CREATE CLUSTER emp_dept_cluster (
department_id NUMBER(4)
);

Определяет ключ кластера — department_id.


2️⃣ Создание индекса кластера

sql
CREATE INDEX emp_dept_idx ON CLUSTER emp_dept_cluster;

Создаёт индекс, необходимый для доступа к кластеру.


3️⃣ Создание таблицы в кластере

sql
CREATE TABLE departments (
department_id NUMBER(4),
department_name VARCHAR2(100)
) CLUSTER emp_dept_cluster (department_id);

4️⃣ Создание второй таблицы в том же кластере

sql
CREATE TABLE employees (
employee_id NUMBER,
first_name VARCHAR2(50),
department_id NUMBER(4)
) CLUSTER emp_dept_cluster (department_id);

Теперь обе таблицы физически хранятся рядом по department_id.


5️⃣ Заполнение данных

sql
INSERT INTO departments VALUES (10, 'IT');
INSERT INTO employees VALUES (100, 'Alice', 10);

Строки будут физически размещены рядом на диске.


6️⃣ Поиск данных с JOIN по кластеризованному ключу

sql
SELECT e.first_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;

Работает быстрее, если таблицы в одном кластере.


7️⃣ Удаление кластера

sql
DROP CLUSTER emp_dept_cluster INCLUDING TABLES;

Удаляет кластер и все связанные с ним таблицы.


8️⃣ Проверка структуры в словарях данных

sql
SELECT table_name, cluster_name
FROM user_tables
WHERE cluster_name IS NOT NULL;

Показывает таблицы, которые являются частью кластера.


9️⃣ Использование CLUSTER в реальных системах

Кластеры могут быть полезны при проектировании OLTP-систем, где множество таблиц объединяются по фиксированному ключу — например, user_id, account_id.


🔟 Визуализация идеи:

objectivec
БЕЗ CLUSTER:
Таблица A - Блок 100
Таблица B - Блок 250
С CLUSTER:
A и B — Блок 100 (вместе)

Сокращение количества чтений с диска.


🧩 CLUSTER в Oracle SQL. Заключение

CLUSTER — мощный инструмент Oracle SQL для оптимизации хранения и ускорения JOIN-запросов. Его применение оправдано, если:

  • Таблицы тесно связаны логически

  • JOIN выполняется часто и по фиксированному ключу

  • Важно минимизировать I/O

💡 Помни:

  • Таблицы в кластере создаются с опцией CLUSTER

  • Требуется явное создание индекса

  • Подходит не для всех сценариев, но даёт прирост производительности при правильном использовании


🔜 Следующая статья:

CHAR в Oracle SQL — как работать с символьными данными


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии