Partitioneren - Partitioneren is een manier om tabellen en indexen in delen op te splitsen ipv van 1 groot object te onderhouden. Het is met oracle 8 geïntroduceerd met ‘range partitioning’ en in oracle 8i 2 nieuwe manieren zijn geïntroduceerd: Hash en Composite partitionering.
Range PartitioningDit voorziet in een manier om een object te partitioneren gebaseerd op de range van de partitie key. De data word opgeslagen in verschillende partities gebaseerd op de range van de partitie key. Voorbeeld: create table sales ( customer_id number(6), sale_date date, amount number(10) ) partition by range(sale_date) ( partition p1 values less than ('01-APR-1999') tablespace ts1, partition p2 values less than ('01-JUL-1999') tablespace ts2, partition p3 values less than ('01-OCT-1999') tablespace ts3, partition p3 values less than (maxvalue) tablespace ts4 ); In het bovenstaande voorbeeld wil de dba de data per kwartaal opslaan. De partitie waartoe de data behoort, is bepaald op basis van de partitie key (sale_date). Deze methode maakt de data erg goed manageable met een hoge beschikbaarheid omdat individuele partities te managen zijn zonder de andere partities in de tabel te beïnvloeden. Hash PartitioningRange partitioning is alleen goed als er gedefinieerde partitie begrenzing en data aanwezig is. In onderstaand voorbeeld is de tabel op customer_id gepartitioneerd en is er geen goede manier te vinden om de data evenredig te distribueren middels range partitioning. Hash Partitioning voorziet in een eenvoudige manier om de data in even grote delen te knippen en over verschillende devices te verspreiden. voorbeeld: create table sales ( customer_id number(6), sale_date date, amount number(10) ) partition by hash ( customer_id) ( partition p1 tablespace ts1, partition p2 tablespace ts2, partition p3 tablespace ts3, partition p4 tablespace ts4 ); Dit is een goede methode om te gebruiken als het aantal partities niet veranderd en er geen gedefinieerde partitie begrenzing en data aanwezig om op te kunnen partitioneren. Voordelen zijn goede data distributie en io verdeling. Composite PartitioningHash partitioning is een combinatie van range en hash partitioning en voorziet in de superieure manageability and beschikbaarheids voordelen van range partitioning met de data distributie voordelen van hash partitioning. In het volgende voorbeeld is de tabel gesplitst in 4 partities gebaseerd op de sale_date range en nog een keer gesplitst in 4 sub partities gebaseerd op de ‘hashed’ customer_id. Op deze manier zal iedere tablespace 4 partities herbergen en zullen er in totaal 16 partities in het schema aanwezig zijn. Voorbeeld: create table sales ( customer_id number(6), sale_date date, amount number(10) ) PARTITION BY RANGE(sale_date) SUB PARTITION BY HASH(customer_id) SUB PARTITIONS 4 STORE IN(ts1,ts2,ts3,ts4) ( PARTITION p1 VALUES LESS THAN('01-APR-1999'), PARTITION p2 VALUES LESS THAN('01-JUL-1999'), PARTITION p3 VALUES LESS THAN('01-OCT-1999'), PARTITION p4 VALUES LESS THAN(MAXVALUE) ); Let Op: Tabellen met LONGS kunnen niet gepartitioneerd worden. |