鎖:主要指共享
鎖和排他鎖兩種經常用到的鎖。
隔離級別:設定在事務上的,
共享鎖的鎖定時間與事務的隔離級別有關。update和delete預設都發出排他鎖。
隔離級別 髒讀
不可重複讀取 幻像
說明未提交讀(read uncommitted)是
是 是
如果其他事務更新,不管是否提交,立即執行
提交讀(read committed預設)
否 是
是 讀取提交過的資料。如果其他事務更新沒提交,則等待
可重複讀(repeatable read)否
否 是
查詢期間,不允許其他事務update
可序列讀(serializable)否
否 否
查詢期間,不允許其他事務insert
或delete
在執行sql
語句的時候查詢語句發出什麼樣的
鎖,這就由事務的隔離級別決定了。一般情況,讀語句
(select)
發出共享
鎖,寫語句
(update,insert,delete)
發出排他
鎖。但是,如果想改變sql語句發出的鎖怎麼辦呢,
sqlserver
為我們提供了
鎖定提示的概念。
鎖定提示對
sql語句進行特別指定,這個指定將覆蓋事務的
隔離級別,相當於是對預設鎖狀態的乙個補充,可以對每條語句的鎖級別進行覆蓋操作。
主要型別有:
型別1① readuncommitted:不發出鎖
② readcommitted:發出共享鎖,保持到讀取結束
③ repeatableread:發出共享鎖,保持到事務結束
④ serializable:發出共享鎖,保持到事務結束
型別2① nolock:不發出鎖。等同於readuncommitted
② holdlock:發出共享鎖,保持到事務結束。等同於serializable
③ xlock:發出排他鎖,保持到事務結束。
④ updlock:發出更新鎖,保持到事務事務結束。(更新鎖:不阻塞別的事物,允許別的事物讀資料(即更新鎖可與共享鎖相容),但他確保自上次讀取資料後資料沒有被更新)
⑤ readpast:發出共享鎖,但跳過鎖定行,它不會被阻塞。適用條件:提交讀的隔離級別,行級鎖,select語句中。
型別3① rowlock:行級鎖
② paglock:頁級鎖
③ tablock:表鎖
④ tablockx:表排他鎖
引用自
MSSqlserver的鎖模式介紹
在sql server資料庫中加鎖時,除了可以對不同的資源加鎖,還可以使用不同程度的加鎖方式,即有多種模式,sql server中鎖模式包括 1.共享鎖 s 共享鎖用於所以的制度資料操作。共享鎖是非獨佔的,允許多個併發事務讀取其鎖定的資源。預設情況下,資料被讀取後,sql server立刻釋放共享鎖...
事務和鎖 SQLite
2 事務 transaction 2.1 事務的週期 transaction lifecycles 程 序與事務之間有兩件事值得注意 1 哪些物件在事務下執行 這直接與api有關。2 事務的生命週期,即什麼時候開始,什麼時候結束以及它在什麼時候開始影響別的連線 這點對於併發性很重要 這涉及到sqli...
mysql 事務和鎖
事務是dbms得執行單位 開啟事務 set autocommit 0 取消自動提交 或begin 手動開啟乙個事務 提交乙個事務 commit 回滾乙個事務 rollback 在mysql的innodb 引擎中,預設每個操作 insert,update,select for update lock ...