資料庫事務及mysql隔離級別知識講解

2021-12-30 08:24:55 字數 1237 閱讀 6074

資料庫要好好學!還有作業系統啥的。

啥是事務

我面試時這樣說的:為了快取一系列crud操作,進行讀寫分離,如果你想要這系列操作,就update了,如果不要,就回滾了。其實我忘了,我真的忘了。百度了下,發現就是crud操作的集合,任何查詢或者修改資料庫的操作,都是事務的乙個單元。

事務其目的呢

提供了資料庫從失敗恢復到正常狀態的辦法,也就是事務穿透,這一點安卓中都有許多的應用場景。

在多執行緒併發訪問的時候,提供乙個隔離方法,防止各自的操作各自干擾

讀寫分離的思想

這就是讀寫分離嘛!在cas樂觀鎖中,他也是把i++操作(舉個auto integer的例子)壓縮成了一條機器指令;也和okhttp的快取日誌系統一樣,只對dirty狀態的日誌進行crud;也和copy on write arraylist一樣,複製乙個新容器,對新容器操作。

回滾的思想

fragment碎片就維護著乙個碎片record。

例子1、從a賬號中把餘額讀出來(500)。

2、對a賬號做減法操作(500-100)。

3、把結果寫回a賬號中(400)。

4、從b賬號中把餘額讀出來(500)。

5、對b賬號做加法操作(500+100)。

6、把結果寫回b賬號中(600)

這個作為乙個原子操作,即事務。

一致性就是a減了100,b也要加100,不能加50。

隔離性我認為就是乙個併發的情形

永續性就是操作了資料庫後,資料發生了永久的改變

不考慮隔離性帶來的後果:

1.髒讀

乙個事務修改值的事務,未提交,這個修改的過程中另乙個讀取值的事務進行了讀取,一旦前面乙個發生了回滾,就成了髒讀。

2.不可重複讀

乙個事務第一次讀乙個值,間隔一段時間後再次讀取了這個值,在這個間隔中,另乙個事務對這個值進行了修改並提交。

3.幻讀

乙個事務第一次讀若干行,間隔一段時間後再次讀取若干行,在這個間隔中,另乙個事務在這若干行中插入或者刪除或者修改了一行並提交。其本質是資料集的改變。

mysql提供的4個隔離級別

① serializable (序列化):可避免髒讀、不可重複讀、幻讀的發生。相當於鎖住整個表。

② repeatable read (可重複讀):可避免髒讀、不可重複讀的發生。(mysql預設的)

③ read committed (讀已提交):可避免髒讀的發生。

④ read uncommitted (讀未提交):最低級別,任何情況都無法保證。

資料庫事務及隔離級別

1資料庫四大特性 資料庫具有事務安全性,同時也具有acid四大特性 原子性 一致性 隔離性 永續性 原子性 atomicity 原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,這和前面兩篇部落格介紹事務的功能是一樣的概念,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能...

資料庫事務及隔離級別

1 原子性 atomicity 事務開始後所有操作,要麼全部做完,要麼全部不做,不可能停滯在中間環節。事務執行過程 錯,會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣。也就是說事務是乙個不可分割的整體,就像化學中學過的原子,是物質構成的基本單位。2 一致性 consistency 事務開始前和...

資料庫事務及隔離級別

a.概念 b.操作 c.測試 建立賬戶表 create table account id int primary keyauto increment name varchar 10 money double 新增資料 insert into account name,money values zha...