![第二章sql性能優(yōu)化篇18講25hash索引底層原理_第1頁](http://file4.renrendoc.com/view/6cf0dc4ffb6f4969dc1b925a6b68130b/6cf0dc4ffb6f4969dc1b925a6b68130b1.gif)
![第二章sql性能優(yōu)化篇18講25hash索引底層原理_第2頁](http://file4.renrendoc.com/view/6cf0dc4ffb6f4969dc1b925a6b68130b/6cf0dc4ffb6f4969dc1b925a6b68130b2.gif)
![第二章sql性能優(yōu)化篇18講25hash索引底層原理_第3頁](http://file4.renrendoc.com/view/6cf0dc4ffb6f4969dc1b925a6b68130b/6cf0dc4ffb6f4969dc1b925a6b68130b3.gif)
![第二章sql性能優(yōu)化篇18講25hash索引底層原理_第4頁](http://file4.renrendoc.com/view/6cf0dc4ffb6f4969dc1b925a6b68130b/6cf0dc4ffb6f4969dc1b925a6b68130b4.gif)
![第二章sql性能優(yōu)化篇18講25hash索引底層原理_第5頁](http://file4.renrendoc.com/view/6cf0dc4ffb6f4969dc1b925a6b68130b/6cf0dc4ffb6f4969dc1b925a6b68130b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2019-08-07SQL必知必 進入課06:49我們上節(jié)課講解了B+樹的原理,今天我們來學習下Hash的原理和使用。Hash本身是一個函數(shù),又被稱為散列函數(shù),它可以幫助我們大幅提升檢索數(shù)據(jù)的效率。打個比方,ash就好像一個智能前臺,你只要告訴它想要查找的人的姓名,它就會告訴你那個人坐在哪個位置,只需要一次交互就可以完成查找,效率非常高。大名鼎鼎的MD5就是Hash函數(shù)的一種。Hash算法是通過某種確定性的算法(比如MD5、SHA1、SHA2、SHA3)將輸入轉(zhuǎn)變?yōu)橹恍枰寣Ψ桨袶ash函數(shù)計算得到的結(jié)果告訴你即可,然后在本地同樣對文件進行Hash函數(shù)的運算,最后通過比較這兩個Hash函數(shù)的結(jié)果是否相同,就可以知道這兩個文件是否Hash動手寫程序統(tǒng)計一下Hash了解MySQL中的HashHash索引和BHash我們知道Python的數(shù)據(jù)結(jié)構(gòu)中有數(shù)組和字典兩種,其中數(shù)組檢索數(shù)據(jù)類似于全表掃描,需要對整個數(shù)組的內(nèi)容進行檢索;而字典是由Hash表實現(xiàn)的,存儲的是key-value值,對于Hash11000010000復制代碼import#result=foriin#foriintemp=print('檢索時間',time_end-檢索時間為1.2436728477478027秒2HashPython10000素,然后檢索這10000個數(shù)據(jù),最后再統(tǒng)計一下時間。代碼如下:復制代碼import#result=foriinresult[i]=#foriintemp=檢索時間為0.0019941329956054688你能看到Hash方式檢索差不多用了2毫秒的時間,檢索效率提升得非常明顯。這是因為Hash只需要一步就可以找到對應(yīng)的取值,算法復雜度為O(1),而數(shù)組檢索數(shù)據(jù)的算法復雜度為O(n)。MySQLHash采用Hash進行檢索效率非常高,基本上一次檢索就可以找到數(shù)據(jù),而B+樹需要自頂向下依次查找,多次訪問節(jié)點才能找到數(shù)據(jù),中間需要多次I/O操作,從效率來說Hash比B+我們來看下Hash鍵值key通過Hash映射找到桶bucket。在這里桶(bucket)指的是一個能存儲一條或一行,形成鏈表結(jié)構(gòu),當遇到Hash沖突時,會在桶中進行鍵值的查找。那么什么是HashHash4HashHash1632MD53232MD5我們模擬一下Hash索引。關(guān)鍵字如下所示,每個字母的內(nèi)部編碼為字母的序號,比如01,Y258-11(從前向后)HashHashB我們之前講到過B+樹索引的結(jié)構(gòu),Hash索引結(jié)構(gòu)和B+樹的不同,因此在索引使用上也Hash索引不能進行范圍查詢,而B+樹可以。這是因為Hash索引指向的數(shù)據(jù)是無序的,而B+樹的葉子節(jié)點是個有序的鏈表。Hash索引不支持聯(lián)合索引的最左側(cè)原則(即聯(lián)合索引的部分索引無法使用),而B+樹可以。對于聯(lián)合索引來說,Hash索引在計算Hash值的時候是將索引鍵合并后再一起計算Hash值,所以不會針對每個索引單獨計算Hash值。因此如果用到聯(lián)合索引的一Hash索引不支持ORDERBY排序,因為Hash索引指向的數(shù)據(jù)是無序的,因此無法起到排序優(yōu)化的作用,而B+樹索引數(shù)據(jù)是有序的,可以起到對該字段ORDERBY排序優(yōu)化的作用。同理,我們也無法用Hash索引進行模糊查詢,而B+樹使用LIKE進行模糊查詢的時候,LIKE后面前模糊查詢(比如%開頭)的話就可以起到優(yōu)化作用。對于等值查詢來說,通常Hash索引的效率更高,不過也存在一種情況,就是索引列的重復值如果很多,效率就會降低。這是因為遇到Hash沖突時,需要遍歷桶中的行指針來進行比較,找到查詢的關(guān)鍵字,非常耗時。所以,Hash索引通常不會用到重復值多的列上,比如列庫中BHash型(Key-Value)數(shù)據(jù)庫中,Redis存儲的核心就是Hash另外MySQL中的Memory存儲引擎支持Hash存儲,如果我們需要用到查詢的臨時表時,就可以選擇Memory存儲引擎,把某個字段設(shè)置為Hash索引,比如字符串類型的字Hash等值查詢的時候,采用Hash索引是個不錯的選擇。另外MySQL的InnoDB存儲引擎還有個“自適應(yīng)Hash索引”的功能,就是當某個索引BHashB也具備了Hash索引的優(yōu)點。今天的內(nèi)容到這里就結(jié)束了,我留兩道思考題吧。查找某個固定值時Hash索引比B+樹更快,為什么MySQL還要采用B+樹的存儲索引呢?另外,當兩個關(guān)鍵字的Hash值相同時?上一 下一 21HashBMySQLB呢?另外,當兩個關(guān)鍵字的Hash值相同時會發(fā)生什么?11老師,BLIKElikexxmysql查詢中存在著很多范圍查詢、orderby的場景,在這些場景下,B+樹的性能好于Ha能不能請老師分別推薦一下學習MySQL,Oracle,sqlServer作者回復:可以看下關(guān)于MySQL高性能優(yōu)化的書籍,如果是數(shù)據(jù)庫初學者也可以先從SQLServer開始,畢竟微軟的產(chǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年無菌包裝用包裝材料項目規(guī)劃申請報告模范
- 2025年健康護理產(chǎn)品購銷合同書樣本
- 2025年新股權(quán)分配策劃協(xié)議
- 2025年環(huán)境有害生物防治合同
- 2025年健身房個人教練聘請合同范本
- 2025年子女撫養(yǎng)費用分擔策劃協(xié)議
- 2025年共同研發(fā)知識產(chǎn)權(quán)合同
- 2025年合作雙方產(chǎn)品協(xié)議范本
- 2025年全年圖書選購合作協(xié)議書樣本
- 2025年公園景觀照明設(shè)備定期維護服務(wù)申請協(xié)議
- 成人氧氣吸入療法護理標準解讀-2
- JBT 2231.3-2011 往復活塞壓縮機零部件 第3部分:薄壁軸瓦
- 旅游學概論(郭勝 第五版) 課件 第1、2章 旅游學概述、旅游的產(chǎn)生與發(fā)展
- 高一文理分科分班后第一次家長會市公開課一等獎省賽課獲獎
- 2024年江西生物科技職業(yè)學院單招職業(yè)適應(yīng)性測試試題庫(典優(yōu))
- 13.2《致大?!氛n件高中語文選擇性必修中冊
- 2024年長沙電力職業(yè)技術(shù)學院單招職業(yè)技能測試題庫及答案解析
- 商場收銀主管個人工作總結(jié)
- 部編版語文三年級下冊第一單元大單元整體學習任務(wù)設(shè)計(表格式)
- 《社區(qū)康復》課件-第三章 社區(qū)康復的實施
- 中職生心理健康教育全套教學課件
評論
0/150
提交評論