Tengo una tabla de base de datos que contiene algunos registros para procesar. La tabla tiene una columna de bandera que representa los siguientes valores de estado. 1 - listo para ser procesado, 2 procesado con éxito, 3 procesamiento fallido.Opciones para usar subprocesamiento múltiple para procesar un grupo de registros de base de datos?
El código .net (proceso repetitivo - consola/servicio) capturará una lista de registros que están listos para ser procesados, y los recorre e intenta procesarlos (No muy largo), actualiza el estado según el éxito o fracaso.
Para tener un mejor rendimiento, quiero habilitar el multihebra para este proceso. Estoy pensando en engendrar decir 6 hilos, cada uno de los hilos agarrando un subconjunto.
Obviamente, quiero evitar que diferentes hilos procesen los mismos registros. No quiero tener una bandera "Ser procesado" en la base de datos para manejar el caso donde el hilo se cuelga dejando el registro colgando.
La única forma en que veo hacer esto es obtener la lista completa de registros disponibles y asignar un grupo (tal vez identificadores) a cada hilo. Si un hilo individual falla, sus registros no procesados se recogerán la próxima vez que se ejecute el proceso.
¿Hay alguna otra alternativa a dividir los grupos antes de asignarlos a los hilos?
¿Tiene alguna columna de identidad en su tabla? – YavgenyP
Realmente no debería utilizar su base de datos como cola. http://en.wikipedia.org/wiki/Database-as-IPC – Oded
Los subprocesos y procesos mueren de forma inesperada y en su mayoría en el peor momento. No es una buena idea vincular una ID de DB a una ID de subproceso/número de subproceso. –