mysql數據庫的理解

1.索引結構原理:

普通的Btree(binary search tree)就是二叉樹,如下圖

B+ Tree索引類型則是二叉樹的升級版,每個節點存的是 <num ,最後存排序的ROWID

 Hash索引

2.數據庫結構

3.數據庫存儲

 4.數據塊/頁(block/page)

 指訪問磁盤數據庫文件最小的單位,一個數據庫塊中可以存放多條數據(一條指表的一行數據),大小可以指定。多個數據塊組成數據文件。因爲是訪問數據庫最小的單位,所以一個數據塊中記錄的一條數據越小,存放的數據就越多,在讀取數據時減少訪問不同數據塊的次數,從而提高效率。

5.ROWID

ROWID是每條記錄在數據庫中的唯一標識,通過ROWID可以直接定位記錄到對應的文件號及數據塊位置。ROWID內容包括文件號、對像號、數據塊號、記錄槽號.索引最後存儲的文件位置便是 ROWID

如下圖所示:

6.索引創建的理解

通過索引篩選結果必須足夠小的字段添加索引纔有意義,如果篩選結果非常多,那麼將放棄使用索引改爲全表掃描,因爲來回通過索引查詢結果,不如直接全表掃描來的快。

索引使用大致流程:當創建好索引後,從索引結果集中每次取ROWID,然後去對應地方找數據,然後再去從結果集中取數據進行循環操作。如果結果集非常大,則不如直接全表掃描的快。

創建規則:

 創建在 篩選結果集非常小的字段中(小於全表的10%),否則使用全表掃描

 創建在 where子句中,並且頻率較高。

 創建在 查詢大於修改刪除的字段中

 不要在大數據量的字段中創建索引

 7.mysql沒有像orical的軟解析,硬解析,但是mysql的硬解析和orical的軟解析一樣快。

相關網址:http://blog.jobbole.com/100349/

https://blog.csdn.net/yzllz001/article/details/54848513

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章