日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

索引方式:真的是用的B+Tree 吗?

發布時間:2024/4/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 索引方式:真的是用的B+Tree 吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Navicat 的工具中,創建索引,索引方式有兩種,Hash 和B Tree。

HASH:以KV 的形式檢索數據,也就是說,它會根據索引字段生成哈希碼和指針,指針指向數據。

哈希索引有什么特點呢?

第一個,它的時間復雜度是O(1),查詢速度比較快。因為哈希索引里面的數據不是按順序存儲的,所以不能用于排序。?

第二個,我們在查詢數據的時候要根據鍵值計算哈希碼,所以它只能支持等值查詢(= IN),不支持范圍查詢(> < >= <= between and)。

另外一個就是如果字段重復值很多的時候,會出現大量的哈希沖突(采用拉鏈法解決),效率會降低。

問題: InnoDB 可以在客戶端創建一個索引,使用哈希索引嗎?

https://dev.mysql.com/doc/refman/5.7/en/innodb-introduction.html

InnoDB utilizes hash indexes internally for its Adaptive Hash Index feature

直接翻譯過來就是:InnoDB 內部使用哈希索引來實現自適應哈希索引特性。

這句話的意思是InnoDB 只支持顯式創建B+Tree 索引,對于一些熱點數據頁,InnoDB 會自動建立自適應Hash 索引,也就是在B+Tree 索引基礎上建立Hash 索引,這個過程對于客戶端是不可控制的,隱式的。

我們在Navicat 工具里面選擇索引方法是哈希,但是它創建的還是B+Tree 索引,這個不是我們可以手動控制的。

上次課我們說到buffer pool 里面有一塊區域是Adaptive Hash Index 自適應哈希索引,就是這個。

這個開關默認是ON:

show variables like 'innodb_adaptive_hash_index';

從存儲引擎的運行信息中可以看到:

show engine innodb status\G

----------------------
BUFFER POOL AND MEMORY
----------------------
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------

因為B Tree 和B+Tree 的特性,它們廣泛地用在文件系統和數據庫中,例如Windows的HPFS 文件系統,Oracel、MySQL、SQLServer 數據庫。

?

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的索引方式:真的是用的B+Tree 吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。