閱讀221 返回首頁    go 阿裏雲 go 技術社區[雲棲]


MongoDB(3)——Index的創建流程1

1. 創建

除了用戶手動創建索引,係統會為每個Collection建立一個主鍵索引,下麵分析的就是這個主鍵索引的創建過程。
原來我們說到Collection的創建是在Database的createCollection中開始。

進入_getOrCreateCollectionInstance方法,確實有Collection的創建語句。

那麼Collection的構造函數又幹了些什麼?從下圖可以看到,Collection的構造過程中,確實做了一些與索引相關的工作,但還不知道究竟做了些什麼。我們繼續向下走。

進入init函數,其實並不是每一句都弄清楚了,但是看到_setupInMemoryStructures這個函數就吸引了我。

進入setupInMemoryStructures函數終於發現了看到了關於獲取index的函數,追蹤發現getIndex函數確實就是創建Index的方法。經過這一係列步驟,索引結構就確定了。

2. 插入數據建立索引
前麵我們說過Collection中是如何插入數據的,同樣是在_insertDocuments方法中,我們最後有一段沒有分析,如下圖所示代碼,首先獲得record的id,然後構造成一個bsonRecord,這個BsonRecord包含兩項,一個Id,一個指向Record的指針,這樣就構造了Index的一項,最後將這個索引節點插入。

最後更新:2017-05-29 11:01:49

  上一篇:go  MongoDB優化
  下一篇:go  公司網絡內員工上網總是閃斷,求助