資料庫的隔離級別

2021-10-02 17:28:42 字數 584 閱讀 5266

為什麼會出現「髒讀」?因為「select」操作沒有規矩。

為什麼會出現「不可重複讀」?因為「update」操作沒有規矩。

為什麼會出現「幻讀」?因為「insert」和「delete」操作沒有規矩。

一般的資料庫都包括以下四種隔離級別:

讀未提交(read uncommitted)

讀提交(read committed):是sql server 和 oracle的預設隔離級別

可重複讀(repeated read):mysql預設隔離級別

序列化(serializable)

「讀未提(read uncommitted)」能預防啥?啥都預防不了。

「讀提交(read committed)」能預防啥?使用「快照讀(snapshot read)」,避免「髒讀」,但是可能出現「不可重複讀」和「幻讀」。

「可重複讀(repeated red)」能預防啥?使用「快照讀(snapshot read)」,鎖住被讀取記錄,避免出現「髒讀」、「不可重複讀」,但是可能出現「幻讀」。

「序列化(serializable)」能預防啥?排排坐,吃果果,有效避免「髒讀」、「不可重複讀」、「幻讀」,不過效果誰用誰知道。

資料庫隔離級別

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...