innodb引擎(該引擎在5.5後的mysql資料庫中為預設儲存引擎。)
innodb引擎提供了對資料庫acid事務的支援。並且還提供了行級鎖和外來鍵的約束。它的設計的目標就是處理大資料容量的資料庫系統。它本身實際上是基於mysql後台的完整的系統。mysql執行的時候,innodb會在記憶體中建立緩衝池,用於緩衝資料和索引。但是,該引擎是不支援全文搜尋的。同時,啟動也比較的慢,它是不會儲存表的行數的。當進行select count(*) from table指令的時候,需要進行掃瞄全表。所以當需要使用資料庫的事務時,該引擎就是首選。由於鎖的粒度小,寫操作是不會鎖定全表的。所以在併發度較高的場景下使用會提公升效率的。
大容量的資料集時趨向於選擇innodb。因為它支援事務處理和故障的恢復。innodb可以利用資料日誌來進行資料的恢復。主鍵的查詢在innodb也是比較快的。
innodb引擎的索引的資料結構是b+樹,只不過資料結構中儲存的都是實際的資料,這種索引有被稱為聚集索引。
myiasm引擎(該引擎在5.5前的mysql資料庫中為預設儲存引擎。)
myiasm引擎不提供事務的支援,也不支援行級鎖和外來鍵。因此當執行insert插入和update更新語句時,即執行寫操作的時候需要鎖定這個表。所以會導致效率會降低。不過和innodb不同的是,myiasm引擎是儲存了表的行數,於是當進行select count(*) from table語句時,可以直接的讀取已經儲存的值而不需要進行掃瞄全表。所以,如果表的讀操作遠遠多於寫操作時,並且不需要事務的支援的。可以將myiasm作為資料庫引擎的首先。
大批量的插入語句時(這裡是insert語句)在myiasm引擎中執行的比較的快,但是update語句在innodb下執行的會比較的快,尤其是在併發量大的時候。
myiasm引擎,b+樹的資料結構中儲存的內容實際上是實際資料的位址值。也就是說它的索引和實際資料是分開的,只不過使用索引指向了實際資料。這種索引的模式被稱為非聚集索引。
mysql的兩種主要引擎
innodb引擎 該引擎在5.5後的mysql資料庫中為預設儲存引擎。innodb引擎提供了對資料庫acid事務的支援。並且還提供了行級鎖和外來鍵的約束。它的設計的目標就是處理大資料容量的資料庫系統。它本身實際上是基於mysql後台的完整的系統。mysql執行的時候,innodb會在記憶體中建立緩衝...
Mysql兩種主要資料引擎的區別
innodb和myisam是在使用mysql最常用的兩個表型別,它們各有各的優點,視具體應用而定。innodb引擎 該引擎在5.5後的mysql資料庫中為預設儲存引擎。innodb引擎提供了對資料庫acid事務的支援,並且實現了sql標準的四種隔離級別。該引擎還提供了行級鎖和外來鍵約束,它的設計目標...
mysql的兩種引擎 mysql的兩種儲存引擎
背景 最近在使用spring data jpa操作mysql,在使用jpa的自動建表功能之後,處理多對多關係 manytomany的時候,spring data jpa會給中間表的兩個欄位都加上外來鍵引用。當前使用的版本預設的資料庫儲存引擎為myisam。這種儲存引擎是為資料庫查詢效能而生的,不支援...