Поиск…


Вступление

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

замечания

Разделение является дополнительным вариантом и доступно только для Enterprise Edition.

Разделение хэшей

Это создает таблицу, разбитую на хэш, в этом примере на идентификаторе хранилища.

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY HASH(store_id) PARTITIONS 8;

Вы должны использовать мощность 2 для количества хэш-разделов, чтобы получить равномерное распределение в размере раздела.

Разбиение диапазона

Это создает таблицу, разбитую по диапазонам, в этом примере на значения порядка.

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY RANGE(order_value) (
    PARTITION p1 VALUES LESS THAN(10), 
    PARTITION p2 VALUES LESS THAN(40), 
    PARTITION p3 VALUES LESS THAN(100),
    PARTITION p4 VALUES LESS THAN(MAXVALUE)
); 

Выберите существующие разделы

Проверка существующих разделов на схеме

SELECT * FROM user_tab_partitions;

Перечисление списков

Это создает таблицу, разбитую по спискам, в этом примере на идентификатор магазина.

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY LIST(store_id) (
    PARTITION p1 VALUES (1,2,3), 
    PARTITION p2 VALUES(4,5,6),
    PARTITION p3 VALUES(7,8,9),
    PARTITION p4 VALUES(10,11)
);

Падение раздела

ALTER TABLE table_name DROP PARTITION partition_name;

Выбор данных из раздела

Выбор данных из раздела

SELECT * FROM orders PARTITION(partition_name);

Усечение раздела

ALTER TABLE table_name TRUNCATE PARTITION partition_name;

Переименовать раздел

ALTER TABLE table_name RENAME PARTITION p3 TO p6;

Переместить раздел в другое табличное пространство

ALTER TABLE table_name 
MOVE PARTITION partition_name TABLESPACE tablespace_name;

Добавить новый раздел

ALTER TABLE table_name 
ADD PARTITION new_partition VALUES LESS THAN(400);

Разделить раздел

Разделяет некоторый раздел на два раздела с другой высокой границей.

ALTER TABLE table_name SPLIT PARTITION old_partition 
    AT (new_high_bound) INTO (PARTITION new_partition TABLESPACE new_tablespace,
    PARTITION old_partition)

Объединить разделы

Объединить два раздела в один

ALTER TABLE table_name
  MERGE PARTITIONS first_partition, second_partition
  INTO  PARTITION  splitted_partition TABLESPACE new_tablespace

Обмен разделами

Exchange / конвертировать раздел в несегментированную таблицу и наоборот. Это облегчает быстрое «перемещение» данных между сегментами данных (в отличие от «insert ... select» или «create table ... as select»), поскольку операция DDL (операция обмена разделами является данными обновление словаря без перемещения фактических данных), а не DML (большие отладки / повторные издержки).

Большинство основных примеров:

  1. Преобразовать несегментированную таблицу (таблицу «B») в раздел (таблицы «A»):

Таблица «A» не содержит данных в разделе «OLD_VALUES», а таблица «B» содержит данные

ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";

Результат: данные «перемещаются» из таблицы «B» (не содержат данных после операции) для разделения «OLD_VALUES»

  1. Преобразовать раздел в несегментированную таблицу:

Таблица «A» содержит данные в разделе «OLD_VALUES», а таблица «B» не содержит данных

ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";

Результат: данные «перемещаются» из раздела «OLD_VALUES» (не содержит данных после операции) в таблицу «B»

Примечание. Существует немало дополнительных опций, функций и ограничений для этой операции.

Дополнительную информацию можно найти по этой ссылке ---> « https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1107555 » (раздел «Обмен разделами»)



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow