Dex – MongoDB索引優(yōu)化工具怎么使用以及原理有哪些,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
淮南網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
Dex是一個(gè)開(kāi)源的MongoDB優(yōu)化工具,它通過(guò)對(duì)查詢(xún)?nèi)罩竞彤?dāng)前數(shù)據(jù)庫(kù)索引進(jìn)行分析,向管理員提出高效的索引優(yōu)化策略。
Dex – MongoDB索引優(yōu)化工具怎么使用
安裝
pip install dex
開(kāi)始監(jiān)控
dex -f mongodb.log mongodb://localhost
在監(jiān)控過(guò)程中,dex會(huì)通過(guò)stderr輸出推薦的結(jié)果
{
"index": "{'simpleIndexedField': 1, 'simpleUnindexedFieldThree': 1}",
"namespace": "dex_test.test_collection"
"shellCommand": "db.test_collection.ensureIndex(
{'simpleIndexedField': 1, 'simpleUnindexedFieldThree': 1}, {'background': true})"
}
還會(huì)輸出一些統(tǒng)計(jì)信息
Total lines read: 7
Understood query lines: 7
Unique recommendations: 5
Lines impacted by recommendations: 5
我們看到,在輸出結(jié)果中,有一個(gè)shellCommand字段,里面就是添加索引的語(yǔ)句,如果你覺(jué)得dex的推薦不錯(cuò),就可以直接復(fù)制這段腳本在MongoDB上添加索引了。相當(dāng)方便。
除了運(yùn)行過(guò)程中會(huì)向stderr中輸出信息名,在運(yùn)行結(jié)束后,推薦信息還會(huì)打包成一個(gè)大的JSON對(duì)象在stdout中輸出一次。
Dex – MongoDB索引優(yōu)化工作原理有哪些
Dex在運(yùn)行過(guò)程中主要會(huì)進(jìn)行下面三個(gè)步驟。
1.解析query
2.通過(guò)已存在的索引對(duì)當(dāng)前query進(jìn)行判斷
3.如果發(fā)現(xiàn)索引不當(dāng),就推薦合適的索引
第一步:解析query
Dex會(huì)對(duì)查詢(xún)query進(jìn)行解析,分成下面幾大類(lèi)
EQUIV – 普通按數(shù)值進(jìn)行的查詢(xún),比如:{a: 1}
SORT – sort操作,比如: .sort({a: 1})
RANGE – 范圍查詢(xún),比如:Specifically: ‘$ne’, ‘$gt’, ‘$lt’, ‘$gte’, ‘$lte’, ‘$in’, ‘$nin’, ‘$all’, ‘$not’
UNSUPPORTED
組合式查詢(xún),比如:$and, $or, $nor
除了RANGE之外的嵌套查詢(xún)
第二步:判斷當(dāng)前索引情況
有兩個(gè)標(biāo)準(zhǔn)來(lái)找出查詢(xún)所需的索引。
Coverage (none, partial, full) - Coverage表示索引的情況,有括號(hào)中的三個(gè)值。none表示完全無(wú)索引覆蓋。full表示query中的字段都能找到索引。partial表示none和full之間的情況。
Order (ideal or not) - Order是用于判斷索引的順序是否理想。理想的索引順序應(yīng)該是:
Equivalence ○ Sort ○ Range
值得注意的是,對(duì)地理位置索引只會(huì)進(jìn)行分析,但是不會(huì)提出改進(jìn)建議。
第三步:推薦合適的索引
通過(guò)上面兩步,我們能夠?qū)σ粋€(gè)查詢(xún)可能使用索引的情況有一個(gè)了解。Dex會(huì)生成一個(gè)此查詢(xún)的最佳索引。如果這個(gè)索引不存在,并且查詢(xún)情況不包括上面提到的UNSUPPORTED,那么Dex就會(huì)做出相應(yīng)的索引優(yōu)化建議。
Dex未來(lái)還會(huì)推出很多新功能,比如使用system.profile日志來(lái)進(jìn)行推薦,支持地理索引等等。詳情可見(jiàn)其項(xiàng)目主頁(yè)。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。