MySQL實戰45講 事物隔離(筆記)

2021-10-08 08:41:47 字數 1067 閱讀 5360

事務就是要保證一組資料庫操作,要麼全部成功,要麼全部失敗。在 mysql 中,事務支援是在引擎層實現的。innodb支援事務。

隔離得越嚴實,效率就會越低。

在實現上,資料庫裡面會建立乙個檢視,訪問的時候以檢視的邏輯結果為準。

在 mysql 中,實際上每條記錄在更新的時候都會同時記錄一條回滾操作。記錄上的最新值,通過回滾操作,都可以得到前乙個狀態的值。回滾日誌在不需要的時候才刪除。也就是說,系統會判斷,當沒有事務再需要用到這些回滾日誌時,回滾日誌會被刪除。

長事務意味著系統裡面會存在很老事務檢視。由於這些事務隨時可能訪問資料庫裡面的任何資料,所以這個事務提交之前,資料庫裡面它可能用到的回滾記錄都必須保留,這就會導致大量占用儲存空間。長事務還占用鎖資源,也可能拖垮整個庫。

1、顯式啟動事務語句beginstart transaction。配套的提交語句是commit,回滾語句是rollback

2、set autocommit=0,這個命令會將這個執行緒的自動提交關掉。意味著如果你只執行乙個select語句,這個事務啟動了,而且並不會自動提交。這個事務持續存在直到你主動執行commitrollback語句,或者斷開連線。

autocommit為 1 的情況下,用begin顯式啟動的事務,如果執行commit則提交事務。如果執行commit work and chain,則是提交事務並自動啟動下乙個事務,這樣也省去了再次執行begin語句的開銷。

實戰mysql45講 MySQL實戰45講

作者簡介 林曉斌,網名 丁奇 前阿里資深技術專家,曾負責阿里雲rds核心開發團隊和運維團隊,並推動了alisql分支開源。作為活躍的mysql社群貢獻者,丁奇專注於資料儲存系統 mysql原始碼研究和改進 mysql效能優化和功能改進,熱衷於解決mysql疑難問題。課程亮點 你將獲得 前阿里資深技術...

MySQL實戰45講之2 事務隔離級別

讀未提交 別人改資料的事務尚未提交,我在我的事務中也能讀到。讀已提交 別人改資料的事務已經提交,我在我的事務中才能讀到。可重複讀 別人改資料的事務已經提交,我在我的事務中也不去讀。序列 我的事務尚未提交,別人就別想改資料。這4種隔離級別,並行效能依次降低,安全性依次提高。在實現上,資料庫裡面會建立乙...

mysql實戰45講筆記 07

07 行鎖功過 怎麼減少行鎖對效能的影響 mysql的行鎖是在引擎層由各個引擎自己實現的,不是所有資料庫都支援行鎖比如myisam 行鎖就是針對資料表中行記錄的鎖。在innodb事務中,行鎖是在需要的時候才加上的,但並不是不需要了就立刻回訪,而是等到事務結束時才釋放,這就是兩階段鎖協議。因此,如果事...