mysql的經常使用引擎

https://www.cnblogs.com/xiaohaillong/p/6079551.htmlhtml

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

首先:數據庫

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

1.併發

a.Innodb引擎,Innodb引擎提供了對數據庫ACID事務的支持。而且還提供了行級鎖和外鍵的約束。它的設計的目標就是處理大數據容量的數據庫系統。它自己其實是基於Mysql後臺的完整的系統。Mysql運行的時候,Innodb會在內存中創建緩衝池,用於緩衝數據和索引。可是,該引擎是不支持全文搜索的。同時,啓動也比較的慢,它是不會保存表的行數的。當進行Select count(*) from table指令的時候,須要進行掃描全表。因此當須要使用數據庫的事務時,該引擎就是首選。因爲鎖的粒度小,寫操做是不會鎖定全表的。因此在併發度較高的場景下使用會提高效率的。post

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

補充2點:spa

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

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

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

答案:都是B+樹!

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

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

參考:http://blog.csdn.net/lulei1217/article/details/50954232

相關文章
相關標籤/搜索