3.1.4 Particiones.
3.1.4 Particiones.
3.1.4 Particiones.
Las particiones les permiten descomponer tablas muy grandes y los ndices en partes ms
pequeas y manejables llamadas particiones. Cada particin es un objeto independiente con
su propio nombre y, opcionalmente, sus propias caractersticas de almacenamiento.
Para una analoga que ilustra que es una particin, supongamos que un gerente de recursos
humanos tiene una caja grande que contiene carpetas de los empleados. Cada carpeta
incluye la fecha de contratacin del empleado. Las consultas se hacen a menudo para los
empleados contratados en un mes en particular. Un enfoque para satisfacer tales solicitudes
es crear un ndice en la fecha de contratacin del empleado que especifica las ubicaciones
de las carpetas dispersas por toda la caja. Por el contrario, una estrategia de particin utiliza
muchas cajas ms pequeas, y cada caja contiene carpetas de los empleados contratados
en un mes determinado.
El uso de cajas ms pequeas tiene varias ventajas. Cuando se le pregunta para recuperar
las carpetas de los empleados contratados en junio, el gerente de recursos humanos solo
tiene que recuperar la caja de junio. Por otra parte, si esta pequea caja est daada
temporalmente, las otras cajas pequeas permanecen disponibles. Oficinas mviles tambin
se hace ms fcil, porque en lugar de mover una sola caja pesada, el administrador puede
mover varias cajas pequeas.
Desde la perspectiva de una aplicacin, slo existe un objeto de esquema. DML no necesitan
modificaciones para acceder a las tablas con particiones. El particionamiento es til para
muchos tipos diferentes de aplicaciones de bases de datos, especialmente los que manejan
grandes volmenes de datos. Los beneficios incluyen:
Aumento de la disponibilidad.
La falta de disponibilidad de una particin no implica la inexistencia del objeto. El optimizador
de consultas elimina automticamente las particiones sin referencia del plan de consulta para
las consultas no se ven afectadas cuando las particiones no estn disponibles.
Administracin simplificada de los objetos de esquema.
Un objeto particionado tiene piezas que se pueden administrar ya sea colectiva o
individualmente. Las instrucciones DDL pueden manipular particiones en lugar de tablas
enteras o ndices. Por lo tanto, se puede dividir las tareas de uso intensivo de recursos, tales
como la reconstruccin de un ndice o tabla. Por ejemplo, puede mover una particin de tabla
a la vez. Si se produce un problema, slo el movimiento particin debe ser hecho de nuevo, y
Caractersticas de la particin.
Cada particin de una tabla o ndice debe tener los mismos atributos lgicos, tales como
nombres de columnas, tipos de datos y restricciones. Por ejemplo, todas las particiones de
una tabla comparten la misma columna y definiciones de restricciones, y todas las particiones
de un ndice comparten las mismas columnas indizadas. Sin embargo, cada particin puede
tener atributos fsicos separados, tales como el espacio de tabla a la que pertenece.
Particin clave.
La clave de particin es un conjunto de una o ms columnas que determina la particin en la
cual cada fila de una tabla con particiones debe ir. Cada fila est inequvocamente asignada
a una sola particin.
En la tabla de ventas, se puede especificar la columna time_id como la clave de una particin
de rango. La base de datos asigna filas a las particiones en funcin de si la fecha de esta
columna cae en un rango especificado. Oracle Database dirige automticamente las
operaciones de insertar, actualizar y eliminar en la particin correspondiente, usando la
particin clave.
PROD_ID
CUST_ID TIME_ID
CHANNEL_ID
PROMO_ID QUANTITY_SOLD AMOUNT_SOLD
---------- ---------- --------- ---------- ---------- ------------- ----------116
11393 05-JUN-99
2
999
1
12.18
40
100530 30-NOV-98
9
33
1
44.99
118
133 06-JUN-01
2
999
1
17.12
133
9450 01-DEC-00
2
999
1
31.28
36
4523 27-JAN-99
3
999
1
53.89
125
9417 04-FEB-98
3
999
1
16.86
30
170 23-FEB-01
2
999
1
8.8
24
11899 26-JUN-99
4
999
1
43.04
35
2606 17-FEB-00
3
999
1
54.94
45
9491 28-AUG-98
4
350
1
47.45
Cree time_range_sales como una tabla con particiones utilizando las sentencia del ejemplo
4-2. La columna time_id es la particin clave.
Ejemplo 4-2 particionadas por rangos Tabla
THAN
THAN
THAN
THAN
(TO_DATE('01-JAN-1999','DD-MON-YYYY')),
(TO_DATE('01-JAN-2000','DD-MON-YYYY')),
(TO_DATE('01-JAN-2001','DD-MON-YYYY')),
(MAXVALUE)
Despus, cargue time_range_sales con las filas del ejemplo 4-1. La figura 4-1 muestra la
distribucin de fila en las cuatro particiones. La base de datos elige la particin para cada fila
en funcin del valor TIME_ID de acuerdo con las reglas especificadas en la clusula
PARTITION BY RANGE.
Figura 4-1 Particiones Rango
El Valor de la clave de la particin del rango determina el alto valor de las particiones del rango, que se
llama el punto de transicin. En la figura 4-1, la particin del SALES_1998 contiene filas que reparten
los valores de clave time_id. La base de datos crea particiones de intervalo para datos ms all de ese
punto de transicin. Las Particiones de intervalo extienden el rango a repartir instruyendo a la base de
datos para crear particiones del rango especificado o intervalo automticamente cuando se insertan
datos en la tabla excede todas las particiones de la gama. En la figura 4-1, la particin del SALES_2001
contiene filas con repartir valores clave time_id mayores o iguales a 01 de enero de 2001.
Lista de Particiones.
En la lista de particiones, la base de datos utiliza una lista de valores discretos como la clave
de particin para cada particin. Puede utilizar la lista de particiones para controlar cmo
cada filas se asignan a particiones especficas.
Mediante el uso de las listas, se pueden agrupar y organizar conjuntos de datos cuando la
clave utilizada para identificar que no est muy bien ordenado relacionados.
Suponga que crea list_sales como una lista de particiones tabla con la sentencia en el
ejemplo 4-3. La columna channel_id es la clave de particin.
Despus, se carga la tabla con las filas del ejemplo 4-1. La figura 4-2 muestra la distribucin
de fila en las dos particiones. La base de datos elige la particin para cada fila en funcin del
valor channel_id acuerdo con las reglas especificadas en la clusula PARTITION BY LIST.
Las filas con un valor channel_id de 2 o 4 se almacenan en las particiones
EVEN_CHANNELS, mientras que las filas con un valor channel_id de 3 o 9 se almacenan en
la particin ODD_CHANNELS.
Particionado Hash
En la particin hash, los mapas base de datos las filas a las particiones basado en un
algoritmo de hash que la base de datos se aplica a la tecla particin especificada por el
usuario. El destino de una fila se determina por la funcin hash interna aplicada a la fila por la
base de datos. El algoritmo de hash est diseado para distribuye uniformemente filas a
travs de dispositivos de modo que cada particin contiene aproximadamente el mismo
nmero de filas.
Particin Hash es til para dividir tablas grandes para aumentar la manejabilidad. En lugar de
una mesa grande para manejar, tiene varias piezas ms pequeas. La prdida de una nica
particin de hash no afecta a las particiones restantes y se puede recuperar de forma
independiente. Particin hash tambin es til en sistemas OLTP con alta contencin
actualizacin. Por ejemplo, un segmento est dividido en varias piezas, cada uno de los
cuales se actualiza, en lugar de un nico segmento que experimenta contencin.
Suponga que crea la tabla hash_sales particiones utilizando la sentencia en el ejemplo 4-4.
La columna prod_id es la clave de particin.
, channel_id
CHAR(1)
, promo_id
NUMBER(6)
, quantity_sold NUMBER(3)
, amount_sold
NUMBER(10,2)
)
PARTITION BY HASH (prod_id)
PARTITIONS 2;
Despus, se carga la tabla con las filas del ejemplo 4-1. La Figura 4-3 muestra una posible
distribucin de fila de las dos particiones. Tenga en cuenta que los nombres de estas
particiones son generados por el sistema.
Al insertar filas, la base de datos intenta distribuir aleatoriamente y de manera uniforme a
travs de particiones. No se puede especificar la particin en la que se coloca una fila. La
base de datos se aplica la funcin hash, cuyo resultado determina cul particin contiene la
fila. Si cambia el nmero de particiones de base de datos y luego los redistribuye los datos a
travs de todas las particiones
Una tabla con particiones se compone de una o ms particiones, que son administrados de
forma individual y puede operar independientemente de las otras particiones. Una tabla est
bien particionado o no particionado. Incluso si una tabla con particiones consiste en slo una
particin, esta tabla es diferente de una tabla sin particiones, que no puede tener particiones
agregan a l. "Caractersticas de particin" da ejemplos de tablas con particiones.
Una tabla con particiones se compone de uno o ms segmentos de tabla de particiones. Si
crea una tabla con particiones llamado hash_products, ningn segmento de la tabla se
asigna para esta tabla. En su lugar, la base de datos almacena los datos de cada particin de
tabla en su propio segmento de particin. Cada segmento de particin tabla contiene una
porcin de los datos de la tabla.
Algunas o todas las particiones de una tabla de montn organizado se puede almacenar en
un formato comprimido. Compresin ahorra espacio y puede acelerar la ejecucin de la
consulta. Por lo tanto, la compresin puede ser til en entornos tales como los almacenes de
datos, en donde la cantidad de operaciones de insercin y actualizacin es pequea, y en
entornos OLTP.
Los atributos de compresin de la tabla pueden ser declaradas para un espacio de tabla, la
tabla o la tabla de particiones. Si se declara en el nivel de espacio de tabla, a continuacin,
Un ndice particionado es un ndice que, al igual que una tabla con particiones, se ha
descompuesto en partes ms pequeas y manejables. ndices globales se dividen de forma
independiente de la tabla en la que se crearon, mientras que los ndices locales se vinculan
automticamente al mtodo de particionamiento para una tabla. Al igual que las tablas
particionadas, los ndices particionados mejorar administracin, la disponibilidad, el
rendimiento y la escalabilidad.
El siguiente grfico de ndice muestra las opciones de particionamiento.
En un ndice de particiones local, el ndice se divide en las mismas columnas, con el mismo
nmero de particiones y los mismos lmites de particin como su tabla. Cada particin de
ndice est asociada con exactamente una particin de la tabla subyacente, de modo que
todas las claves en una particin de ndice slo se refieren a las filas almacenadas en una
En la Figura 4-4, la tabla hash_products tiene dos particiones, por lo hash_sales_idx tiene
dos particiones. Cada particin de ndice est asociado con una particin de tabla diferente.
Particin ndice SYS_P38 ndices de filas en la tabla de particiones SYS_P33, mientras
particin de ndice SYS_P39 ndices de filas en la tabla de particiones SYS_P34.
Figura 4-4 particiones de ndice local.
Ejemplo 4-2, la tabla se divide por el rango de TIME_ID. Un ndice de prefijo local en este cuadro
habra TIME_ID como la primera columna de la lista.
ndices nonprefixed locales
En este caso, las claves de particin no estn en la vanguardia de la lista de la columna indexada y no
tienen por qu estar en la lista en absoluto. En el Ejemplo 4-5, el ndice es local nonprefixed porque la
clave product_id particin no est en el borde de ataque.
Ambos tipos de ndices pueden tomar ventaja de la eliminacin de particiones (tambin llamada poda
particin), que ocurre cuando el optimizador de velocidad de acceso a datos mediante la exclusin
de las particiones de consideracin. Si una consulta se puede eliminar particiones depende del
predicado de la consulta. Una consulta que utiliza un ndice prefijo local de siempre permite ndice de
eliminacin de particiones, mientras que una consulta que utiliza un ndice nonprefixed local no
podra.
Como se muestra en la Figura 4-5, una particin de ndice global puede contener entradas
que apuntan a mltiples particiones de la tabla. ndice de particin puntos P1 a las filas con
un channel_id de 2, ndice de particin puntos P2 a las filas con un channel_id de 3, y el
ndice de particin puntos p3 a las filas con un channel_id de 4 o 9.
TABLESPACE tsc
, PARTITION sales_q4_2006 VALUES LESS THAN (TO_DATE('01-JAN-2007','dd-MON-yyyy'))
TABLESPACE tsd
);
Las reglas para la creacin de particionadas por rangos ndices globales son similares a los
de la creacin de tablas particionadas por rangos. Ejemplo 4-3 crea particiones gama ndice
global de sale_month para las tablas creadas en los ejemplos anteriores. Cada particin de
ndice se llama, pero se almacena en el espacio de tabla por omisin para el ndice.
Ejemplo 4-3 Creacin de una tabla de ndice de amplitud de particiones
CREATE INDEX amount_sold_ix ON sales(amount_sold)
GLOBAL PARTITION BY RANGE(sale_month)
( PARTITION p_100 VALUES LESS THAN (100)
, PARTITION p_1000 VALUES LESS THAN (1000)
, PARTITION p_10000 VALUES LESS THAN (10000)
, PARTITION p_100000 VALUES LESS THAN (100000)
, PARTITION p_1000000 VALUES LESS THAN (1000000)
, PARTITION p_greater_than_1000000 VALUES LESS THAN (maxvalue)
);
Ejemplo 4-4 especifica cuatro particiones con diferentes anchuras de intervalo. Tambin
especifica que por encima del punto de transicin de 1 de enero de 2010, las particiones se
crean con un ancho intervalo de un mes.
Ejemplo 4-4 Creacin de una tabla de intervalos particiones
'DD-MM-YYYY')),
'DD-MM-YYYY')),
'DD-MM-YYYY')),
'DD-MM-YYYY')) );
Los siguientes ejemplos ilustran dos mtodos para crear una tabla hash particiones llamado
departamento. En el primer ejemplo se especifica el nmero de particiones, pero los nombres
generados por el sistema se asignan a ellos y que se almacenan en el espacio de tabla por
defecto de la tabla.
Si crea un ndice local para esta tabla, la base de datos construye el ndice para que se
equipartitioned con la tabla subyacente. La base de datos tambin se asegura de que el
ndice se mantiene de forma automtica cuando las operaciones de mantenimiento se
realizan en la tabla subyacente. El siguiente es un ejemplo de cmo crear un ndice local
sobre la mesa dept:
Usted puede nombrar opcionalmente las particiones hash y espacios de tabla en la que las
particiones de ndice local han de ser almacenados, pero si no lo hace, entonces la base de
datos utiliza el nombre de la particin de base correspondiente como nombre de la particin
de ndice, y almacena la particin de ndice en el mismo espacio de tablas que la tabla de
particiones.
Una fila se asigna a una particin de comprobar si el valor de la columna de particin de una
fila coincide con un valor en la lista de valores que describe la particin.
Por ejemplo, algunas filas de ejemplo se insertan como sigue:
(10, "contable", 100, "WA") se asigna a la particin q1_northwest
Mapas (20, 'I + D', 150 'OR') a la particin q1_northwest
(30, 'ventas', 100 'FL') se asigna a la particin q1_southeast
(40, 'HR', 10, 'TX') se asigna a la particin q1_southwest
(50 ', la ingeniera de sistemas', 10 'CA') no est asignado a ninguna particin en la tabla y
genera un error
TABLESPACE tbs8,
PARTITION region_west
VALUES ('CA','AZ','NM','OR','WA','UT','NV','CO')
NOLOGGING,
PARTITION region_south
VALUES ('TX','KY','TN','LA','MS','AR','AL','GA'),
PARTITION region_central
VALUES ('OH','ND','SD','MO','IL','MI','IA'),
PARTITION region_null
VALUES (NULL),
PARTITION region_unknown
VALUES (DEFAULT)
);
PARTITION BY RANGE(order_date)
( PARTITION Q1_2005 VALUES LESS
PARTITION Q2_2005 VALUES LESS
PARTITION Q3_2005 VALUES LESS
PARTITION Q4_2005 VALUES LESS
);
THAN
THAN
THAN
THAN
(TO_DATE('01-APR-2005','DD-MON-YYYY')),
(TO_DATE('01-JUL-2005','DD-MON-YYYY')),
(TO_DATE('01-OCT-2005','DD-MON-YYYY')),
(TO_DATE('01-JAN-2006','DD-MON-YYYY'))
La declaracin en el Ejemplo 4-10 crea una tabla con particiones rango hash. Cuatro
particiones gama se crean, cada uno con ocho subparticiones. Debido a que los
subparticiones no se nombran, nombres generados por el sistema son asignados, pero la
tienda en la clusula los distribuye a travs de los 4 espacios de tablas especificadas (ts1, ...,
ts4).
Las particiones de una tabla con particiones gama-hash son estructuras lgicas solamente,
porque sus datos se almacenan en los segmentos de sus subparticiones. Al igual que con
particiones, estas subparticiones comparten los mismos atributos lgicos. A diferencia de las
particiones de rango en una tabla de rango dividido, los subparticiones no pueden tener
diferentes atributos fsicos de la particin propietaria, aunque no estn obligados a residir en
el mismo espacio de tablas.
Los atributos especificados para una particin gama aplican a todos los subparticiones de
esa particin. Puede especificar diferentes atributos para cada particin gama, y puede
especificar una tienda en la clusula en el nivel de particin si la lista de espacios de tabla a
travs del cual los subparticiones de esa particin debe extenderse es diferente de las de
otras particiones. Todo esto se ilustra en el siguiente ejemplo.
La siguiente declaracin es un ejemplo de cmo crear un ndice local de la tabla emp donde
los segmentos de ndices se distribuyen en los espacios de tabla ts7, TS 8 y TS9.
TABLESPACE tbs_4
);
);
Una fila se asigna a una particin mediante la comprobacin de si el valor de la columna de particin para una
fila cae dentro de un rango particin especfica. La fila se asigna luego a un SUBPARTITION dentro de esa
particin mediante la identificacin de si el valor de la columna subparticiones cae dentro de un rango
especfico. Por ejemplo, un envo con una fecha de fin, en septiembre de 2006 y una fecha de entrega del 28 de
octubre 2006 cae en la particin p06_oct_a.
Para aprender cmo utilizar una plantilla subparticin puede simplificar la especificacin de una tabla con
particiones compuesto, consulte "Uso de plantillas SUBPARTITION para describir las tablas con particiones
Compuesto".
La creacin de compuestos Lista-* Tablas con particiones
Los conceptos de la lista hash, lista de vinos, y la lista de rango particionamiento compuesto son similares a los
conceptos de rango-hash, gama de vinos, y la particin del rango de alcance. Sin embargo, por lista *
particionamiento compuesto especificar PARTITION BY LIST para definir la estrategia de particin.
La lista de particiones de una lista * composite tabla con particiones son similares a las tablas particionadas por
rangos no compuesto. Esto permite a los incisos opcionales de una clusula de particin para especificar fsicos
y otros atributos, incluyendo tablas, especficas de un segmento de particin. Si no se reemplaza a nivel de
particin, las particiones heredan los atributos de la tabla subyacente.
Las descripciones SUBPARTITION, en el SUBPARTITION o clusulas subparticiones, son similares a los
mtodos de rango * particionamiento compuesto.
Para obtener ms informacin acerca de la definicin de un mtodo subparticin particionamiento compuesto
list-hash, consulte "Creacin de tablas con particiones compuestas Range-Hash". Para obtener ms informacin
acerca de la definicin subparticin de una lista-lista de mtodos de particionamiento compuesto, consulte
"Creacin de compuestos Range-Lista de tablas con particiones". Para obtener ms informacin acerca de la
);
siguientes mtodos:
Especificar mltiples particiones hash en la clusula particiones.
Utilice una plantilla subparticin.
Si no utiliza uno de estos mtodos, entonces futuras particiones intervalo obtener un solo subparticin hash.
Ejemplo 4-16 se muestra la tabla de ventas, el intervalo de particiones con intervalos de un mes en TIME_ID,
con subparticiones hash cust_id. Tenga en cuenta que este ejemplo se especifica varias particiones hash, sin
asignacin de espacio de tablas especficas para las particiones hash individuales.
Ejemplo 4-16 Creacin de una tabla con particiones intervalo-hash compuesto
CREATE TABLE sales
( prod_id
NUMBER(6)
, cust_id
NUMBER
, time_id
DATE
, channel_id
CHAR(1)
, promo_id
NUMBER(6)
, quantity_sold NUMBER(3)
, amount_sold
NUMBER(10,2)
)
PARTITION BY RANGE (time_id) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
SUBPARTITION BY HASH (cust_id) SUBPARTITIONS 4
( PARTITION before_2000 VALUES LESS THAN (TO_DATE('01-JAN-2000','dd-MON-yyyy')))
PARALLEL;
El siguiente ejemplo muestra la misma tabla de ventas, el intervalo de particiones con intervalos de un mes en
TIME_ID, de nuevo con subparticiones picadillo por cust_id. Esta vez, sin embargo, particiones hash
individuales se almacenan en espacios de tablas separadas. Tenga en cuenta que la plantilla SUBPARTITION
se utiliza para definir la asignacin de espacio de tabla para futuras subparticiones hash.
CREATE TABLE sales
( prod_id
NUMBER(6)
, cust_id
NUMBER
, time_id
DATE
, channel_id
CHAR(1)
, promo_id
NUMBER(6)
, quantity_sold NUMBER(3)
, amount_sold
NUMBER(10,2)
)
PARTITION BY RANGE (time_id) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
SUBPARTITION BY hash(cust_id)
SUBPARTITION template
( SUBPARTITION p1 TABLESPACE ts1
, SUBPARTITION p2 TABLESPACE ts2
, SUBPARTITION p3 TABLESPACE ts3
, SUBPARTITION P4 TABLESPACE ts4
)
( PARTITION before_2000 VALUES LESS THAN (TO_DATE('01-JAN-2000','dd-MON-yyyy'))
) PARALLEL;
, quantity_sold NUMBER(3)
, amount_sold
NUMBER(10,2)
)
PARTITION BY RANGE (time_id) INTERVAL (NUMTODSINTERVAL(1,'DAY'))
SUBPARTITION BY RANGE(amount_sold)
SUBPARTITION TEMPLATE
( SUBPARTITION p_low VALUES LESS THAN (1000)
, SUBPARTITION p_medium VALUES LESS THAN (4000)
, SUBPARTITION p_high VALUES LESS THAN (8000)
, SUBPARTITION p_ultimate VALUES LESS THAN (maxvalue)
)
( PARTITION before_2000 VALUES LESS THAN (TO_DATE('01-JAN-2000','dd-MON-yyyy')))
PARALLEL;
Uso de plantillas SUBPARTITION para describir las tablas con particiones compuestas
Puede crear subparticiones en una tabla con particiones compuesto utilizando una plantilla subparticin. Una
plantilla de subparticin simplifica la especificacin de subparticiones al no requerir que un descriptor de
subparticin puede especificar para cada particin en la tabla. En su lugar, usted describe subparticiones slo
una vez en una plantilla, a continuacin, aplicar esa plantilla subparticin a cada particin en la tabla. Para el
intervalo-* tablas con particiones de material compuesto, la plantilla SUBPARTITION es la nica manera de
definir subparticiones para las particiones de intervalo.
La plantilla SUBPARTITION se utiliza cada vez que un descriptor de subparticin no se especifica para una
particin. Si se especifica un descriptor de subparticin, a continuacin, se utiliza en lugar de la plantilla de
subparticin para esa particin. Si no se especifica ninguna plantilla subparticin, y ningn descriptor
subparticin se suministra para una particin, se crea un nico subparticin defecto.
Especificar una plantilla SUBPARTITION una tabla con particiones *-Hash
Para el rango-hash, intervalo-hash, y lista de hash tablas con particiones, la plantilla subparticin puede
describir los subparticiones en detalle, o puede especificar slo el nmero de subparticiones hash.
Ejemplo 4-19 Creacin de una tabla con particiones gama-hash con una plantilla subparticin.
CREATE TABLE emp_sub_template (deptno NUMBER, empname VARCHAR(32), grade NUMBER)
PARTITION BY RANGE(deptno) SUBPARTITION BY HASH(empname)
SUBPARTITION TEMPLATE
(SUBPARTITION a TABLESPACE ts1,
SUBPARTITION b TABLESPACE ts2,
SUBPARTITION c TABLESPACE ts3,
SUBPARTITION d TABLESPACE ts4
)
(PARTITION p1 VALUES LESS THAN (1000),
PARTITION p2 VALUES LESS THAN (2000),
PARTITION p3 VALUES LESS THAN (MAXVALUE)
);
tablas para una subparticin en una plantilla subparticin, entonces se debe especificar para todos.
Los nombres de los subparticiones, a menos que se utilice en intervalos * subparticiones, se generan
mediante la concatenacin del nombre de la particin con el nombre subparticin en la forma:
Nombre name_subpartition particin
Para el intervalo-* subparticiones, los nombres SUBPARTITION son generados por el sistema en la forma:
SYS_SUBPn
La consulta siguiente muestra los nombres SUBPARTITION y espacios de tabla:
SQL> SELECT TABLESPACE_NAME, PARTITION_NAME, SUBPARTITION_NAME
2 FROM DBA_TAB_SUBPARTITIONS WHERE TABLE_NAME='EMP_SUB_TEMPLATE'
3 ORDER BY TABLESPACE_NAME;
TABLESPACE_NAME
--------------TS1
TS1
TS1
TS2
TS2
TS2
TS3
TS3
TS3
TS4
TS4
TS4
PARTITION_NAME
--------------P1
P2
P3
P1
P2
P3
P1
P2
P3
P1
P2
P3
SUBPARTITION_NAME
-----------------P1_A
P2_A
P3_A
P1_B
P2_B
P3_B
P1_C
P2_C
P3_C
P1_D
P2_D
P3_D
12 rows selected.
Si ha especificado los espacios de tabla a nivel de particin (por ejemplo, para la particin tbs_1 q1_1999, tbs_2
para la particin q2_1999, tbs_3 para la particin q3_1999 y tbs_4 para la particin q4_1999) y no en la plantilla
subparticin, la tabla sera rayas horizontales. Todos subparticiones estaran en el espacio de tabla de la
particin propietaria.
Utilizando varias columnas Claves de particionamiento
Para el rango de particiones y tablas hash particionado, puede especificar un mximo de 16 columnas clave de
particionamiento. Uso de varias columnas de particin cuando la clave de particionamiento se compone de
varias columnas y columnas subsiguientes definir una granularidad ms alta que las anteriores. El escenario
ms comn es una fecha clave descompuesto o TIMESTAMP, que consiste en columnas separadas, para el
ao, mes y da.
En la evaluacin de las llaves de varias columnas de particin, la base de datos utiliza el segundo valor slo si
el primer valor no puede identificar de forma nica una sola particin de destino, y utiliza el tercer valor slo si la
primera y segunda no determinan la particin correcta, y as sucesivamente. Un valor no puede determinar la
particin correcta slo cuando una particin unida coincide exactamente con la que el valor y el mismo enlazado
se definen para la siguiente particin. La columna n-sima se investig solamente cuando todos los (n-1)
valores anteriores de la clave de varias columnas coinciden exactamente con los lmites (n-1) de una particin.
Una segunda columna, por ejemplo, se evala solamente si la primera columna coincide exactamente con el
valor lmite de particin. Si todos los valores de columna coinciden exactamente con todos los valores
consolidados para una particin, entonces la base de datos determina que la fila no cabe en esta particin y
considera la siguiente particin para un partido.
Para las definiciones de contorno no deterministas (particiones sucesivas con valores idnticos para al menos
una columna), el valor lmite de particin se convierte en un valor inclusive, que representa un "menor o igual"
lmite. Esto est en contraste con los lmites deterministas, donde los valores son siempre considerados como
"menos de" lmites.
Ejemplo 4-21 ilustra la evaluacin de la columna de una tabla de varias columnas de rango dividido, el
almacenamiento de la informacin real FECHA en tres columnas separadas: ao, mes y da. La granularidad de
particin es un trimestre calendario. La tabla con particiones que se evala se crea de la siguiente manera:
Ejemplo 4-21 Creacin de una tabla de varias columnas particionadas por rangos
CREATE TABLE sales_demo (
year
NUMBER,
month
NUMBER,
day
NUMBER,
amount_sold
NUMBER)
PARTITION BY RANGE (year,month)
(PARTITION before2001 VALUES LESS
PARTITION q1_2001
VALUES LESS
PARTITION q2_2001
VALUES LESS
PARTITION q3_2001
VALUES LESS
PARTITION q4_2001
VALUES LESS
PARTITION future
VALUES LESS
THAN
THAN
THAN
THAN
THAN
THAN
(2001,1),
(2001,4),
(2001,7),
(2001,10),
(2002,1),
(MAXVALUE,0));
REM 12-DEC-2000
INSERT INTO sales_demo
REM 17-MAR-2001
INSERT INTO sales_demo
REM 1-NOV-2001
INSERT INTO sales_demo
REM 1-JAN-2002
INSERT INTO sales_demo
VALUES(2000,12,12, 1000);
VALUES(2001,3,17, 2000);
VALUES(2001,11,1, 5000);
VALUES(2002,1,1, 4000);
Siguiendo la misma regla de determinacin en cuanto a la marca anterior, la segunda columna, mes,
determina q4_2001 particin como particin correcta para 1-NOV-2001:
La particin de 01-JAN-2002 se determina mediante la evaluacin de slo la columna de aos, lo que indica la
particin futuro:
SELECT * FROM sales_demo PARTITION(future);
YEAR
MONTH
DAY AMOUNT_SOLD
---------- ---------- ---------- ----------2002
1
1
4000
Los dos primeros registros se insertan en p1 particin, identificada de forma nica por supplier_id. Sin embargo,
el tercer disco se inserta en p2 particin, sino que coincide con los valores lmite de intervalo de particin p1
exactamente y por lo tanto la base de datos considera la siguiente particin para un partido. El valor de
PARTNUM satisface los criterios <200, por lo que se inserta en p2 particin.
SELECT * FROM supplier_parts PARTITION (p1);
SUPPLIER_ID
PARTNUM
PRICE
----------- ---------- ---------5
5
1000
5
150
1000
SELECT * FROM supplier_parts PARTITION (p2);
SUPPLIER_ID
PARTNUM
PRICE
----------- ---------- ---------10
100
1000