筆記四 事務,死鎖

2022-07-01 19:03:10 字數 988 閱讀 3933

鎖模式(開啟事務時候,系統自動帶的)

1.排他鎖--當更新一條資料的時候,事務為這條資料請求排他鎖,其他事務請求查詢或者更新刪除這條資料,只能進入阻塞佇列等待這個更新事務的完成

2.共享鎖 --當查詢一條資料是,事務為這條資料請求共享鎖,其他事務可以查詢此資料,但是不能操作(更新或刪除)這條資料

set lock_timeout 5000 --鎖等待時間不超過5秒

set lock_timeout -1 --無限等待

查詢未提交的sql語句

select

*from t with(nolock)

死鎖的原因查詢

1.

select request_session_id as 會話id ,

resource_type as 請求鎖定的資源型別 ,

resource_description as 描述 ,

request_mode as 模式 ,

request_status as 狀態,

object_name(resource_associated_entity_id) tablename

from sys.dm_tran_locks

where resource_type='object'

2.殺死死鎖

kill 70  --kill spid
事務在未提交前,資料庫的整張表是鎖死的(可以用vs 設定斷點除錯),這個時候可以開啟讀提交快照處於開啟狀態

程序中的鎖:鎖住資源,只能允許乙個程序訪問

mysql事務死鎖 MySQL事務 死鎖

一 概念 多個事務在同一資源上互相占用形成迴路。這就是死鎖 基本命令 檢視是否自動提交事務 show variables like autocommit 設定事務是否自動提交 set autocommit 0 set autocommit 1 二 例子 create table user id bi...

Spring事務死鎖

error updating database.cause com.mysql.jdbc.exceptions.jdbc4.mysqltransactionrollbackexception lock wait timeout exceeded try restarting transaction ...

MySQL四種事務隔離級別和死鎖

乙個事務必須被視為乙個不可分割的最小工作單元,整個事務中的所有操作要麼全部提交成功,要麼全部失敗回滾,對於乙個事務來說,不可能只執行其中的一部分操作,這就是事務的原子性。資料庫總是從乙個一致性的狀態轉換到另外乙個一致性的狀態。就比如,乙個事務中,某乙個語句執行成功了,後面的執行失敗了,最壞的狀態也是...