Estoy trabajando en un sistema de flujo de trabajo. Tengo una tabla de tareas y un campo de estado. El valor para el estado puede ser uno de Nuevo, listo, procesando, error, aborto, hecho.Mejores prácticas para diseñar tablas para admitir la actualización de un campo más rápido utilizando el servidor sql
Tengo aproximadamente 7 procesos que se desencadenarán en función de una situación diferente para cambiar el valor del estado de la tarea. La mayoría del tiempo cada proceso funcionará en su propio conjunto de datos y cada vez solo procesa hasta 5000 registros. Pero aún veo un punto muerto si los datos llegan a alrededor de 2 millones de registros. Verifico con SQL Profiler, parece que está relacionado con algún recurso de la página. No soy bueno en el ajuste de rendimiento del servidor sql y no lo entiendo muy bien.
Dado que la tarea inactiva se archivará todos los días, estoy pensando en rediseñar la tabla para admitir alrededor de 10 millones de registros.
pocos elección puede ser:
- Crear tablas divididas basadas en el estado.
- Crear una tabla maestra con datos estáticos y mesa apoyada en base al estado
¿Hay alguna buena práctica para este tipo de situación?
Gracias!
Gracias Siva, estamos usando SQL Server 2005 +. Y aplicará aislamiento como sugirió. Pero no requerimos que el cliente debe tener Enterprise SQL Server. Por lo tanto, la partición puede ser una opción para algunos clientes que pueden pagar más. –
¿La tabla de tareas tiene un índice agrupado definido? – gonsalu
Sí. TaskId que es la clave principal y el tipo int. Traté de hacerlo no agrupado. Pero el rendimiento es aún peor. –