Mysql的架構和歷史(二)

2021-08-06 02:33:23 字數 872 閱讀 8601

事務

隔離級別

sql標準定義了四種隔離級別

read uncommitted(未提交讀):在這個級別中所有事務可以讀取到當前事務對資料所正在進行的修改操作。

read committed(提交讀):該級別,所有事務只能讀取到事務提交之後的資料只要事務沒有提交的話,那麼其他事務是不可見的,這個級別也叫作不可重複讀(nonrepeatable read)。

repeatable read(可重複讀):這個級別中解決了髒讀的問題,保證了同一事物中多次讀取相同的記錄結果是一致的。但是同時出現了另乙個問題,就是幻讀(所謂幻讀就是在讀取某一指定方位內的資料,另乙個事務在新增操作,而恰好在該事物讀取資料範圍內,那麼就出現了幻行的情況)。innodb儲存引擎通過多版本併發控制(mvcc,multiversion concurrency control)解決幻讀問題。

serializable(可序列化):該級別為最高隔離級別,所有事務都必須序列化提交,那麼也就避免了髒讀,幻讀等問題,但是效率不高。

死鎖

死鎖指的是:兩個或者多個事務在同一資源上相互占用,並請求鎖定對方所占用的資源,從而導致惡性迴圈的現象;在使用innodb作為儲存引擎的時候,他會檢測當前是否有死鎖的迴圈依賴,一旦出現,解決方案是將持有最少行的排他鎖進行回滾。

事務日誌

事務主要是提高事務的效率,使用追加的形式通過從記憶體中的修改資料通過日誌的記錄形式先持久化到事務日誌中,然後通過讀取事務日誌的記錄再次同步到磁碟中,這種方式稱之為預寫式日誌;乙個修改資料通過是需要對磁碟進行修改兩次。

mysql中的事務

多版本併發控制

mysql的記憶體引擎

MySql的架構和歷史

架構為如下 儲存引擎 負責資料的儲存和提取,供了幾十個api供服務層進行呼叫。各個儲存引擎之間不會進行互動,只是供服務層進行呼叫。事務控制和鎖的管理也是在儲存引擎裡面進行。服務層 乙個sql過來之後,會在服務層進行解析,建立解析樹,呼叫底層的儲存引擎得到各種開銷資訊和統計資訊,進行各種優化,決定表的...

Mysql歷史架構筆記

開發5.0版,他將增加儲存過程 伺服器端游標,觸發器,檢視,xa事務,查詢優化器重大改進及許多其他特性。2004年10月4.1版穩定了 5.0版則在一年以後變得穩定,時間是2005年10月。mysql的架構 核心模組 可在伺服器識別出下列模組 伺服器初始化模組 連線管理器 執行緒管理器 使用者驗證模...

MySQL架構與歷史

所以基於此,資料庫實現了各種死鎖檢測和死鎖超時機制目前innodb採取的方案是 將持有最少行級排他鎖的事務進行回滾。處理死鎖 大多數情況下只需要重新執行因死鎖回滾的事務即可。事務日誌 mysql中的事務 一般建議 除非禁用了自動提交 才可以使用lock tables之外 其他熱河時候都不要顯示的執行...