Sök…


Introduktion

Partitionering är en funktionalitet för att dela upp tabeller och index i mindre delar. Det används för att förbättra prestanda och för att hantera de mindre bitarna individuellt. Partitionsnyckeln är en kolumn eller en uppsättning kolumner som definierar i vilken partition varje rad ska lagras. Partitioneringsöversikt i officiell Oracle-dokumentation

Anmärkningar

Partitionering är ett extra kostnadsalternativ och endast tillgängligt för Enterprise Edition.

Hash-partitionering

Detta skapar en tabell partitionerad med hash, i detta exempel på butik-id.

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;

Du bör använda en effekt på 2 för antalet hashpartitioner, så att du får en jämn fördelning i partitionsstorlek.

Områdesdelning

Detta skapar en tabell uppdelad efter intervall, i detta exempel på ordningsvärden.

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)
); 

Välj befintliga partitioner

Kontrollera befintliga partitioner på schema

SELECT * FROM user_tab_partitions;

Lista partitionering

Detta skapar en tabell partitionerad med listor, i detta exempel på butik-id.

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)
);

Släpp partition

ALTER TABLE table_name DROP PARTITION partition_name;

Välj data från en partition

Välj data från en partition

SELECT * FROM orders PARTITION(partition_name);

Avkorta en partition

ALTER TABLE table_name TRUNCATE PARTITION partition_name;

Byt namn på en partition

ALTER TABLE table_name RENAME PARTITION p3 TO p6;

Flytta partitionen till olika tabellutrymmen

ALTER TABLE table_name 
MOVE PARTITION partition_name TABLESPACE tablespace_name;

Lägg till ny partition

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

Delad partition

Delar upp någon partition i två partitioner med en annan höggränsad.

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

Slå samman partitioner

Slå samman två partitioner till en

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

Byt ut en partition

Byt ut / konvertera en partition till en icke-partitionerad tabell och vice versa. Detta underlättar ett snabbt "flytt" av data mellan datasegmenten (i motsats till att göra något som "infoga ... välj" eller "skapa tabell ... som välj") eftersom operationen är DDL (partitionsutbytesoperationen är en data ordbokuppdatering utan att flytta faktiska data) och inte DML (stor ångra / göra omkostnader).

De flesta grundläggande exempel:

  1. Konvertera en icke-partitionerad tabell (tabell "B") till en partition (i tabell "A"):

Tabell "A" innehåller inte data i partitionen "OLD_VALUES" och tabellen "B" innehåller data

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

Resultat: data flyttas från tabellen "B" (innehåller inga data efter operationen) till partitionen "OLD_VALUES"

  1. Konvertera en partition till en icke-partitionerad tabell:

Tabell "A" innehåller data i partitionen "OLD_VALUES" och tabellen "B" innehåller inte data

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

Resultat: data flyttas från partitionen "OLD_VALUES" (innehåller inga data efter operationen) till tabellen "B"

Obs: det finns en hel del ytterligare alternativ, funktioner och begränsningar för denna operation

Mer information finns på denna länk ---> " https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1107555 " (avsnitt "Utbyta partitioner")



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow