Actualmente estoy diseñando una base de datos para usar en nuestra compañía. Estamos utilizando SQL Server 2008. La base de datos contendrá los datos recopilados de varios clientes. El objetivo de la base de datos es adquirir números de referencia agregados sobre varios clientes.Diseño de la base de datos: ¿una gran mesa o mesas separadas?
Recientemente, me ha preocupado el hecho de que una mesa en particular se volverá muy grande. Cada cliente tiene aproximadamente 20,000,000 de filas de datos, y pronto habrá 30 clientes en la base de datos (si no más). Se realizarán muchas consultas en esta tabla. Ya estoy notando problemas de rendimiento y bloqueos temporales de los usuarios.
Mi pregunta, ¿podremos manejar esta tabla en el futuro, o es mejor dividir esta tabla en tablas más pequeñas para cada cliente?
actualización: Ahora ha sido aproximadamente la mitad de un año desde que se creó primero las tablas. Siguiendo los consejos a continuación, creé un puñado de tablas enormes. Desde entonces, he sido experimenting with indexes y he decidido un índice agrupado en las dos primeras columnas (código de hospital y código de departamento) en el que habríamos particionado la tabla si hubiéramos tenido Enterprise Edition. Esta configuración funcionó bien hasta hace poco, como predijo Galwegian, los problemas de rendimiento están surgiendo. Reconstruir un índice lleva años, los usuarios se bloquean mutuamente, las consultas suelen tardar más de lo que deberían, y para la mayoría de las consultas vale la pena copiar primero la parte relevante de los datos en una tabla temporal, crear índices en la tabla temporal y ejecutar el consulta. Así no es como debería ser. Por lo tanto, estamos considerando comprar Enterprise Edition para el uso de tablas particionadas. Si la compra no puede realizarse, planeo usar un workaround to accomplish partitioning in Standard Edition.
Para sus bloqueos, ¿está especificando la sugerencia de consulta NOLOCK en sus instrucciones SELECT? –
Todavía no, pero ahora lo haré. Gracias. – thomaspaulb
Pensándolo bien, probablemente no, teniendo en cuenta cierta información que encontré sobre el tema, y la discusión a continuación. – thomaspaulb