1. 程式人生 > >MySQL數據庫常用引擎

MySQL數據庫常用引擎

ID 大數據 默認 update 補充 mys 進行 存儲 地址

在MySQL數據庫中,常用的引擎主要就是2個:Innodb和MyIASM。

首先:

1.簡單介紹這兩種引擎,以及該如何去選擇。
2.這兩種引擎所使用的數據結構是什麽。

1.

a.Innodb引擎,Innodb引擎提供了對數據庫ACID事務的支持。並且還提供了行級鎖和外鍵的約束。它的設計的目標就是處理大數據容量的數據庫系統。它本身實際上是基於Mysql後臺的完整的系統。Mysql運行的時候,Innodb會在內存中建立緩沖池,用於緩沖數據和索引。但是,該引擎是不支持全文搜索的。同時,啟動也比較的慢,它是不會保存表的行數的。當進行Select count(*) from table指令的時候,需要進行掃描全表。所以當需要使用數據庫的事務時,該引擎就是首選。由於鎖的粒度小,寫操作是不會鎖定全表的。所以在並發度較高的場景下使用會提升效率的。

b.MyIASM引擎,它是MySql的默認引擎,但不提供事務的支持,也不支持行級鎖和外鍵。因此當執行Insert插入和Update更新語句時,即執行寫操作的時候需要鎖定這個表。所以會導致效率會降低。不過和Innodb不同的是,MyIASM引擎是保存了表的行數,於是當進行Select count(*) from table語句時,可以直接的讀取已經保存的值而不需要進行掃描全表。所以,如果表的讀操作遠遠多於寫操作時,並且不需要事務的支持的。可以將MyIASM作為數據庫引擎的首先。

補充2點:

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

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

2.兩種引擎所使用的索引的數據結構是什麽?

答案:都是B+樹!

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

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

MySQL數據庫常用引擎