sql >> データベース >  >> RDS >> Sqlserver

ADOを使用してC#で効率的なSQL Serverデッドロック処理を取得するにはどうすればよいですか?

    まず、SQL 2000コードを確認し、このデッドロックが発生している理由を突き止めます。これを修正すると、より大きな問題が隠れている可能性があります(たとえば、インデックスの欠落やクエリの不良)。

    次に、アーキテクチャを確認して、デッドロックステートメントを本当に頻繁に呼び出す必要があることを確認します(select count(*) from bob 1秒間に100回呼び出す必要がありますか?)

    ただし、デッドロックのサポートが本当に必要で、SQLまたはアーキテクチャにエラーがない場合は、次の手順に従って試してください。 (注:1秒あたり数千のクエリをサポートするシステムではこの手法を使用する必要があり、デッドロックが発生することはめったにありません)

    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. TIME_TO_SEC()の例– MySQL

    2. MariaDBの日付から曜日名を取得する3つの方法

    3. MariaDBでのREPEAT()のしくみ

    4. MySQLまたはMariaDB用のHAソリューションを作成する際の信頼性の低いネットワークへの対処