io讀取方式:順序讀寫 和 隨機讀寫
順序讀寫:速度比較快,區域性性原理:發現程式和資料的訪問都有聚集成群的傾向,在乙個時間段內,僅使用其中一小部分(空間區域性性),或者最近訪問過的程式**和資料,很快又被訪問的可能性很大(時間區域性性)。
磁碟預讀(預讀的長度一般為頁(page)的整數倍)
頁是儲存器的邏輯塊,作業系統往往將主存和磁碟儲存區分割為連續的大小相等的塊,每乙個儲存塊稱為一頁(頁大小通常為4k), 主存和磁碟以頁為單位交換資料
索引是幫助mysql高效獲取資料的資料結構
索引儲存在檔案系統中
索引的檔案儲存形式與儲存引擎有關
索引檔案的結構:
hash:陣列加鍊表的資料結構。
缺點:1、利用hash儲存的話需要將所有的資料檔案新增到記憶體,比較消耗記憶體空間
2、等值查詢速度快,但是範圍查詢用不了
二叉樹、紅黑樹:
缺點:都會因為樹的深度過深而造成io次數變多,影響資料讀取的效率
b樹:
特點:
1、所有的鍵值分布在整顆樹中
2、搜尋有可能在非葉子節點結束,在關鍵字全集內做一次查詢,效能逼近二分查詢
3、每個節點最多擁有m個子樹
4、根節點至少有兩個子樹
5、分支節點至少擁有m/2顆子樹
6、所有葉子節點都在同一層,每個節點最多可以有m-1個key,並且以公升序排列
缺點:每乙個磁碟塊的空間是有限制的,比如是4k,這個時候,有可能因為data的資料很大,而導致樹的深度加深
三次io就可以取到值
mysql索引的五種型別:主鍵索引、唯一索引、普通索引和全文索引、組合索引
主鍵索引:主鍵是一種唯一性索引,但它必須指定為primary key,每個表只能有乙個主鍵
唯一索引:索引列的所有值都只可能出現一次,即必須唯一,值可以為空
普通索引:基本的索引型別,值可以為空,沒有唯一性的限制、
這三行知識,必須得說得出來
聚簇索引:innodb 的資料檔案只有乙個,索引和資料放在乙個檔案
非聚簇索引:mylsam的索引分為兩個檔案,索引和資料是分開的
索引的分類
注意 索引是在儲存引擎中實現的,也就是說不同的儲存引擎,會使用不同的索引。myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用btree,不能夠更換。memory heap儲存引擎 支援hash和btree索引。1 索引我們分為四類來講單列索引 普通索引,唯一索引,主鍵索引 組...
索引的分類 B Tree索引和Hash索引
索引是儲存引擎用來快速查詢記錄的一種資料結構,按照實現的方式有不同的種類,想b tree索引,hash索引,空間資料索引和全文索引等。下面主要說一下b tree索引和hash索引。人們在談論索引的時候如果沒有特別說明,一般指的是b tree索引。b tree索引是使用b tree資料結構來儲存索引的...
索引的分類 B Tree索引和Hash索引
索引是儲存引擎用來快速查詢記錄的一種資料結構,按照實現的方式有不同的種類,想b tree索引,hash索引,空間資料索引和全文索引等。下面主要說一下b tree索引和hash索引。人們在談論索引的時候如果沒有特別說明,一般指的是b tree索引。b tree索引是使用b tree資料結構來儲存索引的...