1. 程式人生 > >Mysql資料庫常用引擎的介紹

Mysql資料庫常用引擎的介紹

Mysql資料庫中,常用的引擎主要就是2個:InnodbMyIASM。這篇文章將主要介紹這兩個引擎,以及該如何去選擇引擎,最後在提一下這2種引擎所使用的資料結構是什麼。

首先介紹一下Innodb引擎。

Innodb引擎提供了對資料庫ACID事務的支援。並且還提供了行級鎖和外來鍵的約束。它的設計的目標就是處理大資料容量的資料庫系統。它本身實際上是基於Mysql後臺的完整的系統。Mysql執行的時候,Innodb會在記憶體中建立緩衝池,用於緩衝資料和索引。但是,該引擎是不支援全文搜尋的。同時,啟動也比較的慢,它是不會儲存表的行數的。當進行Select count(*) from table

指令的時候,需要進行掃描全表。

所以當需要使用資料庫的事務時,該引擎就是首選。由於鎖的粒度小,寫操作是不會鎖定全表的。所以在併發度較高的場景下使用會提升效率的。

 

接下來來說說MyIASM引擎。它是MySql的預設引擎,但不提供事務的支援,也不支援行級鎖和外來鍵。因此當執行Insert插入和Update更新語句時,即執行寫操作的時候需要鎖定這個表。所以會導致效率會降低。不過和Innodb不同的是,MyIASM引擎是儲存了表的行數,於是當進行Select count(*) from table語句時,可以直接的讀取已經儲存的值而不需要進行掃描全表。

所以,如果表的讀操作遠遠多於寫操作時,並且不需要事務的支援的。可以將MyIASM作為資料庫引擎的首先。

 

我們在來說說這兩種引擎的選擇。其實上面已經提到了。這裡我在補充了兩點:

1、大容量的資料集時趨向於選擇Innodb。因為它支援事務處理和故障的恢復。Innodb可以利用資料日誌來進行資料的恢復。主鍵的查詢在Innodb也是比較快的。

2、大批量的插入語句時(這裡是INSERT語句)在MyIASM引擎中執行的比較的快,但是UPDATE語句在Innodb下執行的會比較的快,尤其是在併發量大的時候。

 

最後我們再來說說兩種引擎所使用的索引的資料結構是什麼?答案是都是B+

樹。

對於MyIASM引擎來說,B+樹的資料結構中儲存的內容實際上是實際資料的地址值。也就是說它的索引和實際資料是分開的,只不過使用索引指向了實際資料。這種索引的模式被稱為非聚集索引。

Innodb引擎的索引的資料結構也是B+樹,只不過資料結構中儲存的都是實際的資料,這種索引有被稱為聚集索引。