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

T-SQLの悲観的ロック

    エンドユーザーなどの別のリソースを待っている場合は、Dave Markleのアドバイスを受けて、それを行わないでください。

    それ以外の場合は、次のT-SQLコードを試してください。

    BEGIN TRAN
    
    SELECT *
    FROM   authors AU
    WITH   (HOLDLOCK, ROWLOCK)
    WHERE  AU.au_id = '274-80-9391'
    
    /* Do all your stuff here while the row is locked */
    
    COMMIT TRAN
    

    ホールドロック ヒントは、トランザクションをコミットするまでロックを保持するようにSQLServerに丁寧に要求します。 ROWLOCK ヒントは、ページまたはテーブルのロックを発行するのではなく、この行のみをロックするようにSQLServerに丁寧に要求します。

    多くの行が影響を受ける場合は、SQL Serverが主導権を握ってページロックにエスカレートするか、サーバーのメモリをいっぱいにして処理を停止する行ロックの軍隊全体が存在することに注意してください。



    1. SQLServerのAlwaysOn可用性グループのトラブルシューティング

    2. MySQL INSERT INTO SELECT JOIN

    3. SQLServerのgroupby列とともにコンマ区切り文字で集計結果を取得するSQLクエリ

    4. エイリアスをまとめて作成しますか?