Oracle Database
Partycjonowanie tabeli
Szukaj…
Wprowadzenie
Uwagi
Partycjonowanie to opcja dodatkowa i dostępna tylko w wersji Enterprise.
Partycjonowanie skrótów
Spowoduje to utworzenie tabeli podzielonej na partycje według skrótu, w tym przykładzie na id sklepu.
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;
Powinieneś użyć potęgi 2 dla liczby partycji mieszających, aby uzyskać równomierny rozkład wielkości partycji.
Podział zakresu
Spowoduje to utworzenie tabeli podzielonej według zakresów, w tym przykładzie na wartości zamówienia.
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)
);
Wybierz istniejące partycje
Sprawdź istniejące partycje na schemacie
SELECT * FROM user_tab_partitions;
Partycjonowanie listy
Spowoduje to utworzenie tabeli podzielonej na partycje według list, w tym przykładzie na id sklepu.
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)
);
Upuść partycję
ALTER TABLE table_name DROP PARTITION partition_name;
Wybierz dane z partycji
Wybierz dane z partycji
SELECT * FROM orders PARTITION(partition_name);
Obetnij partycję
ALTER TABLE table_name TRUNCATE PARTITION partition_name;
Zmień nazwę partycji
ALTER TABLE table_name RENAME PARTITION p3 TO p6;
Przenieś partycję do innego obszaru tabel
ALTER TABLE table_name
MOVE PARTITION partition_name TABLESPACE tablespace_name;
Dodaj nową partycję
ALTER TABLE table_name
ADD PARTITION new_partition VALUES LESS THAN(400);
Podział partycji
Dzieli część partycji na dwie partycje z inną górną granicą.
ALTER TABLE table_name SPLIT PARTITION old_partition
AT (new_high_bound) INTO (PARTITION new_partition TABLESPACE new_tablespace,
PARTITION old_partition)
Scal partycje
Scal dwie partycje w jedną
ALTER TABLE table_name
MERGE PARTITIONS first_partition, second_partition
INTO PARTITION splitted_partition TABLESPACE new_tablespace
Wymień partycję
Wymień / przekonwertuj partycję na niepartycjonowaną tabelę i odwrotnie. Ułatwia to szybkie „przenoszenie” danych między segmentami danych (w przeciwieństwie do robienia czegoś takiego jak „wstaw ... wybierz” lub „utwórz tabelę ... jak wybierz”), ponieważ operacja to DDL (operacja wymiany partycji to dane aktualizacja słownika bez przenoszenia rzeczywistych danych), a nie DML (duże narzuty cofania / ponawiania).
Najbardziej podstawowe przykłady:
- Konwertuj niepartycjonowaną tabelę (tabela „B”) na partycję (tabeli „A”):
Tabela „A” nie zawiera danych w partycji „OLD_VALUES”, a tabela „B” zawiera dane
ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";
Wynik: dane zostały „przeniesione” z tabeli „B” (nie zawiera danych po operacji) do partycji „OLD_VALUES”
- Konwertuj partycję na niepartycjonowaną tabelę:
Tabela „A” zawiera dane z partycji „OLD_VALUES”, a tabela „B” nie zawiera danych
ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";
Wynik: dane zostały „przeniesione” z partycji „OLD_VALUES” (nie zawiera danych po operacji) do tabeli „B”
Uwaga: istnieje wiele dodatkowych opcji, funkcji i ograniczeń dla tej operacji
Więcej informacji można znaleźć pod tym linkiem ---> „ https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1107555 ” (sekcja „Wymiana partycji”)