簡體   English   中英

SQL:在REPEATABLE READ隔離級別,是否在事務結束時持有UPDATE鎖?

[英]SQL: at REPEATABLE READ isolation level, are UPDATE locks held to the end of the transaction?

已經閱讀了有關REPEATABLE READ如何使SELECT語句持有的鎖保持到事務結束的信息。 UPDATE語句采用的排他鎖是否也是如此? 因此,當我更新事務中的一行時,是否發生后續的SELECT返回該UPDATE值的情況?

因此,我了解到,如果我在事務1中選擇一行,那么事務2將無法更新它,直到事務1完成。 但是,如果我對事務1中的行進行UPDATE,事務2是否仍必須等待事務1完成才能使事務2可以更新它?

除非第二個事務在隔離級別READ UNCOMMITED上運行,否則第一個事務中UPDATE語句在第一個事務中獲得的排他鎖將阻止所有選擇,直到提交第一個事務為止。

因此,我了解到,如果我在事務1中選擇一行,那么事務2將無法更新它,直到事務1完成。 但是,如果我對事務1中的行進行UPDATE,事務2是否仍必須等待事務1完成才能使事務2可以更新它?

是。

如果在REPEATABLE READ下,您在事務1中執行SELECT,則事務2仍可以添加事務1 中的SELECT的WHERE子句匹配的新數據 。這是因為事務1將行讀取鎖定放置在所有檢索到的數據上,而不是范圍鎖定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM