1 回答

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個贊
根據(jù)現(xiàn)有的信息,我可以推斷出:
您的機(jī)器似乎很慢,也許是嵌入式設(shè)備?
您調(diào)用的階段db-fetch
實(shí)際上并未訪問數(shù)據(jù)庫。唯一c.Find(...)
能做的就是建立一個*mgo.Query
價值。該方法有 6 行。這不應(yīng)超過一毫秒。除非在數(shù)據(jù)庫對象的內(nèi)部會話狀態(tài)上存在爭用,否則情況似乎并非如此,因?yàn)槟皇褂昧?4 個 goroutine。
瓶頸似乎是網(wǎng)絡(luò)和/或反射
query.All(&nodes)
是在您的數(shù)據(jù)庫上實(shí)際執(zhí)行查詢的地方。此外,這個階段會分配它需要的節(jié)點(diǎn)切片,然后通過反射將 bson 迭代解碼到您的結(jié)構(gòu)定義中。
你可以嘗試的一件事:
*mgo.iter
而不是query.All(...)
您可以使用query.Iter()
獲取 a*mgo.Iter
并在您的數(shù)據(jù)集上批量迭代。這可能會通過更好地隨時間分配網(wǎng)絡(luò)負(fù)載來提高性能。
使用地理空間索引,Mongo 支持
請參閱文檔。也許你已經(jīng)在這樣做了。如果沒有,它可能會縮短查找時間。
將您的象限遞歸地拆分為子象限。
我認(rèn)為這是顯而易見的。分而治之吧?:)
- 1 回答
- 0 關(guān)注
- 217 瀏覽
添加回答
舉報