Mongodb 索引分析工具 Dex 安裝與使用

Dex 是一個開源的MongoDB優化工具,它通過對查詢日誌和當前數據庫索引進行分析,向管理員提出高效的索引優化策略,以下是安裝教程,作爲記錄:

一、環境:

 

 

1、python2.7.3(經測試2.4不支持)

2、pip

3、dex0.4,會包含pymongo模塊

4、mongodb 2.0.2(本文寫的時候,2.2不支持)

5、centos5.6

 

二、步驟:

A、由於在centos5.6中自帶的python是2.4.3版本,需要升級到python2.7.3

 

 

1、下載python2.7.3

2、tar -zxf Python-2.7.3.tgz

3、cd Python-2.7.3

4、./configure --prefix=/usr/local/python2.7/

5、make && make install

6、將/usr/local/python2.7/lib/bin中的python替換/usr/bin/python

 

B、安裝pip,pip是python的easy-install工具

 

 

1、安裝pip首先要安裝setiptools工具,因爲在安裝pip時會引用setuptools的類,下載地址

2、sh setuptools-0.6c11-py2.7.egg

3、下載pip包,下載地址

4、tar -zxf pip-1.1.tar.gz

5、cd pip-1.1

6、python setup.py install

 

C、安裝dex

安裝好pip之後,dex就很好裝了

 

 

pip install dex

 

三、dex使用方法,轉自http://blog.nosqlfan.com/html/4061.html

 

 

dex -f mongodb.log mongodb://localhost

 

在監控過程中,dex會通過stderr輸出推薦的結果

 

{

"index": "{'simpleIndexedField': 1, 'simpleUnindexedFieldThree': 1}",

"namespace": "dex_test.test_collection"

"shellCommand": "db.test_collection.ensureIndex(

{'simpleIndexedField': 1, 'simpleUnindexedFieldThree': 1}, {'background': true})"

}

 

還會輸出一些統計信息:

 

Total lines read: 7

Understood query lines: 7

Unique recommendations: 5

Lines impacted by recommendations: 5

 

我們看到,在輸出結果中,有一個shellCommand字段,裏面就是添加索引的語句,如果你覺得dex的推薦不錯,就可以直接複製這段腳本在MongoDB 上添加索引了。相當方便。

 

除了運行過程中會向stderr中輸出信息名,在運行結束後,推薦信息還會打包成一個大的JSON對象在stdout中輸出一次。

 

Dex 在運行過程中主要會進行下面三個步驟。

 

解析query

通過已存在的索引對當前query進行判斷

如果發現索引不當,就推薦合適的索引

第一步:解析query

 

Dex會對查詢query進行解析,分成下面幾大類

 

EQUIV – 普通按數值進行的查詢,比如:{a: 1}

SORT – sort操作,比如: .sort({a: 1})

RANGE – 範圍查詢,比如:Specifically: ‘$ne’, ‘$gt’, ‘$lt’, ‘$gte’, ‘$lte’, ‘$in’, ‘$nin’, ‘$all’, ‘$not’

UNSUPPORTED

組合式查詢,比如:$and, $or, $nor

除了RANGE之外的嵌套查詢

第二步:判斷當前索引情況

 

有兩個標準來找出查詢所需的索引。

 

Coverage (none, partial, full) - Coverage表示索引的情況,有括號中的三個值。none表示完全無索引覆蓋。full表示query中的字段都能找到索引。partial表示none和full之間的情況。

Order (ideal or not) - Order是用於判斷索引的順序是否理想。理想的索引順序應該是:

Equivalence ○ Sort ○ Range

值得注意的是,對地理位置索引只會進行分析,但是不會提出改進建議。

第三步:推薦合適的索引

 

通過上面兩步,我們能夠對一個查詢可能使用索引的情況有一個瞭解。Dex會生成一個此查詢的最佳索引。如果這個索引不存在,並且查詢情況不包括上面提到的UNSUPPORTED,那麼Dex就會做出相應的索引優化建議。

 

Dex未來還會推出很多新功能,比如使用system.profile日誌來進行推薦,支持地理索引等等。詳情可見其項目主頁 。

 

發佈了46 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章