二、儲存引擎
索引是在儲存引擎層實現的,而不是在伺服器層實現的,所以不同儲存引擎具有不同的索引型別和實現。
b+樹是大多數mysql 儲存引擎的預設索引型別。
因為不再需要進行全表掃瞄(類似於漢語字典中一頁一頁的去查詢乙個漢字),只需要對樹進行搜尋即可(類似於利用漢語字典中的目錄頁去快速定位乙個漢字,索引等效於目錄的功能),所以查詢速度快很多。
因為 b+ tree 的有序性,所以除了用於查詢,還可以用於排序(order by)和分組(group by)。
innodb 的 b+tree 索引分為主索引和輔助索引。主索引的葉子節點 data 域記錄著完整的資料記錄,這種索引方式被稱為聚簇索引。
輔助索引的葉子節點的 data 域記錄著主鍵的值,因此在使用輔助索引進行查詢時,需要先查找到主鍵值,然後再到主索引中進行查詢。
我們根據實際情況自行新增的索引都是輔助索引,輔助索引就是乙個為了找到主鍵索引的乙個二級索引,先找到主鍵索引再通過主鍵索引找到行記錄資料;
注:
雜湊索引能以 o(1) 時間進行查詢,但是失去了有序性:
innodb 儲存引擎有乙個特殊的功能叫「自適應雜湊索引」,當某個索引值被使用的非常頻繁時,會在 b+ tree 索引之上再建立乙個雜湊索引,這樣就讓 b+ tree 索引具有雜湊索引的一些優點,比如快速的雜湊查詢。
mysql 預設的事務型儲存引擎,只有在需要它不支援的特性時,才考慮使用其它儲存引擎。
實現了四個標準的隔離級別,預設級別是可重複讀(repeatable read)。在可重複讀隔離級別下,通過多版本併發控制(mvcc)+ next-key locking 防止幻影讀。
主索引是聚簇索引,在索引中儲存了資料,從而避免直接讀取磁碟,因此對查詢效能有很大的提公升。
內部做了很多優化,包括從磁碟讀取資料時採用的可**性讀、能夠加快讀操作並且自動建立的自適應雜湊索引、能夠加速插入操作的插入緩衝區等。
設計簡單,資料以緊密格式儲存。對於唯讀資料,或者表比較小、可以容忍修復操作,則依然可以使用它。
提供了大量的特性,包括壓縮表、空間資料索引等。
不支援事務。
不支援行級鎖,只能對整張表加鎖,讀取時會對需要讀到的所有表加共享鎖,寫入時則對錶加排它鎖。但在表有讀取操作的同時,也可以往表中插入新的記錄,這被稱為併發插入(concurrent insert)。
可以手工或者自動執行檢查和修復操作,但是和事務恢復以及崩潰恢復不同,可能導致一些資料丟失,而且修復操作是非常慢的。
如果指定了 delay_key_write 選項,在每次修改執行完成時,不會立即將修改的索引資料寫入磁碟,而是會寫到記憶體中的鍵緩衝區,只有在清理鍵緩衝區或者關閉表的時候才會將對應的索引塊寫入磁碟。這種方式可以極大的提公升寫入效能,但是在資料庫或者主機崩潰時會造成索引損壞,需要執行修復操作。
參考:
Shell學習筆記 未完待續
一 cat的用法總結 cat是乙個簡單而通用的命令,用來顯示內容,建立檔案,還可以用來顯示控制字元 但是在使用cat是請注意,它不會在檔案分頁符處停下來,它會一下顯示完整個檔案。如果希望每次顯示一頁,可以使用more或者cat命令的輸出通過管道傳遞到另外乙個具有分頁功能的命令中 cat myfile...
FasttDFS學習筆記(未完待續。。。)
fastdfs client 客戶 ke lai en te storage 儲存 si dong rui zi tracker 追蹤者 chuan ke 英語不好見笑。奸笑 什麼是fastdfs 2.fastdfs架構 trecker server 作用是負載均衡和排程,通過trecker ser...
FasttDFS學習筆記(未完待續。。。)
fastdfs client 客戶 ke lai en te storage 儲存 si dong rui zi tracker 追蹤者 chuan ke 英語不好見笑。奸笑 什麼是fastdfs 2.fastdfs架構 trecker server 作用是負載均衡和排程,通過trecker ser...