婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 簡單談談Mysql索引與redis跳表

簡單談談Mysql索引與redis跳表

熱門標簽:百度地圖標注要什么軟件 天津公司外呼系統軟件 中國地圖標注公司 400電話申請廠家現貨 電話機器人的價格多少錢一個月 徐涇鎮騰訊地圖標注 福建外呼電銷機器人加盟 昌德訊外呼系統 自己做地圖標注需要些什么

摘要

面試時,交流有關mysql索引問題時,發現有些人能夠濤濤不絕的說出B+樹和B樹,平衡二叉樹的區別,卻說不出B+樹和hash索引的區別。這種一看就知道是死記硬背,沒有理解索引的本質。本文旨在剖析這背后的原理,歡迎留言探討

問題

如果對以下問題感到困惑或一知半解,請繼續看下去,相信本文一定會對你有幫助

  • mysql 索引如何實現
  • mysql 索引結構B+樹與hash有何區別。分別適用于什么場景
  • 數據庫的索引還能有其他實現嗎
  • redis跳表是如何實現的
  • 跳表和B+樹,LSM樹有和區別呢

解析

首先為什么要把mysql索引和redis跳表放在一起討論呢,因為他們解決的都是同一種問題,用于解決數據集合的查找問題,即根據指定的key,快速查到它所在的位置(或者對應的value)

當你站在這個角度去思考問題時,還會不知道B+樹索引和hash索引的區別嗎

數據集合的查找問題

現在我們將問題領域邊界劃分清楚了,就是為了解決數據集合的查找問題。這一塊需要考慮哪些問題呢

  1. 需要支持哪些查找方式,單key/多key/范圍查找,
  2. 插入/刪除效率
  3. 查找效率(即時間復雜度)
  4. 存儲大小(空間復雜度)

我們看下幾種常用的查找結構

hash

hash是key,value形式,通過一個散列函數,能夠根據key快速找到value

B+樹

B+樹是在平衡二叉樹基礎上演變過來,為什么我們在算法課上沒學到B+樹和跳表這種結構呢。因為他們都是從工程實踐中得到,在理論的基礎上進行了妥協。

B+樹首先是有序結構,為了不至于樹的高度太高,影響查找效率,在葉子節點上存儲的不是單個數據,而是一頁數據,提高了查找效率,而為了更好的支持范圍查詢,B+樹在葉子節點冗余了非葉子節點數據,為了支持翻頁,葉子節點之間通過指針連接。

跳表

跳表是在鏈表的基礎上進行擴展的,為的是實現redis的sorted set數據結構。 level0: 是存儲原始數據的,是一個有序鏈表,每個節點都在鏈上 level0+: 通過指針串聯起節點,是原始數據的一個子集,level等級越高,串聯的數據越少,這樣可以顯著提高查找效率,

總結

數據結構 實現原理 key查詢方式 查找效率 存儲大小 插入、刪除效率
Hash 哈希表 支持單key 接近O(1) 小,除了數據沒有額外的存儲 O(1)
B+樹 平衡二叉樹擴展而來 單key,范圍,分頁 O(Log(n) 除了數據,還多了左右指針,以及葉子節點指針 O(Log(n),需要調整樹的結構,算法比較復雜
跳表 有序鏈表擴展而來 單key,分頁 O(Log(n) 除了數據,還多了指針,但是每個節點的指針小于2,所以比B+樹占用空間小 O(Log(n),只用處理鏈表,算法比較簡單

對LSM結構感興趣的可以看下cassandra vs mongo (1)存儲引擎

cassandra vs mongo (1)存儲引擎

概括

存儲引擎:

B-Tree

緩存管理

緩存管理的核心在于置換算法,置換算法常見的有FIFO(First In First Out),LRU(Least Recently Used)。關系型數據庫在LRU的基礎上,進行了改進,主要使用LIRS(Low Inter-reference Recency Set)
將緩存分為兩級,第一次采用LRU,最近被使用到的數據會進第一級,如果數據在較短時間內被訪問了兩次或以上,則成為熱點數據,進入第二級。避免了進行全表掃描的時候,可能會將緩存中的大量熱點數據替換掉。

LSM

Log-Structured Merge Tree:結構化合并樹,核心思想就是不將數據立即從內存中寫入到磁盤,而是先保存在內存中,積累了一定量后再刷到磁盤中

LSM VS B-Tree

LSM在B-Tree的基礎上為了獲取更好的寫性能而犧牲了部分的讀性能,同時利用其它的實現來彌補讀性能,比如boom-filter.

1.寫

B樹的寫入,是首先找到對應的塊位置,然后將新數據插入。隨著寫入越來越多,為了維護B樹結構,節點得分裂。這樣插入數據的隨機寫概率就會增大,性能會減弱。

LSM 則是在內存中形成小的排好序的樹,然后flush到磁盤的時候不斷的做merge.因為寫入都是內存寫,不寫磁盤,所以寫會很高效。

2.讀

B樹從根節點開始二分查詢直到葉子節點,每次讀取一個節點,如果對應的頁面不在內存中,則讀取磁盤,緩存數據。

LSM樹整個結構不是有序的,所以不知道數據在什么地方,需要從每個小的有序結構中做二分查詢,找到了就返回,找不到就繼續找下一個有序結構。所以說LSM犧牲了讀性能。但是LSM之所以能夠作為大規模數據存儲系統在于讀性能可以通過其他方式來提高,比如讀取性能更多的依賴于內存/緩存命中率而不是磁盤讀取。

Cassandra

Cassandra是一個寫性能優于讀性能的NoSql數據庫,寫性能好一個原因在于選擇了LSM存儲引擎。

Mongo

MMAPv1

Mongo 3.2以前默認使用MMAPv1存儲引擎,是基于B-Tree類型的。

邊界(padding)

MMAPv1 存儲引擎使用一個叫做”記錄分配”的過程來為document存儲分配磁盤空間。MongoDB與Cassandra不同的是,需要去更新原有的document。如果原有的document空間不足,則需要將這個document移動到新的位置,更新對應的index。這樣就會導致一些不必要的更新,和數據碎片。

為了避免出現上述情況,就有了邊界的概念,就是為document預分配空間。但是這樣就有可能造成資源的浪費。mongo 按照64M,128M,256M…2G的2的冥次方遞增策略預分配,最大2G。在數據量小的情況下問題并不明顯,但是當達到2G時,磁盤占用量大的問題就出來了。

同樣這一點和關系型數據庫也不一樣,關系型數據庫對于長記錄數據會分開存儲。


MMAPv1使用collection級別的鎖,即一個collecion增,刪,改一次只能有一個。在并發操作時,就會造成等待。

WiredTiger

3.2及其以后的默認存儲引擎,同樣是基于B-Tree的。采用了lock-free,風險指針等并發技術,使得在多核機器上工作的更好。

鎖級別為document。并且引入了compression,減少了磁盤占用。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • 新手學習MySQL索引
  • 由不同的索引更新解決MySQL死鎖套路
  • 通過唯一索引S鎖與X鎖來了解MySQL死鎖套路
  • 分享幾道關于MySQL索引的重點面試題
  • Mysql中的索引精講
  • MySQL學習(七):Innodb存儲引擎索引的實現原理詳解
  • 使用shell腳本來給mysql加索引的方法
  • MySQL批量插入和唯一索引問題的解決方法
  • 高效利用mysql索引指南

標簽:黔西 梅河口 駐馬店 北京 昌都 鄂爾多斯 荊門 陜西

巨人網絡通訊聲明:本文標題《簡單談談Mysql索引與redis跳表》,本文關鍵詞  簡單,談談,Mysql,索引,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《簡單談談Mysql索引與redis跳表》相關的同類信息!
  • 本頁收集關于簡單談談Mysql索引與redis跳表的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区二区三区国产精品| caoporm超碰国产精品| 欧美日本一区二区三区四区| 亚洲最新在线观看| 欧美在线观看18| 亚洲h动漫在线| 欧美日韩精品免费观看视频| 午夜欧美电影在线观看| 日韩亚洲欧美综合| 国产一区二区三区免费在线观看 | 五月天视频一区| 欧美一级在线免费| 国模娜娜一区二区三区| 日本va欧美va精品发布| 91精品国产色综合久久久蜜香臀| 美国一区二区三区在线播放| 久久久高清一区二区三区| 国产成人精品免费视频网站| 久久久国产精华| av一二三不卡影片| 天堂av在线一区| 国产亚洲福利社区一区| 99re这里都是精品| 日韩精品乱码免费| 国产精品水嫩水嫩| 欧美日韩免费不卡视频一区二区三区 | 激情国产一区二区 | 久久网这里都是精品| 夫妻av一区二区| 亚洲夂夂婷婷色拍ww47| 日韩精品一区二区三区蜜臀 | 国产亚洲制服色| 91官网在线免费观看| 美女视频黄 久久| 1000精品久久久久久久久| 欧美电影在线免费观看| 丰满亚洲少妇av| 日韩精品乱码av一区二区| 国产欧美一区二区精品性色超碰| 欧美视频一二三区| 国产成人久久精品77777最新版本| 激情都市一区二区| 欧美在线一区二区三区| 538prom精品视频线放| 欧美一级专区免费大片| 成人欧美一区二区三区黑人麻豆 | 成人性生交大合| 欧美大片在线观看| 欧美性色黄大片| 成人欧美一区二区三区| 精品久久人人做人人爱| 欧美性猛交一区二区三区精品| 国产精品99久久久久| 亚洲成人av一区| 亚洲视频香蕉人妖| 国产欧美一区二区精品秋霞影院 | 884aa四虎影成人精品一区| 91在线国产观看| 国产麻豆91精品| 另类欧美日韩国产在线| 水蜜桃久久夜色精品一区的特点| 亚洲欧美综合色| 国产精品情趣视频| 久久久久99精品国产片| 欧美mv日韩mv国产网站app| 欧美偷拍一区二区| 91色porny在线视频| voyeur盗摄精品| 成人性色生活片免费看爆迷你毛片| 九九九精品视频| 美女网站一区二区| 肉肉av福利一精品导航| 亚洲午夜视频在线观看| 一区二区不卡在线播放| 亚洲高清不卡在线观看| 一区二区三区四区精品在线视频| 亚洲日本丝袜连裤袜办公室| 看电影不卡的网站| 秋霞影院一区二区| 久久se这里有精品| 国产最新精品精品你懂的| 国产精品一区在线| 国产呦萝稀缺另类资源| 国产一区高清在线| 国产成人av网站| 成人动漫精品一区二区| 欧美日韩另类一区| 麻豆国产欧美一区二区三区| 午夜精品一区在线观看| 中文字幕成人网| 日韩一区二区在线观看| 在线看日韩精品电影| 国产99精品在线观看| 蜜臀久久99精品久久久久久9| 国产精品国产a| 日韩欧美你懂的| 日韩精品专区在线影院观看| 亚洲猫色日本管| 午夜私人影院久久久久| 秋霞国产午夜精品免费视频 | 亚洲美女免费在线| 亚洲国产一区二区视频| 五月天亚洲婷婷| 黄页网站大全一区二区| 成人av在线看| 在线观看日韩毛片| 欧美电影免费观看高清完整版在线| 久久综合色婷婷| 日韩理论在线观看| 日韩国产欧美三级| 成人性生交大片免费看中文网站| 日本乱码高清不卡字幕| 精品国产免费视频| 亚洲色图另类专区| 日韩成人一级片| 91在线小视频| 日韩欧美在线网站| 亚洲另类色综合网站| 日本不卡一区二区三区| av在线一区二区三区| 欧美一区午夜视频在线观看| 国产精品久久久久影院色老大| 肉丝袜脚交视频一区二区| 丁香六月综合激情| 日韩欧美中文字幕精品| 亚洲精品乱码久久久久久| 国产一区二区在线影院| 51精品国自产在线| 亚洲乱码国产乱码精品精的特点 | 不卡欧美aaaaa| 这里是久久伊人| 亚洲欧美日韩系列| 国产毛片精品视频| 欧美一区二区二区| 亚洲自拍偷拍图区| 97久久人人超碰| 久久男人中文字幕资源站| 午夜国产精品一区| 日本韩国欧美在线| 国产精品女人毛片| 国产乱淫av一区二区三区| 欧美精品一卡二卡| 一级中文字幕一区二区| 久久女同性恋中文字幕| 香蕉久久一区二区不卡无毒影院| 欧美人妇做爰xxxⅹ性高电影| 日韩在线a电影| 91精品国产一区二区| 亚洲国产一区视频| 在线观看精品一区| 亚洲永久免费av| 欧美伊人久久久久久久久影院| 一区二区成人在线观看| 国产精品羞羞答答xxdd| 日韩欧美一区电影| 成人免费看黄yyy456| 蜜乳av一区二区| 另类小说图片综合网| 欧美精品第1页| 亚洲小说欧美激情另类| 日本福利一区二区| 亚洲精品视频自拍| 色呦呦日韩精品| 亚洲另类在线视频| 欧美亚洲国产一区二区三区| 一级日本不卡的影视| 欧美中文字幕不卡| 亚洲综合在线五月| 欧美日韩亚洲另类| 日本美女视频一区二区| 欧美一二三区在线观看| 麻豆精品新av中文字幕| 精品国产电影一区二区| 国产成人99久久亚洲综合精品| 国产婷婷色一区二区三区在线| 成人性生交大片免费看视频在线 | 丁香亚洲综合激情啪啪综合| 中文天堂在线一区| 色综合视频一区二区三区高清| 亚洲免费电影在线| 欧美精品三级在线观看| 免费黄网站欧美| 日本一区二区三区免费乱视频| 91麻豆国产香蕉久久精品| 亚洲v日本v欧美v久久精品| 欧美一级黄色大片| 国产91精品久久久久久久网曝门| 国产精品免费网站在线观看| 91激情在线视频| 免费一级欧美片在线观看| 久久美女艺术照精彩视频福利播放 | 国产女人aaa级久久久级| 色哟哟在线观看一区二区三区| 亚洲裸体xxx| 日韩欧美精品在线视频| 国产一区在线精品| 国产精品国产三级国产普通话蜜臀 | 国产一区二区三区av电影| 自拍偷拍欧美精品| 欧美精品 国产精品|