Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Пъзел с безизходица:Жертвата не притежава никакъв ресурс, използван за убийство за разрешаване на безизходица

В контекста на заключването, таблиците и свързаните с тях индекси са отделни обекти. Понякога мъртвото заключване се случва между таблица и нейния индекс, а не между две отделни таблици.

Проблемът най-вероятно е, когато се получи заключване на индекс и след това се получи друго заключване на свързаната таблица (т.е. лента), за да се извърши търсене на данни. По време на вмъкването това ще се случи в обратния ред. Първо таблицата (т.е. лентата) се заключва и актуализира, след което се заключват индексите.

select foo 
from bar 
where @someId = 0 OR SomeId = @someId

Имате ли/можете ли да добавите покриващ индекс (за да помогнете при избора), който съдържа както SomeId, така и foo? По този начин ще избегнете напълно търсенето и ще спрете възникването на проблема.

Можете ли да публикувате плановете на заявките, а не блокировките?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разлика между дата и час в sqlserver?

  2. Проблем с промяна на сортирането на база данни (SQL Server 2008)

  3. SQL-Server:Има ли SQL скрипт, който мога да използвам, за да определя напредъка на процес на архивиране или възстановяване на SQL Server?

  4. Как да зададете опцията maxrecursion за CTE вътре във функция с таблично стойност

  5. Има ли начин да ИЗБЕРЕТЕ и АКТУАЛИЗИРАТЕ редове едновременно?