1
我從MongoDB中得到了很奇怪的行爲。MongoDB第一個查詢很慢
我有一個分片會話跟蹤集合是我做findOne只在_id(=分片鍵)上。
在獲取會話數據之前,我還通過findOne(同樣在_id上)獲取站點數據(非分片集合),我將站點數據緩存在memcached中,這樣跟蹤findOne需要大約0.04秒的時間才能獲取。
但是,當我禁用站點數據上的memcached並強制它從mongodb獲取數據時,跟蹤findOne需要0.001秒,而站點findOne現在很慢。
說明情況2 findOne網站第一:http://pastebin.com/qTX0az7H
說明情況1 findOne跟蹤第一:http://pastebin.com/bBSXUEKh
我使用的是PHP 1.4.4驅動和MongoDB版本v2.4.6
這是操作系統在第一次運行時緩存MongoDB的工作集,也可能是第一次運行時的網絡延遲 – Sammaye
您可以嘗試不使用'findOne',而只是'find'?我發現'findOne'實際上比'find'慢... – RickyA
節點之間的網絡延遲avg 0.401ms,所以我不認爲這會是問題,它可能是操作系統緩存工作集,但我將如何測量這個? explain()並不真正向我展示任何東西。 – Vincent