Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/03/2013, 06:17
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Una tabla grande afecta al rendimiento de las demás?

Vamos a ver si con un ejemplo se entiende por qué la cantidad de registros no es un parámetro determinante para establecer si una tabla dada afectará o no la performance.
Supongamos una tabla con un trillón de registros, es decir, 1.000.000.000.000.000.000 registros (con esa cantidad tus problemas de hardware se presentarán antes que los de performance de consultas), la cual tiene una media docena de índices, de y realizaremos una consulta con tres parámetros, todos indexados.
Los indices usados tendrán 500.000 entradas uno, 20.000 entradas el otro, y el tercero unas 100.000 (considerando que es un trillón de registros, estoy siendo pesimista).
- En ese contexto, la tabla no se leerá directamente, sino que el sistema usará los índices.
- El primer índice permitirá descartar, desde el inicio alrededor del 99,98% de los registros, quedando sólo 2.000.000.000.0000 de registros.
- El segundo índice devolvería más, pero como sólo se buscarán sobre los 20 billones restantes, quedarían 100.000.000 registros.
- El tercer índice dejaría finalmente 1.000 registros a leer, por lo que en realidad sólo se leerán de la tabla esos, y será en esos donde se buscará.

¿Crees realmente que una tabla de un trillón de registros afectaría la performance, si está bien optimizada como dices?

Ahora bien, supongamos que tenemos un caso de una tabla con 10.000 registros, los cuales se pueden leer en servidor en 7,2 segundos, haciendo una pésima consulta.
Pero la consultas por intranet, y te encuentras que tarda 36,7 segundos (me han pasado cosas así).
¿Es grande la tabla?
No.
¿Está optimizada?
Si.
La intentas consultar en web y luego de 40 minutos, el servidor se cae, sin haber obtenido resultados.
¿Cómo es posible? Al menos debería poder devolverte esos resultados en un minuto.
¿Dónde falló?
Falló porque algún inútil usó la tabla para almacenar imágenes digitales en su formato binario, y la consulta está devolviendo un resultado de 72 Gb de datos, que hacen caer al servidor web...
¿La tabla es grande?
En registro, no. Pero es demasiado grande en datos para ser usada en Web, mientras que en localhost anda perfectamente.

Sintetizando: Una tabla es grande o pequeña en función del diseño del sistema, y no de la cantidad de registros. Por ende, puede ser poco performántica incluso con pocos, y muy performántica con cantidades exorbitantes de registros.

¿Se entiende?

Lo que hay que hacer es un análisis de requerimientos para arquitectura de datos, y allí es donde se resolverá eso. Es lo que hacemos todos en ese caso.
Pero no existen modelos absolutos. Lo que existen son "casos de estudio" (que puedes consultar en la web oficial o en otras dedicadas al tema), y los casos de estudio aplican si el contexto de tu sistema puede se comparado con ellos. Pero no se puede teorizar en el aire.

Lo único que te puedo recomendar, dado que no nos quieres dar un escenario de uso es que si quieres evitarte problemas, verifica con el plan de consultas que jamás se produzcan casos de full table scan, porque eso si te matará al sistema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)