mysql筆記 事務

2021-08-08 19:11:18 字數 645 閱讀 9070

寫日誌為什麼比直接寫磁碟要快?

使用事務日誌,儲存引擎在修改表的資料時,只需要修改其記憶體拷貝,再把該修改行為記錄到硬碟上的事務日誌中,而不用每次都將修改的資料本身持久到磁碟。事務日誌採用的是追加的方式,因此寫日誌的操作是磁碟上一小塊區域內的順序i/o,而不是隨機i/o,所以快很多。事務日誌持久以後,記憶體中被修改的資料在後台可以慢慢地刷回到磁碟。此方式稱之為,預寫式日誌,修改資料需要寫兩次磁碟

如果資料的修改已經紀錄到事務日誌中,但資料本身還沒有寫回磁碟,此時系統崩潰,儲存引擎在重啟時,能夠自動恢復這部分修改的資料

innodb採用的是兩階段鎖定協議(two-phase locking protocol)。

隱式鎖定:innodb會根據隔離級別在需要的時候自動加鎖,並在執行commit或rollback時釋放。

顯式鎖定:innodb也支援通過特定的語句進行顯式鎖定,這些語句不屬於sql規範。

select ... lock

in share mode;

select ... for

update;

mysql 筆記 事務

一 問題讀取 1.髒讀 dirty read 事務1更新了某一條記錄,但未提交 事務2讀取到新的未提交記錄 事務1回滾。2.不可重複讀取 nonrepeatable read 不可重複讀,是指在資料庫訪問中,乙個 事務範圍內兩個相同的查詢卻返回了不同資料。例子 事務1讀取某一條記錄 事務2修改事務1...

Mysql筆記 事務

事務 transaction 會把資料庫從一種一致狀態轉換為另一種一致狀態。在資料庫提交工作時,要麼所有修改都已經儲存了,要麼修改都不儲存。事務是訪問並更新資料庫中各種資料項的乙個程式執行單元。在執行中要麼都做修改,要麼都不做修改。innodb儲存引擎中的事務完全符合acid的特性。l 原子性 at...

MySQL學習筆記 事務

事務是用來保證一組資料庫的操作,要麼全部成功,要麼全部失敗 應用場景較多 如銀行轉賬,訂票等。mysql的事務是在引擎層支援的,原生的myisam不支援,因此主流使用innodb引擎。原子性顧名思義,不可分割,要麼所有指令都成功,要麼所有指令都失敗 一致性事務開始前和事務結束後,資料庫的狀態都是正常...