SQL筆記(14)——事務
資料庫事務( transaction)是訪問並可能操作各種資料項的一個資料庫操作序列,這些操作要麼全部執行,要麼全部不執行,是一個不可分割的工作單位。事務由事務開始與事務結束之間執行的全部資料庫操作組成。
詳情參見:https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1/9744607
Read Uncommitted
Read Uncommitted是隔離級別最低的一種事務級別。在這種隔離級別下,一個事務會讀到另一個事務更新後但未提交的資料,如果另一個事務回滾,那麼當前事務讀到的資料就是髒資料,這就是髒讀(Dirty Read)。
Read Committed
在Read Committed隔離級別下,一個事務可能會遇到不可重複讀(Non Repeatable Read)的問題。
不可重複讀是指,在一個事務內,多次讀同一資料,在這個事務還沒有結束時,如果另一個事務恰好修改了這個資料,那麼,在第一個事務中,兩次讀取的資料就可能不一致。
Repeatable Read
在Repeatable Read隔離級別下,一個事務可能會遇到幻讀(Phantom Read)的問題。
幻讀是指,在一個事務中,第一次查詢某條記錄,發現沒有,但是,當試圖更新這條不存在的記錄時,竟然能成功,並且,再次讀取同一條記錄,它就神奇地出現了。
Serializable
Serializable是最嚴格的隔離級別。在Serializable隔離級別下,所有事務按照次序依次執行,因此,髒讀、不可重複讀、幻讀都不會出現。
雖然Serializable隔離級別下的事務具有最高的安全性,但是,由於事務是序列執行,所以效率會大大下降,應用程式的效能會急劇降低。如果沒有特別重要的情景,一般都不會使用Serializable隔離級別。
預設隔離級別
如果沒有指定隔離級別,資料庫就會使用預設的隔離級別。在MySQL中,如果使用InnoDB,預設的隔離級別是Repeatable Read。
相關文章
- 筆記:DB常用sql列印+事務使用筆記SQL
- Spring事務筆記Spring筆記
- MySQL 筆記 - 事務&鎖MySql筆記
- SQL事務SQL
- SQL--事務SQL
- MySQL全面瓦解14:事務MySql
- sql筆記SQL筆記
- [高效能MYSQL學習筆記]事務MySql筆記
- MySQL-14.MySQL事務日誌MySql
- 7/14 訓練筆記筆記
- java筆記14之privateJava筆記
- MySQL事務學習筆記(三) 甚歡篇MySql筆記
- MySQL事務學習筆記(二) 相識篇MySql筆記
- mysql隱式提交事務transaction一點筆記MySql筆記
- MySQL事務學習筆記(一) 初遇篇MySql筆記
- Spring 事務學習筆記(一) 初遇篇Spring筆記
- 筆記53-Spring jdbcTemplate&宣告式事務筆記SpringJDBC
- Spring學習筆記3(JDBC模板&事務管理)Spring筆記JDBC
- 事務隔離級別讀書筆記分享筆記
- Spring筆記(4) - Spring的程式設計式事務和宣告式事務詳解Spring筆記程式設計
- sql server中巢狀事務*SQLServer巢狀
- MySQL 學習筆記(一)MySQL 事務的ACID特性MySql筆記
- 十四:事務Event的生成和寫入流程(筆記)筆記
- 十五:MySQL層事務提交流程簡析(筆記)MySql筆記
- SQL學習筆記SQL筆記
- Oracle 常用SQL筆記OracleSQL筆記
- SQL-Server筆記SQLServer筆記
- UML筆記——14種UML圖筆記
- Java學習筆記3事務的四大特性Java筆記
- MYSQL學習筆記14: 函式MySql筆記函式
- 學習筆記14:模型儲存筆記模型
- vue 基礎入門筆記 14Vue筆記
- Cris 的 Spark SQL 筆記SparkSQL筆記
- 暑期自學 Day 14 | 資料庫 (七)- 事務資料庫
- 深入淺出事務的本質,附 OceanBase 事務解析14問!
- leetcode學習筆記14 Longest Common PrefixLeetCode筆記
- 我的C#學習筆記14C#筆記
- 《SQL 反模式》 學習筆記SQL模式筆記