240 發(fā)簡信
IP屬地:河北
  • B-樹和B+樹最重要的一個區(qū)別就是B+樹只有葉節(jié)點存放數(shù)據(jù)天揖,其余節(jié)點用來索引位仁,而B-樹是每個索引節(jié)點都會有Data域揣钦。這就決定了B+樹更適合用來存儲外部數(shù)據(jù)祭芦,也就是所謂的磁盤數(shù)據(jù)。從Mysql(Inoodb)的角度來看仍翰,B+樹是用來充當索引的赫粥,一般來說索引非常大,尤其是關系性數(shù)據(jù)庫這種數(shù)據(jù)量大的索引能達到億級別予借,所以為了減少內(nèi)存的占用越平,索引也會被存儲在磁盤上。那么Mysql如何衡量查詢效率呢灵迫?磁盤IO次數(shù)秦叛,B-樹(B類樹)的特定就是每層節(jié)點數(shù)目非常多,層數(shù)很少瀑粥,目的就是為了就少磁盤IO次數(shù)挣跋,當查詢數(shù)據(jù)的時候,最好的情況就是很快找到目標索引利凑,然后讀取數(shù)據(jù)浆劲,使用B+樹就能很好的完成這個目的,但是B-樹的每個節(jié)點都有data域(指針)哀澈,這無疑增大了節(jié)點大小,說白了增加了磁盤IO次數(shù)(磁盤IO一次讀出的數(shù)據(jù)量大小是固定的度气,單個數(shù)據(jù)變大割按,每次讀出的就少,IO次數(shù)增多磷籍,一次IO多耗時笆嗜佟!)院领,而B+樹除了葉子節(jié)點其它節(jié)點并不存儲數(shù)據(jù)弛矛,節(jié)點小,磁盤IO次數(shù)就少比然。這是優(yōu)點之一丈氓。另一個優(yōu)點是什么,B+樹所有的Data域在葉子節(jié)點强法,一般來說都會進行一個優(yōu)化万俗,就是將所有的葉子節(jié)點用指針串起來。這樣遍歷葉子節(jié)點就能獲得全部數(shù)據(jù)饮怯,這樣就能進行區(qū)間訪問啦闰歪。至于MongoDB為什么使用B-樹而不是B+樹,可以從它的設計角度來考慮蓖墅,它并不是傳統(tǒng)的關系性數(shù)據(jù)庫库倘,而是以Json格式作為存儲的nosql临扮,目的就是高性能,高可用教翩,易擴展公条。首先它擺脫了關系模型,上面所述的優(yōu)點2需求就沒那么強烈了迂曲,其次Mysql由于使用B+樹靶橱,數(shù)據(jù)都在葉節(jié)點上,每次查詢都需要訪問到葉節(jié)點路捧,而MongoDB使用B-樹关霸,所有節(jié)點都有Data域,只要找到指定索引就可以進行訪問杰扫,無疑單次查詢平均快于Mysql(但側(cè)面來看Mysql至少平均查詢耗時差不多)队寇。總體來說章姓,Mysql選用B+樹和MongoDB選用B-樹還是以自己的需求來選擇的佳遣。( 摘抄來的,做個筆記 -_- )

  • 哈希表

    IO多路復用的三種機制Select凡伊,Poll零渐,Epoll

    I/O多路復用(multiplexing)的本質(zhì)是通過一種機制(系統(tǒng)內(nèi)核緩沖I/O數(shù)據(jù)),讓單個進程可以監(jiān)視多個文件描述符系忙,一旦某個描述符就緒(一般是讀就緒或?qū)懢途w)诵盼,能夠通...

  • 額。银还。同步和異步的區(qū)別還是要說一下:
    同步和異步是相對于應用和內(nèi)核的交互方式來說的风宁,同步是應用程序只關注就緒事件,真正的IO讀寫是應用自己完成的蛹疯,異步是應用程序關注完成事件戒财,真正的IO是內(nèi)核做的,IO完成后通知程序捺弦。不知道說明白沒有饮寞,可以參考java的一些概念:
    BIO(同步阻塞)
    NIO(同步非阻塞)
    AIO(異步非阻塞)

    IO多路復用的三種機制Select,Poll羹呵,Epoll

    I/O多路復用(multiplexing)的本質(zhì)是通過一種機制(系統(tǒng)內(nèi)核緩沖I/O數(shù)據(jù))骂际,讓單個進程可以監(jiān)視多個文件描述符,一旦某個描述符就緒(一般是讀就緒或?qū)懢途w)冈欢,能夠通...

  • MySql主從不同步原因分析及解決方案

    原因分析 1.網(wǎng)絡的延遲由于mysql主從復制是基于binlog的一種異步復制歉铝,通過網(wǎng)絡傳送binlog文件,理所當然網(wǎng)絡延遲是主從不同步的絕大多數(shù)的原因凑耻,特別是跨機房的數(shù)據(jù)...

  • 120
    Netty筆記4-如何實現(xiàn)長連接

    ? 前面三章介紹了Netty的一些基本用法太示,這一章介紹怎么使用Netty來實現(xiàn)一個簡單的長連接demo柠贤。 Netty入門教程——認識Netty Netty入門教程2——動...

  • 120
    Netty入門教程——認識Netty

    什么是Netty? Netty 是一個利用 Java 的高級網(wǎng)絡的能力类缤,隱藏其背后的復雜性而提供一個易于使用的 API 的客戶端/服務器框架臼勉。Netty 是一個廣泛使用的 J...

  • PHP的單例模式

    php的單例模式和java單例模式的比較 PHP語言是一種解釋型的腳本語言,這種運行機制使得每個PHP頁面被解釋執(zhí)行后餐弱,所有的相關資源都會被回收宴霸。也就是說,PHP在語言級別上...

  • isset(),is_null(),empty()區(qū)別

    isset() isset() 函數(shù)用于檢測變量是否已設置并且非 NULL膏蚓。如果已經(jīng)使用 unset() 釋放了一個變量之后瓢谢,再通過 isset() 判斷將返回 FALSE。...

  • 120
    分布式事務之兩階段提交協(xié)議(2PC)

    兩階段提交協(xié)議(Two-phase Commit驮瞧,2PC)經(jīng)常被用來實現(xiàn)分布式事務氓扛。一般分為協(xié)調(diào)器C和若干事務執(zhí)行者Si兩種角色,這里的事務執(zhí)行者就是具體的數(shù)據(jù)庫论笔,協(xié)調(diào)器可以...

  • 120
    使用事件和消息隊列實現(xiàn)分布式事務

    不同于單一架構應用(Monolith), 分布式環(huán)境下, 進行事務操作將變得困難, 因為分布式環(huán)境通常會有多個數(shù)據(jù)源, 只用本地數(shù)據(jù)庫事務難以保證多個數(shù)據(jù)源數(shù)據(jù)的一致性. 這...

  • 120
    B樹的插入過程

    我們設定B-樹的階為5采郎。用關鍵字序列{1,2,6,7,11,4,8,13,10,5,17,9,16,20,3,12,14,18,19,15}來構建一棵B-樹。 因為樹的階為5...

  • php如何獲取Request Header

    最近做php跨域調(diào)用的方案狂魔,其中要保證兩個前端域名a.com蒜埋,b.com都可以訪問后端域名server.com,而且不同的前端域請求毅臊,服務端邏輯處理不一樣理茎,要做前端域名的判斷...

  • 不是完全贊同,在成長型的小公司管嬉,對于人才的要求和你能力提升的空間還是很大的,往往會大于大公司的能力提升朗鸠,因為大公司所有員工都是一個螺絲釘蚯撩,你只能在你的空間內(nèi)做事情,而且大公司對于員工的可替代性訴求比較高烛占,走任何一個人都不會影響到公司的運營胎挎,小公司則不同,你可能要面對各種問題忆家,解決各種難題犹菇,雖然吐槽會比較多,但是你真正得到了鍛煉芽卿,技能和視野無形當中得到了提升揭芍,世上沒有白吃的苦,任何公司都是從小到大的卸例,馬云當時不也是12個人的公司嗎称杨?
    關鍵是你對公司未來的預判肌毅,在這里是否可以成長,跟公司大小沒關系姑原。

    千萬別進小公司悬而!為啥?

    為什么“千萬不要去小公司上班”锭汛?小公司的“小”究竟說的是什么笨奠?就讓被小公司坑過的我來為你解答吧。 ?何為“小”公司 小公司的“小”說的是什么呢唤殴?不僅是指辦公室小般婆、職員少,更可...

個人介紹
知人者智,自知者明
qianyang.wang@gmail.com
亚洲A日韩AV无卡,小受高潮白浆痉挛av免费观看,成人AV无码久久久久不卡网站,国产AV日韩精品