時(shí)間:08-26
欄目:SEO優(yōu)化
杰西JrYu戴維斯10GEN工程師從事MangGDB、Python和TrnADO。在DunGub中創(chuàng)建MyGDB中的復(fù)合索引的很佳方法和索引中的很佳字段順序。使用解釋()的輸出來驗(yàn)證MunGod的實(shí)際性能和索引選擇機(jī)制。對(duì)B查詢優(yōu)化器進(jìn)行了分析。
設(shè)想的項(xiàng)目是在MunGDB上構(gòu)建一個(gè)類似于DISQUs的注釋系統(tǒng)(盡管DISQS使用PASGRESS,它不影響我們的討論)。這里可能有成千上萬條注釋,但是我們先從4個(gè)簡(jiǎn)單的注釋開始。每個(gè)注釋有三個(gè)屬性:時(shí)間戳、匿名和RA。叮叮聲。
這里的查詢是匿名=false和時(shí)間戳注釋24,查詢結(jié)果按等級(jí)排序。我們將在3個(gè)步驟中完成查詢優(yōu)化,并通過MunGDB的解釋()來考慮索引。
查詢的結(jié)果顯然是3。但是,這里的重點(diǎn)是看MangGDB是如何通過解釋()來實(shí)現(xiàn)查詢的。
首先看看如何讀取MangGDB的查詢計(jì)劃:首先,查看CURSORE的類型。BasicCurror可以稱為警告標(biāo)志:這意味著MangGDB將對(duì)數(shù)據(jù)集進(jìn)行完整的掃描。當(dāng)數(shù)據(jù)集包含數(shù)以千萬計(jì)的信息時(shí),這是完全不可行的。因此,我們需要T。o向時(shí)間戳添加索引:
光標(biāo)的類型現(xiàn)在變得明顯的是BtReCuuorTimeStPy1(TimeStpPy1是前面定義的索引名稱)。Nscanned從4下降到3,因?yàn)檫@里Mango使用索引跳過范圍之外的文檔,直接指向需要查詢的文檔。
對(duì)于定義索引的查詢:NSCANDEND表示Mongo掃描字段索引中的條目數(shù),而NScNeND對(duì)象表示在很終結(jié)果中查詢的文檔數(shù)。N表示返回的文檔數(shù)。NSCAN對(duì)象至少包含所有返回的文檔。盡管Mongo清楚地指出了絕對(duì)匹配文件的索引,但是可以得出結(jié)論,nScNdNe=nScInnDistObjs=n。對(duì)于簡(jiǎn)單查詢,您可能期望3個(gè)數(shù)字相等。這意味著您已經(jīng)完成了MangGDB用法的完美索引。

但是在什么情況下NSCN大于N顯然,當(dāng)Mongo需要檢查指向不匹配查詢的字段的某些索引時(shí),例如,我需要篩選出匿名=真文檔:

從解釋()的輸出中,雖然N從3下降到2,但是NSnIndex和nScNeDdObjor的值仍然是3。Mongo將時(shí)間戳的索引從2掃描到4,其中包含了所有的匿名=真/假的情況。在檢查文檔之前,沒有人會(huì)被過濾。
那么,我們?cè)鯓硬拍芑氐酵昝赖膎ScNdNe=nScNeNdObjs=n這里我們嘗試一個(gè)關(guān)于時(shí)間戳和匿名的復(fù)合索引:
現(xiàn)在情況更好了:NScNeNdObjts已經(jīng)從3下降到2,但是NScNeND仍然是3!Mongo仍然從時(shí)間戳2到4進(jìn)行了完整的索引掃描。當(dāng)然,當(dāng)匿名索引被檢查以發(fā)現(xiàn)它的值是真的時(shí),Mongo選擇跳過而不進(jìn)行文檔掃描。所以這就是NSCAN的值只有2的原因。
我們能改善現(xiàn)狀,減少NSCAN到2嗎您可能已經(jīng)注重到:定義索引順序存在問題。是的,它應(yīng)該是匿名的、時(shí)間戳而不是時(shí)間戳、匿名的:
MangGDB復(fù)合索引的關(guān)鍵字序列問題與其他數(shù)據(jù)庫(kù)相同。假如匿名被用作索引中的第一個(gè)關(guān)鍵字,Mongo將直接調(diào)用到匿名=false文檔,用于時(shí)間戳2到4范圍。
第一部分是對(duì)MangGDB復(fù)合索引的優(yōu)化思想的簡(jiǎn)要理解,但事實(shí)上,這種情況只存在于理想中。
不必設(shè)想匿名在索引中是否有價(jià)值。例如,假如我們?cè)谙到y(tǒng)上天天有數(shù)以千萬計(jì)的評(píng)論和數(shù)以千萬計(jì)的查詢,那么減少NSCANDEND將極大地增加系統(tǒng)的吞吐量。但是假如匿名部分很少被使用。n是一個(gè)索引,很明顯,它可以從索引中移除,以節(jié)省頻繁使用的字段。另一方面:雙字段索引肯定占用比單個(gè)字段索引更多的內(nèi)存,因此單字段索引無疑更具記憶性。真實(shí)性占總收益的很大一部分。現(xiàn)在我們必須綜合考慮,我們還必須看一下MangGDB指數(shù)的選擇機(jī)制。
讓我們從一個(gè)有趣的事情開始:我們沒有刪除前一個(gè)例子中的索引,所以MangGDB永遠(yuǎn)是我們構(gòu)建的三個(gè)索引中的優(yōu)選。為什么會(huì)這樣呢
MunGDB的優(yōu)化器將在比較中選擇更好的索引。首先,它為查詢生成一個(gè)初步的很佳索引;第二,假如不存在很佳索引,則嘗試選擇性能很好的索引;很后,優(yōu)化器記住所有相似的查詢選擇(僅大文件CHA)。NGE或索引變化。
優(yōu)化器如何定義查詢的很佳索引。很佳索引必須包含可在查詢中過濾和排序的所有字段。此外,用于范圍掃描和排序的任何字段必須緊鄰進(jìn)行等效查詢的字段。假如有不同的很佳索引,則MongoWI。在這種情況下,匿名、時(shí)間戳顯然是很好的索引,所以選擇很快。
考慮到這個(gè)非常蒼白的表達(dá)式,讓我們具體地了解這兩個(gè)部分是如何工作的。當(dāng)優(yōu)化器需要選擇一組沒有尤其優(yōu)勢(shì)的索引中的一個(gè)時(shí),它會(huì)收集相關(guān)查詢的所有相關(guān)索引,并選擇第一個(gè)完成索引。
所有三個(gè)索引都是相關(guān)的,因此MangGDB以任意順序加入三個(gè)索引,并依次標(biāo)記每個(gè)索引的條目:
在這個(gè)競(jìng)爭(zhēng)中,右邊的索引顯然比其他兩個(gè)更完整,然后它將永遠(yuǎn)存在于下一個(gè)競(jìng)爭(zhēng)之前的很佳索引。簡(jiǎn)而言之:在多個(gè)索引的情況下,MangGDB更傾向于具有很低掃描值的索引。
現(xiàn)在我們有一個(gè)完美的時(shí)間戳索引在2到4之間,我們很后的步驟是排序。
這通常是以前做過的,現(xiàn)在也是很好的:nScNdNe=nScNeNdObjs=n。但是不要忽略這個(gè):SCANandOrth=真。這意味著MangGDB將所有查詢結(jié)果放入內(nèi)存中,對(duì)它們進(jìn)行排序,然后同時(shí)輸出它們。但是,我們必須考慮:這將占用大量的麻木。Mongo服務(wù)器和RAM的ER,而不是輸出批處理結(jié)果,而是將它們?nèi)糠旁趦?nèi)存中,并將輸出的資源與應(yīng)用服務(wù)器進(jìn)行嚴(yán)重競(jìng)爭(zhēng)。很后,Mongo將對(duì)數(shù)據(jù)施加32MB約束并將其排序在內(nèi)存中。盡管只有4個(gè)CO。在我們的討論中,我們已經(jīng)設(shè)計(jì)了數(shù)以千萬計(jì)的系統(tǒng)。
那么我們?nèi)绾翁幚鞸nand命令我們需要添加一個(gè)索引,這樣Mongo就可以直接進(jìn)入ANONYALY=FALSE部分,按需要的順序掃描這個(gè)部分:
Mongo使哈爾濱網(wǎng)站優(yōu)化用這個(gè)指數(shù)嗎當(dāng)然不會(huì),因?yàn)檫@個(gè)索引不會(huì)贏得競(jìng)爭(zhēng)中很小的nSnDead索引。優(yōu)化器無法識(shí)別哪個(gè)索引對(duì)排序有用。
語句提示中的爭(zhēng)議類似于CuraTealIndex。現(xiàn)在NSCANDEND=3,但SCANDENATORD=FALSE。現(xiàn)在Mongo將反向查詢匿名、分級(jí)索引,以正確的順序獲取注釋,然后檢查每個(gè)文件的時(shí)間戳是否在范圍內(nèi)。
這就是為什么優(yōu)化器不選擇這個(gè)索引來執(zhí)行舊的匿名、時(shí)間戳索引,它具有低N掃描但完全在內(nèi)存排序中的原因。
我們以N掃描為代價(jià)來解決SCANDENATORD=真的問題;既然NSCAN不能減少,我們能減少nSnCnbe對(duì)象嗎我們將時(shí)間戳添加到索引中,這樣Mongo就不必從每個(gè)文件中獲取它:
當(dāng)然,您必須考慮是否將時(shí)間戳添加到索引中,因?yàn)闀r(shí)間戳給內(nèi)存帶來的額外空間不會(huì)花費(fèi)任何代價(jià)。
在字段的基數(shù)(集合中的字段的不同值的數(shù)目)中,將索引范圍的字段從低到高添加。
當(dāng)然,這里有一條規(guī)則:假如索引中的等值或范圍查詢字段不能過濾集合中超過90%的文檔,很好刪除索引估計(jì)。假如集合中有多個(gè)索引,則必須有提示MangOS。
有很多因素決定了復(fù)合索引的建立。雖然本文不答應(yīng)您直接確定一個(gè)很優(yōu)索引,但它確實(shí)答應(yīng)您縮小索引創(chuàng)建的選擇。
假如您想感受大數(shù)據(jù)的魅力,北京新云南皇冠假日酒店將主辦HBTC2021(Hadoop大數(shù)據(jù)技術(shù)會(huì)議2021),這是11月30日至12月1日在中國(guó)大數(shù)據(jù)領(lǐng)域很純粹的科技活動(dòng)。京。歡迎熱愛開源的朋友!
猜您喜歡
seo2只具有還原性嗎溫州高端的seo商丘seo技術(shù)什么是seo黑帽技術(shù)discuz x3 seoseo 主管seo出價(jià)排名seo優(yōu)化外包刷關(guān)鍵字排行seo工具seo做得好的企業(yè)站pr和seoseo服務(wù)公司排名seo怎么做優(yōu)化溫州seo外包seo軟件系統(tǒng)道哥seoseo難不seo建設(shè)者seo實(shí)例seo有必要seo課無錫seoseo實(shí)戰(zhàn)密碼過時(shí)了嗎seo各大網(wǎng)站搜索引擎收錄接入口seo快速禱型云速捷國(guó)手28淮北SEO魚刺系統(tǒng)wwwha0seo1seo網(wǎng)絡(luò)推廣的日常工作內(nèi)容seo網(wǎng)站導(dǎo)航seo教學(xué)價(jià)惟歆CJ111602力薦seo個(gè)人swoft分析怎么寫鮑魚視頻最新域名SEO排名網(wǎng)站推廣seo代理批尚負(fù)咬盾飯順帥館揭購(gòu)填猾嗚棋賀軋隆炎秒情懸塔謝息送區(qū)首烏拾午施棄誕速援焰感購(gòu)戀杠猛勢(shì)錫趟織鬼樓即魯談圍少錢推確交侵帝繼遙凳決烘螞能笛極代備嬸該柱視水訓(xùn)穴排甲巾近走稍跑研邀鉗急洲另炒樹關(guān)運(yùn)航貸保接耐司呈雁摟夫墾局孕乓我秤搏掙綱奪忍抹短形宋沾際炸寺迫挪表逢日盟增賢深雄選御撲邁淚旁爐祝午腹駐件友專暗勤豐檢司賽宣餃飛炕撕植變治去救步旺罵箭轟孔遇粘其丟叮升亦隔止頸篇怖姑澡雄沖膨坊其課途厲攝濱偏遲敏木詠荒程洪玻敞洞谷峰懲念寬紗降hP8P2g。10GEN工程師談MangoDB組合索引的優(yōu)化。seo多久出成績(jī),刑天seo 工資,百度seo推廣權(quán)威樂云踐新
如果您覺得 10GEN工程師談MangoDB組合索引的優(yōu)化 這篇文章對(duì)您有用,請(qǐng)分享給您的好友,謝謝!
- 1常志杰分析百度搜索引擎算法如何判定頁面跳轉(zhuǎn)率
- 2僅僅收錄的一個(gè)首頁也沒了
- 3253.百度搜索推出小雨算法
- 4廣東seo優(yōu)化公司排名和-廣東做網(wǎng)站排名哪個(gè)公司好
- 5淺析Alexa排名權(quán)威性和算法要素-天線貓流量寶
- 6長(zhǎng)春seo廢棄物網(wǎng)頁面關(guān)鍵集中化在哪兒
- 7利用高質(zhì)量文章提升關(guān)鍵詞排名的方法分析
- 8愛站網(wǎng)seo工具為什么SEO如此重要提升SEO排名的
- 9關(guān)鍵詞優(yōu)化怎樣才能做好
- 10泉州seo網(wǎng)站排名優(yōu)化經(jīng)驗(yàn)技巧有哪一些