最近回頭看了一下《mysql從入門到放棄》這本書,專門看了看我們經常使用的innodb引擎,現在記錄一下學習的內容吧。
有錯誤請指正。
Mysql5.5後默認引擎爲innodb
innodb特性
innodb支持事務,支持行鎖,支持外鍵。是一個專門爲大容量存儲設計的存儲引擎。默認索引b+tree。
關於事務,可以參照:mysql 事務ACID
關於行鎖,可以參照: mysql 行鎖
B-tree
關於B-tree這裏先簡述一下,後續有空補上關於b-tree 和b+tree的內容。
B-tree是一種專門爲外部存儲設備設計平衡多路查找樹。磁盤存儲是分磁盤塊的,每個塊存儲他的主鍵還有data,b-tree將數據排序,然後再數據前後分別有指針指向小於, 等於,大於他的數據所在磁盤塊。這樣在儘量少的IO次數下,通過二分查找,快速定位所需數據。
Mysql使用的b+tree是在b-tree基礎上改進的,將所有數據放在同一個葉節點上,減少查找樹的高度,更多減少磁盤IO次數。
所以這也就是爲什麼mysql主鍵推薦使用自增。因爲他的主鍵(聚集索引)在物理上連續,這樣在查找數據是,通過B+tree減少排序帶來的性能影響。並且主鍵較小,也減少了磁盤的佔用空間。
關於主鍵選擇自增,UUID還是雪花算法,回來再專門開一個博客寫吧。