はい-ある程度。
SELECT
の長さ 共有ロックの保持は、トランザクションの分離レベルによって異なります:
READ UNCOMMITTED
-共有ロックはまったく取得されません-UPDATE
ブロックされていません-
READ COMMITTED
-共有ロックは、データの読み取り中にのみ取得されます-UPDATE
非常に短い期間ブロックされる可能性があります -
REPEATABLE READ
およびSERIALIZABLE
-共有ロックが取得され、トランザクションが終了するまで保持されます-UPDATE
SELECT
までブロックされます トランザクションが終了します
技術的には、UPDATE
ステートメントは最初にUPDATE
を取得します ロック-共有ロックと互換性があります(SELECT
で使用されます) )-更新される行の現在の値を読み取っている間。
それが完了したら、Update
ロックは、テーブルに書き込まれる新しいデータの排他ロックにエスカレートされます。