資料庫隔離級別

2021-10-10 11:29:13 字數 1101 閱讀 7875

哎我這個笨腦子 ,昨天才看的資料庫隔離級別今天早上就啥也記不起來了,還是記一下吧

首先說一下資料庫的四大特性

檢視全域性和session會話的事務隔離級別以及設定

select @@global.tx_isolation,@@tx_isolation;

repeatable-read; repeatable-read

範例: set [session | global] transaction isolation level

具體設定: set global transaction isolation level read committed; //全域性的

具體設定: set session transaction isolation level read committed; //當前會話

再來乙個資料庫鎖

共享鎖由讀表操作加上的鎖,加鎖後其他使用者只能獲取該錶或行的共享鎖,不能獲取排它鎖,也就是說只能讀不能寫

排它鎖由寫表操作加上的鎖,加鎖後其他使用者不能獲取該錶或行的任何鎖,典型是mysql事務

根據鎖的範圍,可以分為

表鎖給整張表加鎖

行鎖給行資料加鎖

sql語言分為五大類:

ddl(資料定義語言) - create、alter、drop 這些語句自動提交,無需用commit提交。

dql(資料查詢語言) - select 查詢語句不存在提交問題。

dml(資料操縱語言) - insert、update、delete 這些語句需要commit才能提交。

dtl(事務控制語言) - commit、rollback 事務提交與回滾語句。

dcl(資料控制語言) - grant、revoke 授予許可權與**許可權語句。

所以,只有當執行插入(insert)、更新(update)、刪除(delete)這些種類的語句時才需要提交(commit)用到隔離性

嗯上我複製的鏈結嘻嘻嘻

帶例子的隔離級別

讀取的優缺點

最後都是自己的理解 有誤請指正

又是努力的一天加油啊

筆芯

資料庫隔離級別

read uncommited 讀未提交 最低級別,可讀取未提交事物的資料,這會導致髒讀,比如 某時刻會話a修改了乙個資料,但還未提交,此時會話b,讀取了該資料,這是,會話a回滾了事物,這就導致資料出現了不一致狀態,這就是髒讀 read commited 提交讀 避免了髒讀,但會導致不可重複讀,例如...

資料庫隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀 不可重複讀 幻讀read uncommitted re...

資料庫隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...