MySQL兩種儲存引擎區別

2021-08-14 19:43:17 字數 968 閱讀 5544

innodb引擎:

innodb引擎提供了對資料庫acid事務的支援,並且實現了sql標準的四種隔離級別。該引擎還提供了行級鎖和外來鍵約束,他設計的目的是處理大容量資料庫系統,它本身就是基於mysql的完整的資料庫系統,mysql執行時innodb會在記憶體中建立緩衝池,用來緩衝資料和索引。innodb引擎對fulltext索引是mysql5.6之後新引入的特性(之前只有myisam引擎支援fulltext索引),而且他沒有儲存表的行數,當select count(*) from table時需要掃瞄全表。當需要使用資料庫事務時,該引擎當然是首選。由於鎖的粒度更小,寫操作不會鎖定全表,所以在併發高時,使用innodb引擎會提公升效率。但是使用行級鎖也不是絕對的,如果在執行乙個sql語句時mysql不能確定要掃瞄的範圍,innodb表同樣會鎖定全表。

myiasm引擎:

myiasm引擎是mysql的預設引擎,但是它沒有對資料庫事務的支援,也不支援行級鎖和外來鍵,因此當執行寫操作時需要鎖定整個表,效率便會低一些。不過和innodb不同,myiasm中儲存了表的行數,於是select count(*)from table 時只需要直接讀取已經儲存好的值而不需要全表掃瞄。如果表的讀操作遠遠多於寫操作且不需要資料庫事物的支援,那麼myiasm也是很好的選擇。

主要區別:

1、myiasm是非事務安全的,而innodb是事務安全的

2、myiasm鎖的粒度是表級的,而innodb支援行級鎖

3、myiasm支援全文型別索引,innodb不支援全文型別索引

4、myiasm相對簡單,效率上要優於innodb,小型應用可以考慮使用

5、myiasm表儲存成檔案形式,快平台使用更方便

應用場景:

1、myiasm管理非事務表,提供高速儲存和檢索以及全文搜尋能力,如果在應用中執行大量select操作,應該選擇myiasm

2、innodb用於事務處理,具有acid事務支援等特性,如果在應用中執行大量insert和update操作,應該選擇innodb

Mysql 兩種儲存引擎的區別

1 支援acid的事務,支援事務的四種隔離級別 2 支援行級鎖及外來鍵約束 因此可以支援寫併發 3 不儲存總行數 4 乙個innodb引擎儲存在乙個檔案空間 共享表空間,表大小不受作業系統控制,乙個表可能分布在多個檔案裡 也有可能為多個 設定為獨立表空,表大小受作業系統檔案大小限制,一般為2g 受作...

Mysql的兩種儲存引擎以及區別

一 mysql的兩種儲存引擎 1 myisam 不支援事務,但是整個操作是原子性的 事務具備四種特性 原子性 一致性 隔離性 永續性 不支援外來鍵,支援表鎖,每次所住的是整張表 myisam的表鎖有讀鎖和寫鎖 兩個鎖都是表級別 表共享讀鎖和表獨佔寫鎖。在對myisam表進行讀操作時,不會阻塞其他使用...

mysql的兩種引擎 mysql的兩種儲存引擎

背景 最近在使用spring data jpa操作mysql,在使用jpa的自動建表功能之後,處理多對多關係 manytomany的時候,spring data jpa會給中間表的兩個欄位都加上外來鍵引用。當前使用的版本預設的資料庫儲存引擎為myisam。這種儲存引擎是為資料庫查詢效能而生的,不支援...