Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Łamigłówka impasu:ofiara nie posiada żadnego zasobu używanego do zabijania w celu rozwiązania impasu

W kontekście blokowania tabele i powiązane z nimi indeksy są oddzielnymi jednostkami. Czasami martwe blokowanie ma miejsce między tabelą a jej indeksem, a nie między dwoma oddzielnymi tabelami.

Problem jest najbardziej prawdopodobny, gdy blokada jest nałożona na indeks, a następnie na powiązanej tabeli (tj. na pasku) zostaje nałożona kolejna blokada w celu wyszukiwania danych. Podczas wstawiania nastąpi to w odwrotnej kolejności. Najpierw tabela (tj. słupek) jest blokowana i aktualizowana, a następnie indeksy są blokowane.

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

Czy masz/możesz dodać indeks pokrywający (aby pomóc w wyborze), który zawiera zarówno SomeId, jak i foo ? W ten sposób całkowicie unikniesz wyszukiwania i zapobiegniesz występowaniu problemu.

Czy możesz opublikować plany zapytań zamiast zakleszczonych ramek?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyświetlić datę w amerykańskim formacie daty w programie SQL Server (T-SQL)

  2. Skonfiguruj Lucene.Net z SQL Server

  3. Jak przekonwertować z jednego formatu daty na inny w programie SQL Server za pomocą funkcji CONVERT()

  4. Wprowadzenie do bezpośredniego miejsca do magazynowania dla SQL Server

  5. SQL Server wybiera losową (lub pierwszą) wartość za pomocą agregacji