Zoeken…


Invoering

Partitioneren is een functionaliteit om tabellen en indexen in kleinere stukken te splitsen. Het wordt gebruikt om de prestaties te verbeteren en de kleinere stukken afzonderlijk te beheren. De partitiesleutel is een kolom of een set kolommen die definieert in welke partitie elke rij wordt opgeslagen. Partitionering Overzicht in officiële Oracle-documentatie

Opmerkingen

Partitioneren is een extra kostenoptie en alleen beschikbaar voor de Enterprise-editie.

Hash partitionering

Hiermee maakt u een tabel gepartitioneerd door hash, in dit voorbeeld op winkel-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;

U moet een macht van 2 gebruiken voor het aantal hash-partities, zodat u een gelijkmatige verdeling in partitiegrootte krijgt.

Bereikindeling

Hiermee maakt u een tabel gepartitioneerd door bereiken, in dit voorbeeld op bestelwaarden.

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

Selecteer bestaande partities

Controleer bestaande partities op schema

SELECT * FROM user_tab_partitions;

Lijstindeling

Hiermee maakt u een tabel gepartitioneerd door lijsten, in dit voorbeeld op winkel-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)
);

Drop partitie

ALTER TABLE table_name DROP PARTITION partition_name;

Selecteer gegevens van een partitie

Selecteer gegevens van een partitie

SELECT * FROM orders PARTITION(partition_name);

Een partitie afkappen

ALTER TABLE table_name TRUNCATE PARTITION partition_name;

Hernoem een partitie

ALTER TABLE table_name RENAME PARTITION p3 TO p6;

Verplaats partitie naar andere tabelruimte

ALTER TABLE table_name 
MOVE PARTITION partition_name TABLESPACE tablespace_name;

Nieuwe partitie toevoegen

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

Partitie splitsen

Splitst een partitie in twee partities met een andere high-bound.

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

Partities samenvoegen

Voeg twee partities samen in één

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

Wissel een partitie uit

Wissel / converteer een partitie naar een niet-gepartitioneerde tabel en vice versa. Dit vergemakkelijkt een snelle "verplaatsing" van gegevens tussen de gegevenssegmenten (in tegenstelling tot iets als "invoegen ... selecteren" of "tabel maken ... als selecteren") aangezien de bewerking DDL is (de partitie-uitwisselingsbewerking is een gegevens woordenboekupdate zonder de feitelijke gegevens te verplaatsen) en niet DML (grote overhead ongedaan maken / opnieuw uitvoeren).

Meest elementaire voorbeelden:

  1. Converteer een niet-gepartitioneerde tabel (tabel "B") naar een partitie (van tabel "A"):

Tabel "A" bevat geen gegevens in partitie "OLD_VALUES" en tabel "B" bevat gegevens

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

Resultaat: gegevens worden "verplaatst" van tabel "B" (bevat geen gegevens na bewerking) naar partitie "OLD_VALUES"

  1. Converteer een partitie naar een niet-gepartitioneerde tabel:

Tabel "A" bevat gegevens in partitie "OLD_VALUES" en tabel "B" bevat geen gegevens

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

Resultaat: gegevens worden "verplaatst" van partitie "OLD_VALUES" (bevat geen gegevens na bewerking) naar tabel "B"

Opmerking: er zijn nogal wat extra opties, functies en beperkingen voor deze bewerking

Verdere info is te vinden op deze link ---> " https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1107555 " (sectie "Partities uitwisselen")



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow