La “Fragmentación Horizontal en Oracle” es una técnica ampliamente utilizada en el caso de que existan millares de registros en una tabla, a continuación se muestra cómo se implementa, además de un ejercicio práctico para probar:
[1].- Se creará una tabla Normal y otra para la implementación de la Fragmentación;
[2].- Se implementará un “store procedure” para el registro de 1’000.000 de datos;
[3].- Luego, se podrán realizar las respectivas pruebas con respecto a los tiempos del INSERT, UPDATE, DELETE y SELECT.
1.- Creación de Tablas.-
CREATE TABLE NORMAL ( LLAVE NUMBER PRIMARY KEY, DATO NUMBER ); CREATE TABLE PARTICIONADA ( LLAVE NUMBER PRIMARY KEY, DATO NUMBER )PARTITION BY HASH(LLAVE) PARTITIONS 11;
2.- Creación de los procedimientos almacenados
CREATE OR REPLACE PROCEDURE ins_normal (v1 IN NUMBER) AS acum NUMBER(10) := v1; BEGIN WHILE acum > 0 LOOP INSERT INTO NORMAL VALUES (acum, acum); acum := acum - 1; END LOOP; END; / CREATE OR REPLACE PROCEDURE ins_particionada (v1 IN NUMBER) AS acum NUMBER(10) := v1; BEGIN WHILE acum > 0 LOOP INSERT INTO PARTICIONADA VALUES (acum, acum); acum := acum - 1; END LOOP; END; /
3.- Scripts respectivos para las pruebas del INSERT, UPDATE, DELETE, SELECT
DECLARE V1 NUMBER; BEGIN V1 := 1000000; ins_normal ( V1 ); COMMIT; END; DECLARE V1 NUMBER; BEGIN V1 := 1000000; ins_particionada ( V1 ); COMMIT; END; select * from NORMAL; select * from PARTICIONADA; UPDATE NORMAL SET LLAVE = LLAVE + 10; COMMIT; UPDATE PARTICIONADA SET LLAVE = LLAVE + 10; COMMIT; DELETE FROM NORMAL; DELETE FROM PARTICIONADA;
Bueno, espero les sirva.