
26/06/2009, 05:26
|
 | Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 3 meses Puntos: 2658 | |
Respuesta: Indexar i claves furanas Los índices se actualizan con cada insert. En un caso el índice establece el ordenamiento físico de los registros (PK), en otros establecen un orden definido alternativo, pero no físico sino lógico.
Como los ordenamientos deben estar disponibles tan rápido como el registro se terminó de insertar; si estás metiendo 600 registros por hora, los índices se están actualizando 1 vez cada 6 segundos. Esto significa uso de memoria adicional para mantener los índices no primarios, que luego se vuelcan al disco.
Ahora bien imagínate esto:
Si una clave abarca tres campos BIGINT o DOUBLE, estás usando 12 bytes + longitud usada por la página de índice. Supongamos que usas 32 bytes por entrada y estás actualizando una tabla con 1.000.000 registros. Son como mínimo 32 Mb usados por el sistema en mantener el índice que se está actualizando. Considerando que un bloque de índice usa 64 K, se requieren 500 bloques de datos para mantener el índice, a lo que le debes sumar las tablas de páginas, el overhead en el procesador, el swapping al disco y un montón de cosas más...
Y esto, por cada uno de los índices definidos, con el agregado que estoy poniendo un ejemplo bastante barato (una KEY basada en tres campos numéricos)
Resumiendo: Operar con demasiados índices en una tabla que se recibe muchas inserciones/hora, trae problemas de performance.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |