Java面試擴展:MySQL支持的事務隔離級別

讀未提交(Read uncommitted),就是一個事務能夠看到其他事務尚未提交的修改,這是最低的隔離水平,允許髒讀出現。讀已提交(Read committed),事務能夠看到的數據都是其他事務已經提交的修改,也就是保證不會看到任何中間性狀態,當然髒讀也不會出現。

讀已提交仍然是比較低級別的隔離,並不保證再次讀取時能夠獲取同樣的數據,也就是允許其他事務併發修改數據,允許不可重複讀和幻象讀(Phantom Read)出現。

可重複讀(Repeatable reads),保證同一個事務中多次讀取的數據是一致的,這是 MySQL InnoDB 引擎的默認隔離級別,但是和一些其他數據庫實現不同的是,可以簡單認爲 MySQL 在可重複讀級別不會出現幻象讀。

串行化(Serializable),併發事務之間是串行化的,通常意味着讀取需要獲取共享讀鎖,更新需要獲取排他寫鎖,如果 SQL 使用 WHERE 語句,還會獲取區間鎖(MySQL 以 GAP 鎖形式實現,可重複讀級別中默認也會使用),這是最高的隔離級別。

三個範式:

ORM框架原理:

索引相關:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章