終于寫完了定時器自動創(chuàng)建mongo集合的索引引谜!

1. 最近隨著日志數(shù)量的急劇增長,很多透傳查詢效率非常低擎浴。不得不考慮趕緊加上對查詢字段的索引來優(yōu)化透傳效率煌张。

2. 出問題的時候我都在想,還不如用以前的文件形式的日志呢退客!那時候骏融,還可以用ag,ack加快透傳的速度链嘀。用了mongo怎么沒有發(fā)揮出它的效果呢!

3. 為了不影響線上業(yè)務(wù)档玻,趕緊把mongo索引的文檔又過了幾遍怀泊,然后在測試機(jī)上使用mongo shell試試效果:

db.click_20170605.ensureIndex({clickid:1},{background:true,sparse:true})

4. linux上的mongo版本稍低,所以用的是ensureIndex().完成后误趴,使用db.click_20170605.getIndexes()顯示指定集合上的所有索引(最大64個)

5. db.click_20170605.totalIndexSize()顯示索引占用空間大小霹琼。 db.system.indexes.find()顯示系統(tǒng)中所有的索引(默認(rèn)包含所有集合的_id字段上的索引,索引學(xué)會過濾掉A沟薄)

比如這樣過濾默認(rèn)的索引:

db.system.indexes.find({key:{$ne:{"_id":1}}})

或者這樣:

db.system.indexes.find({name:{$ne:"_id_"}})

6. 核心代碼如下(設(shè)置索引字段和options:background等):

DB db = mongoClient.getDB(dbname);

for(String coll:collectionname) {

DBCollection getCollection=db.getCollection(coll);

BasicDBObject field = new BasicDBObject("clickid", 1);

BasicDBObject ops = new BasicDBObject("background",true).append("sparse",true);

getCollection.createIndex(field,ops);

//getCollection.insert((DBObject)com.mongodb.util.JSON.parse(inputjson));

System.out.println("\n index on? " + coll + " created "? );

}

7. 完整嵌入代碼如下:

MongoClient mongoClient = null;

try {

// To connect to mongodb server

mongoClient = new MongoClient( "172.17.0.6" , 27017 );

// Now connect to your databases

@SuppressWarnings("deprecation")

DB db = mongoClient.getDB(dbname);

for(String coll:collectionname) {

DBCollection getCollection=db.getCollection(coll);

BasicDBObject field = new BasicDBObject("clickid", 1);

BasicDBObject ops = new BasicDBObject("background",true).append("sparse",true);

getCollection.createIndex(field,ops);

//getCollection.insert((DBObject)com.mongodb.util.JSON.parse(inputjson));

System.out.println("\n index on? " + coll + " created "? );

}

//mongoClient.close();

} catch(Exception e) {

System.err.println( e.getClass().getName() + ": " + e.getMessage() );

}

finally {

if(mongoClient!=null) {

mongoClient.close();

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枣申,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子看杭,更是在濱河造成了極大的恐慌忠藤,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件楼雹,死亡現(xiàn)場離奇詭異模孩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贮缅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門榨咐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谴供,你說我怎么就攤上這事块茁。” “怎么了桂肌?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵数焊,是天一觀的道長。 經(jīng)常有香客問我轴或,道長,這世上最難降的妖魔是什么仰禀? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任照雁,我火速辦了婚禮,結(jié)果婚禮上答恶,老公的妹妹穿的比我還像新娘饺蚊。我一直安慰自己,他們只是感情好悬嗓,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布污呼。 她就那樣靜靜地躺著,像睡著了一般包竹。 火紅的嫁衣襯著肌膚如雪燕酷。 梳的紋絲不亂的頭發(fā)上籍凝,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機(jī)與錄音苗缩,去河邊找鬼饵蒂。 笑死,一個胖子當(dāng)著我的面吹牛酱讶,可吹牛的內(nèi)容都是我干的退盯。 我是一名探鬼主播,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼泻肯,長吁一口氣:“原來是場噩夢啊……” “哼渊迁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灶挟,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤琉朽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后膏萧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漓骚,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年榛泛,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝌蹂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡曹锨,死狀恐怖孤个,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沛简,我是刑警寧澤齐鲤,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站椒楣,受9級特大地震影響给郊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捧灰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一淆九、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧毛俏,春花似錦炭庙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至阀溶,卻和暖如春腻脏,著一層夾襖步出監(jiān)牢的瞬間鸦泳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工迹卢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辽故,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓腐碱,卻偏偏與公主長得像誊垢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子症见,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內(nèi)容