1. 程式人生 > >Mysql常用儲存引擎——與——索引

Mysql常用儲存引擎——與——索引

1、InnoDB儲存引擎
InnoDB相對來說屬於一種均衡性的儲存引擎,中規中矩,各方面都還不錯,最大的特點是支援事物

2、MyISAM儲存引擎
MyISAM的查詢效率很高,但是不支援事物

Mysql5.5之後預設都使用InnoDB

索引:優化查詢
索引是優化查詢的,索引一般加在查詢機率大的欄位上,但是如果有很多欄位的查詢機率都很大,就不要加了。因為索引的底層機制是一個B+樹,每次新增或者刪除一個數據,資料結構都要進行調整,如果一個表加了20個索引,那麼加一條資料至少要提煉20個數據,會導致效能嚴重下降。所以,濫用索引會導致效能嚴重下降

B+樹是對B樹的一種變形樹,它與B樹的差異在於:

有k個子結點的結點必然有k個關鍵碼;
非葉結點僅具有索引作用,跟記錄有關的資訊均存放在葉結點中。
樹的所有葉結點構成一個有序連結串列,可以按照關鍵碼排序的次序遍歷全部記錄。

B和B+樹的區別在於,B+樹的非葉子結點只包含導航資訊,不包含實際的值,所有的葉子結點和相連的節點使用連結串列相連,便於區間查詢和遍歷。

B+ 樹的優點在於:

由於B+樹在內部節點上不包含資料資訊,因此在記憶體頁中能夠存放更多的key。 資料存放的更加緊密,具有更好的空間區域性性。因此訪問葉子節點上關聯的資料也具有更好的快取命中率。
B+樹的葉子結點都是相鏈的,因此對整棵樹的便利只需要一次線性遍歷葉子結點即可。而且由於資料順序排列並且相連,所以便於區間查詢和搜尋。而B樹則需要進行每一層的遞迴遍歷。相鄰的元素可能在記憶體中不相鄰,所以快取命中性沒有B+樹好。
但是B樹也有優點,其優點在於,由於B樹的每一個節點都包含key和value,因此經常訪問的元素可能離根節點更近,因此訪問也更迅速。