Szukaj…


Wprowadzenie

Partycjonowanie to funkcja dzielenia tabel i indeksów na mniejsze części. Służy do poprawy wydajności i indywidualnego zarządzania mniejszymi elementami. Klucz partycji to kolumna lub zestaw kolumn, który określa, w której partycji będzie przechowywany każdy wiersz. Przegląd partycjonowania w oficjalnej dokumentacji Oracle

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:

  1. 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”

  1. 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”)



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow