Está en la página 1de 6

PRCTICA DE FRAGMENTACIN

PRESENTADO POR:

GERMN DAVID GARCA ASUDILLO

CARLOS ANDRES CHAPID

PRESENTADO A:

ING. WILSON ALFREDO ORTEGA ORDOES

UNIVERSIDAD DEL CAUCA

FACULTAD DE INGENIERA ELECTRNICA Y TELECOMUNICACIONES

INGENIERA DE SISTEMAS

LABORATORIO DE BASE DE DATOS II

POPAYN CAUCA 04/05/2017


A continuacin mostramos los scripts utilizados para la creacin de las tablas y procedimientos:

Creacin de la tabla persona


CREATE TABLE IF NOT EXISTS `persona` (
`id_per` int(11) NOT NULL AUTO_INCREMENT,
`edad_per` int(11) NOT NULL,
`id_ciudad` int(11) NOT NULL,
PRIMARY KEY (`id_per`)
);

Procedimiento de llenado para la tabla persona:


DELIMITER //
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertRand`(
IN `NumRows` INT
)
BEGIN
DECLARE i INT;
SET i = 0;
START TRANSACTION;
WHILE i <= NumRows DO
INSERT INTO persona (edad_per,id_ciudad) VALUES (CEIL(17 +
RAND() * 63), CEIL(RAND() * 4));
SET i = i + 1;
END WHILE;
COMMIT;
END//
DELIMITER ;

Creacin de la tabla persona_f:

CREATE TABLE IF NOT EXISTS `personas_f` (


`id` int(11) NOT NULL,
`edad` int(11) NOT NULL,
`idciudad` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
PARTITION BY LIST (idciudad)
( PARTITION IDCIUDA1 VALUES IN (1) ENGINE = InnoDB,
PARTITION IDCIUDA2 VALUES IN (2) ENGINE = InnoDB,
PARTITION IDCIUDA3 VALUES IN (3) ENGINE = InnoDB,
PARTITION IDCIUDA4 VALUES IN (4) ENGINE = InnoDB);

El procedimiento utilizado para copiar los datos de la tabla persona a la tabla peronas_f:
DELIMITER //
CREATE DEFINER=`root`@`localhost` PROCEDURE `LLENAR_PERSONAS_F`()
BEGIN
START TRANSACTION;
TRUNCATE TABLE personas_f;
INSERT INTO personas_f SELECT * FROM persona;
COMMIT;
END//
DELIMITER ;
RESULTADOS DE LAS CONSULTAS REALIZADAS EN LAS TABLAS
TABLA PERSONA
LLENADO TABLA 1000000 32,625 SEC
REGISTROS

CONSULTA CONSULTAR TODAS LAS PERSONAS


SELECT * FRON PERSONA LIMIT 10000000;
TIEMPO UTILIZADO 1 2 3 4 5 promedio
2,484 2,516 2,407 2,406 2,406 2,4438

CONSULTA CONSULTAR TODAS LAS PERSONAS DE LA CIUDAD 1


SELECT * FROM PERSONA WHERE ID_CIUDAD = 1 LIMIT
1000000;
TIEMPO UTILIZADO 1 2 3 4 5 promedio
1,516 1,516 1,5 1,485 1,469 1,4972

CONSULTA CONSULTAR TODAS LAS PERSONAS DE LA CIUDAD 2 O 4


SELECT * FROM PERSONA WHERE ID_CIUDAD = 2 OR
ID_CIUDAD = 4 LIMIT 1000000;
TIEMPO UTILIZADO 1 2 3 4 5 promedio
1,985 1,984 1,969 1,953 1,953 1,9688

CONSULTA CONSULTAR EL PROMEDIO DE EDADES DE TODAS LAS


PERSONAS
SELECT AVG(EDAD_PER) FROM PERSONA;
TIEMPO UTILIZADO 1 2 3 4 5 promedio
1,329 0 0 0 0 0,2658

CONSULTA CONSULTAR EL PROMEDIO DE EDADES DE TODAS LAS


PERSONAS DE LA CIUDAD 2
SELECT AVG(EDAD_PER) FROM PERSONA where id_ciudad=2;
TIEMPO UTILIZADO 1 2 3 4 5 promedio
1,218 0 0 0 0 0,2436
TABLA PERSONA_F
COPIADO DE DATOS 1000000 36,547 SEC
REGISTROS

CONSULTA CONSULTAR TODAS LAS PERSONAS


SELECT * FROM PERSONA LIMIT 10000000;
TIEMPO UTILIZADO 1 2 3 4 5 promedio
3,313 3,235 3,235 3,219 2,906 3,1816

CONSULTA CONSULTAR TODAS LAS PERSONAS DE LA CIUDAD 1


SELECT * FROM PERSONAS_F WHERE IDCIUDAD = 1 LIMIT
1000000;
TIEMPO UTILIZADO 1 2 3 4 5 promedio
0,922 0,937 0,906 0,921 0,922 0,9216

CONSULTA CONSULTAR TODAS LAS PERSONAS DE LA CIUDAD 2 O 4


SELECT * FROM PERSONAS_F WHERE IDCIUDAD = 2 OR
IDCIUDAD = 4 LIMIT 1000000;
TIEMPO UTILIZADO 1 2 3 4 5 promedio
2 1,891 1,969 1,891 1,985 1,9472

CONSULTA CONSULTAR EL PROMEDIO DE EDADES DE TODAS LAS PERSONAS


SELECT AVG(EDAD) FROM PERSONAS_F;
TIEMPO UTILIZADO 1 2 3 4 5 promedio
2,828 0 0 0 0 0,5656

CONSULTA CONSULTAR EL PROMEDIO DE EDADES DE TODAS LAS PERSONAS


DE LA CIUDAD 2
SELECT AVG(EDAD) FROM PERSONAS_F WHERE IDCIUDAD = 2;
TIEMPO UTILIZADO 1 2 3 4 5 promedio
0,687 0 0 0 0 0,1374
GRFICA DE COMPARACIN DE TIEMPOS PROMEDIOS
DE LAS CONSULTAS

CONSULTAS TABLAS
PERSONA PERSONAS_F
CONSULTAR TODAS LAS PERSONAS 2,4438 3,1816
CONSULTAR TODAS LAS PERSONAS DE LA CIUDAD 1 1,4972 0,9216
CONSULTAR TODAS LAS PERSONAS DE LA CIUDAD 2 O 4 1,9688 1,9472
CONSULTAR EL PROMEDIO DE EDADES DE TODAS LAS 0,2658 0,5656
PERSONAS
CONSULTAR EL PROMEDIO DE EDADES DE TODAS LAS 0,2436 0,1374
PERSONAS DE LA CIUDAD 2

GRFICA OBTENIDA

TIEMPO VS CONSULTA
3,5
3
2,5
2
1,5
1
0,5
0
CONSULTAR CONSULTAR CONSULTAR CONSULTAR EL CONSULTAR EL
TODAS LAS TODAS LAS TODAS LAS PROMEDIO DE PROMEDIO DE
PERSONAS PERSONAS DE LA PERSONAS DE LA EDADES DE EDADES DE
CIUDAD 1 CIUDAD 2 O 4 TODAS LAS TODAS LAS
PERSONAS PERSONAS DE LA
CIUDAD 2

PERSONA PERSONAS_F
CONCLUSIONES
Al realizar la consulta de obtencin de todos los datos de las personas, observamos
que al realizar la consulta sobre la tabla personas el resultado fue ms rpido en
comparacin con la tabla personas_f, todo esto debido a que la tabla
personas_f est fragmentada y para obtener los datos se debe recorrer cada
particin de la tabla, en cambio en la tabla persona los datos estn ubicados en
una sola, por ello la diferencia de tiempo.
Tambin percibimos que si la consulta va condicionada a un parmetro, la consulta
es ms eficiente si se realiza sobre la tabla fragmentada, todo esto si el parmetro
es el mismo que se us para dicha fragmentacin.