martes, 10 de julio de 2007

BenchMark - Gestión de coordenadas en MYSQL

Quería comprobar que sistema era mejor para almacenar registros en MySQL cuya clave principal fuera una coordenada en el plano (componentes X,Y).

El BenchMark comprueba la velocidad de búsqueda en dos modelos:

Modelo 1: Creamos una tabla con dos campos INT (X,Y) los dos Primary Key
CREATE TABLE coord (x int, y int, primary key (x,y));
Modelo 2: Creamos una tabla con un campo VARCHAR(21) primary key para un formato X:Y de 10 digitos por coordenada
CREATE TABLE coord2 (xy varchar(21) primary key);

Los tests realizados a continuación están ejecutados desde PHP en local mediante el script Benchmark.php
RESUMEN DE TESTS (Los tests completos y el codigo fuente de Benchmark.php estan a continuación del resumen)

TEST1: (modelo 1: 168% más eficiente)
Repeticiones: 10000
Registros: 18

TEST2: (modelo 1: 128% más eficiente)
Repeticiones: 20000
Registros: 22

TEST3: (modelo 1: 158% más eficiente)
Repeticiones: 30000
Registros: 22

TEST4: (modelo 1: 45% más eficiente)
Repeticiones: 1000
Registros: 1000

TEST5: (modelo 1: 27% más eficiente)
Repeticiones: 10000
Registros: 10000

TEST6: (modelo 1: 11% más eficiente)
Repeticiones: 10
Registros: 10000

TEST DE CARGA EXHAUSTIVA: (modelo 1: 32% más eficiente)
Repeticiones: 1000
Registros: 100000

CONCLUSIONES:
El modelo de dos campos de tipo ENTERO X,Y es más eficiente que el de texto en todas las situaciones probadas
Las situaciones más reales serían las del TEST 6 y 7 con mas numero de registros que de repeticiones de busqueda.
En ambas gana el modelo 1 y parece que las repeticiones dañan considerablemente al modelo 2
Es previsible una eficiencia similar a partir de un millon de registros de información con menos de 10 repeticiones

No hay comentarios: