mysql儲存引擎 以及事務的隔離機制

2021-09-09 07:18:23 字數 1770 閱讀 7835

mysql儲存引擎主流的分為三種

1 mysiam

這種儲存引擎分別使用三個問價來表述一張表 .frm檔案表示格式檔案(存放表結構).myd檔案表示資料檔案 表中的資料被儲存在這個檔案當中 .myi檔案儲存表當中的索引 同時支援壓縮節省儲存空間 還可以設定為唯讀 不支援事務

2innodb

這種儲存引擎是mysql預設的儲存引擎,每個innodb表在資料庫當中都已.frm檔案表示,支援事務 支援崩潰後自動恢復,多版本行級鎖定 支援外來鍵和引用的完整性 包括級聯刪除和更新

3 memory

這張儲存引擎 使用這種儲存引擎的表 它的資料和索引儲存再記憶體當中,且行的長度固定,執行速度非常快,但缺點是資料不是持久的

1).myisam適合大量資料的讀 少量資料的更新 另一種場景是 使用壓縮的唯讀表

2).如果查詢中包含較多的更新操作 應使用innodb其行級鎖機制和多版本的支援為資料讀取和更新提供了良好的併發機制

3).可使用memory儲存引擎來儲存非永久需要的資料,或是能夠基於磁碟的表中重新生成的資料

事務

事務是乙個最小的不可再分的工作單元,通常乙個事物對應乙個完整的業務,而乙個完整的業務需要批量的(insert update delete)dml語句共同協作完成。之和dml語句有關係

原子性a

事務是最小的工作單元 不可再分

一致性c

事務必須要求所有的dml語句必須同時成功 或同時失敗

隔離性i

事務a和事務b之間具有隔離性

隔離性有隔離級別 4個

-讀未提交 read uncommited

-讀已提交 read commited

-可重複度 repeatable read

-序列化 serializable

永續性

是事務的保證,事務終結的標誌

讀未提交

事務a 和事務b 事務a未提交的資料,事務b可以讀到,這裡讀取到的資料可以叫做髒資料(髒讀),這種隔離級別是最低階的級別 資料庫預設的隔離級別應該高於該級別

讀已提交

事務a 和事務b 事務a 提交的資料 事務b 才能讀取到,這種級別高於上面的級別,換句話說 對方事務提交之後的資料,事務b才能讀取到

這種隔離級別 可以避免髒資料,但是有可能導致不可重複讀取

可重複讀

事務a 和事務b 事務a提交之後的資料 事務b 讀取不到,

事務b是可重複讀取資料的

這種隔離級別高於讀已提交,換句話說:對方提交的資料 我還是讀不到,可以避免不可重複度 達到可重複讀

序列化

事務a和事務b,事務a 在運算元據庫中資料的時候,事務b只能排隊等待,這種事務隔離級別一般很少用,吞吐量太低,使用者體驗不好,可避免「幻象讀」,每一次讀取的都是資料庫表中的真實記錄,事務a和事務b 不再併發

在執行過程中,未結束之前,dml語句是不會更改底層資料庫當中的檔案中的資料,只是將歷史操作在記憶體當中記錄一下,只有在事務結束的時候,而且是成功結束的時候,才會修改底層硬碟檔案中的資料

在mysql資料庫管理系統當中,預設情況下 事務是支援自動提交的,也就是說,只要執行一條dml語句 開啟事務並且提交事務,

MySQL資料庫事務以及儲存引擎

儲存引擎 跨引擎事務 在 mysql 命令列的預設設定下,事務都是自動提交的,即執行 sql 語句後就會馬上執行 commit 操作。因此要顯式地開啟乙個事務務須使用命令begin或start transaction,或者執行命令set autocommit 0,用來禁止使用當前會話的自動提交。用 ...

MySQL索引 事務 儲存引擎

索引建立的方法 建立索引的原則依據 檢視索引的方法 刪除索引的方法 事務的概念 事務的acid特點 事務控制語句 事務的控制方法 儲存引擎概念介紹 業選擇儲存引擎依據 修改儲存引擎 注 no unique為0 注 no unique為1 注 屬於唯一性索引的一種 直接建立索引 修改表結構方式新增索引...

mysql儲存引擎,事務,事務回滾

檢視已有表的使用儲存引擎 show create table 表名 g 檢視當前資料庫的預設儲存引擎和可提供的儲存引擎 show engines 修改儲存引擎 step1 修改配置檔案 etc my.cnf default storage engine 儲存引擎 step2 重啟mysqld服務 修...