"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se puede utilizar SQL Server como cola simultánea para varios clientes?

¿Cómo se puede utilizar SQL Server como cola simultánea para varios clientes?

Publicado el 2024-12-23
Navegar:272

How Can SQL Server Be Used as a Concurrent Queue for Multiple Clients?

Uso de SQL Server como una cola simultánea con múltiples clientes

En un escenario donde una tabla sirve como cola, es crucial configurarla y consultarla de una manera que permite que varios clientes procesen elementos de la cola simultáneamente.

Cuando se utiliza el bloqueo de filas pesimista con UPDLOCK y ROWLOCK, solo un trabajador puede adquirir el bloqueo y procesar un fila. Para resolver este problema y habilitar el procesamiento simultáneo, considere el siguiente enfoque:

Implementación de cola mediante la cláusula OUTPUT

La cláusula OUTPUT proporciona un mecanismo para recuperar y modificar atómicamente una fila . Aquí se explica cómo implementar una cola usando la cláusula OUTPUT:

with CTE as (
  SELECT TOP(1) COMMAND, PROCESSED
  FROM TABLE WITH (READPAST)
  WHERE PROCESSED = 0)
UPDATE CTE
  SET PROCESSED = 1
  OUTPUT INSERTED.*;

Esta consulta realiza los siguientes pasos de forma atómica:

  1. Utiliza la sugerencia CON (READPAST) para omitir las filas bloqueadas.
  2. Selecciona la parte superior fila con PROCESSED=0.
  3. Actualiza la fila seleccionada para marcarla como procesada (PROCESSED=1).
  4. Genera la fila actualizada, que el trabajador puede utilizar para procesar.

Optimización de índice agrupado

Para optimizar aún más el rendimiento, es fundamental crear un índice agrupado en la columna PROCESADO. Esto garantiza que los datos se almacenen en el orden de procesamiento.

CREATE CLUSTERED INDEX cdxTable on TABLE(PROCESSED, ID);

Evitar consultas no estándar

Para un rendimiento óptimo, es esencial evitar consultar la tabla de cola utilizando métodos distintos a la operación de eliminación de cola descrita anteriormente. Intentar echar un vistazo o utilizar la tabla para fines adicionales puede provocar bloqueos y degradación del rendimiento.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3