sql >> Base de Datos >  >> RDS >> Sqlserver

Cero interbloqueo de SQL por diseño:¿algún patrón de codificación?

Escribir código a prueba de puntos muertos es realmente difícil. Incluso cuando accede a las tablas en el mismo orden, es posible que aún tenga interbloqueos [1]. Escribí una publicación en mi blog que elabora a través de algunos enfoques que lo ayudarán a evitar y resolver situaciones de punto muerto.

Si quiere asegurarse de que dos estados de cuenta/transacciones nunca se bloqueen, puede lograrlo observando qué bloqueos consume cada estado de cuenta usando sp_lock procedimiento almacenado del sistema. Para hacer esto, debe ser muy rápido o usar una transacción abierta con una sugerencia de retención.

Notas:

  1. Cualquier declaración SELECT que necesite más de un bloqueo a la vez puede bloquearse frente a una transacción diseñada inteligentemente que tome los bloqueos en orden inverso.