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