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

Jak uzyskać wydajną obsługę zakleszczeń Sql Server w C# za pomocą ADO?

Najpierw przejrzałbym mój kod SQL 2000 i doszedłbym do sedna przyczyny tego impasu. Naprawienie tego może ukrywać większy problem (np. brakujący indeks lub złe zapytanie).

Po drugie, chciałbym przejrzeć moją architekturę, aby potwierdzić, że instrukcja zakleszczenia naprawdę musi być często wywoływana (Czy select count(*) from bob trzeba dzwonić 100 razy na sekundę?).

Jeśli jednak naprawdę potrzebujesz wsparcia dla zakleszczeń i nie masz błędów w swoim SQL lub architekturze, wypróbuj coś w następujący sposób. (Uwaga:musiałem użyć tej techniki w systemie obsługującym tysiące zapytań na sekundę i dość rzadko trafiałem w zakleszczenia)

int retryCount = 3;
bool success = false;  
while (retryCount > 0 && !success) 
{
  try
  {
     // your sql here
     success = true; 
  } 
  catch (SqlException exception)
  {
     if (exception.Number != 1205)
     {
       // a sql exception that is not a deadlock 
       throw; 
     }
     // Add delay here if you wish. 
     retryCount--; 
     if (retryCount == 0) throw;
  }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 50 najważniejszych pytań do rozmowy kwalifikacyjnej na temat SQL Server, które musisz przygotować w 2022 r.

  2. LOG10() Przykłady w SQL Server

  3. EF 6 — Jak poprawnie wykonywać zapytania równoległe

  4. Jak znaleźć znaki Unicode/nie-ASCII w polu NTEXT w tabeli programu SQL Server 2005?

  5. Ograniczenie klauzuli IN w SQL Server