Database Deadlock Classification (DDC)
Aug. 6th, 2015 12:41 pmAll database deadlocks fall into one of the following categories:
1. A row-level deadlock is always the application's bug
2. A table- or partiton-level deadlock caused by:
(a) explicit application-controlled locking - the application's bug
(b) lock escalation - a configuration or application design issue
(с) implicit operations at statement compilation stage - a DBMS bug
4. A deadlock involving any type of locks/latches on internal DBMS structures is always a DBMS bug
Навеяно работой.
UPDATE: В итоге оказалось, что 2(c) дискуссионно, поскольку настройки СУБД могут предписывать определенное поведение при компиляции запросов. В том числе и сбор статистик с блокировкой всей таблицы - хотя по моему скромному мнению, наличие таких настроек является дефектом дизайна СУБД.
1. A row-level deadlock is always the application's bug
2. A table- or partiton-level deadlock caused by:
(a) explicit application-controlled locking - the application's bug
(b) lock escalation - a configuration or application design issue
(с) implicit operations at statement compilation stage - a DBMS bug
4. A deadlock involving any type of locks/latches on internal DBMS structures is always a DBMS bug
Навеяно работой.
UPDATE: В итоге оказалось, что 2(c) дискуссионно, поскольку настройки СУБД могут предписывать определенное поведение при компиляции запросов. В том числе и сбор статистик с блокировкой всей таблицы - хотя по моему скромному мнению, наличие таких настроек является дефектом дизайна СУБД.