EXTENT в Oracle SQL — что такое и как управлять размером данных

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

Хотите понять, как физически хранятся данные в Oracle? Добро пожаловать в мир EXTENT — ключевого термина, обозначающего непрерывную область хранения данных на диске. Каждый объект в базе (таблица, индекс и т.д.) состоит из одного или более экстентов.

Понимание EXTENT необходимо:

  • при администрировании БД,

  • при настройке хранения и производительности,

  • для оценки занимаемого пространства.


🔤 Написание

EXTENT — это не оператор SQL, а концепция в структуре хранения данных Oracle. Тем не менее, вы можете управлять экстентами через DDL:

sql
CREATE TABLE employees (
id NUMBER
)
STORAGE (INITIAL 64K NEXT 64K);

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

  • При создании и изменении объектов таблиц и индексов

  • В параметрах STORAGE

  • В системных представлениях (например, DBA_EXTENTS, USER_EXTENTS)

  • При оптимизации хранения и перераспределении данных


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

1️⃣ Создание таблицы с указанием EXTENT размера

sql
CREATE TABLE test_table (
id NUMBER
)
STORAGE (
INITIAL 128K
NEXT 128K
MAXEXTENTS UNLIMITED
);

2️⃣ Просмотр EXTENTS у объекта

sql
SELECT segment_name, extent_id, bytes
FROM dba_extents
WHERE segment_name = 'EMPLOYEES';

3️⃣ Получение EXTENTS для своей схемы

sql
SELECT segment_name, extent_id, blocks
FROM user_extents
WHERE segment_name = 'MY_TABLE';

4️⃣ Создание индекса с управлением EXTENT

sql
CREATE INDEX emp_idx ON employees(department_id)
STORAGE (INITIAL 64K NEXT 64K);

5️⃣ Изменение таблицы — добавление EXTENT вручную

sql
ALTER TABLE big_data ALLOCATE EXTENT (SIZE 256K);

6️⃣ Удаление таблицы освобождает EXTENTS

sql
DROP TABLE temp_data PURGE;

7️⃣ Проверка фрагментации

sql
SELECT COUNT(*) AS extents_count
FROM dba_extents
WHERE segment_name = 'ORDERS';

8️⃣ Проверка сегмента и EXTENT на конкретной таблице

sql
SELECT segment_type, extent_id, block_id, blocks
FROM dba_extents
WHERE segment_name = 'INVOICE_LOG';

9️⃣ LIMIT на количество EXTENTS

sql
CREATE TABLE logs (
id NUMBER
)
STORAGE (MAXEXTENTS 10);

🔟 Использование UNIFORM SIZE EXTENT в таблице пространства

sql
CREATE TABLESPACE my_ts
DATAFILE 'my_ts01.dbf' SIZE 100M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

🧩 Заключение

Хотя EXTENT и не используется напрямую в SQL-запросах, он является базовой единицей хранения данных в Oracle. Понимание экстентов помогает администраторам и разработчикам грамотно управлять пространством, производительностью и структурой хранения.

💡 Запомни:

  • EXTENT = непрерывный блок хранения

  • Объекты могут использовать множество экстентов

  • Управление через параметры STORAGE

  • Смотри данные через DBA_EXTENTS, USER_EXTENTS


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

EXPLAIN PLAN в Oracle SQL — как анализировать и оптимизировать выполнение запросов


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