Archivo de la etiqueta: Oracle

Fragmentación Horizontal en Oracle

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.