2011-08-30 79 views
8

在我的Rails應用程序我使用mongoid並在日誌中幾乎每一個查詢之前,甚至在同樣的要求,確實也MongoDB的不斷查詢命名空間

MONGODB dbname['system.namespaces'].find({}) 

這是什麼做的?這是一個性能問題嗎?我可以以某種方式緩存,所以它不必一直這樣做,或者至少阻止它堵塞日誌?

編輯:下面是日誌的嘛其對數據庫進行操作,所以我看不出它的混亂,當你有你的正常查詢的日誌以及相關部分

Processing by FilesController#new as HTML 
Started GET "/" for 127.0.0.1 at Fri Sep 09 15:59:43 -0700 2011 
[Barista] Compiling all scripts for barista 
[Barista] Compiling all coffeescripts 
[Barista] Copying all javascripts 
MONGODB db['system.namespaces'].find({}) 
MONGODB db['users'].find({:_id=>BSON::ObjectId('4e6a949935d3e9726b000001')}) 
MONGODB db['system.namespaces'].find({}) 
MONGODB db['files'].find({:token=>"nonssb38"}) 
+0

在正常運行期間,沒有任何理由來查詢的命名空間集合。這些查詢是來自mongoid嗎? –

+0

我自己沒有做任何mongo,所以它必須是mongoid – jhchen

+0

你可以發佈你正在運行的完整查詢和整個查詢的日誌嗎?當它置於上下文中時,這可能會更有意義。 –

回答

1

。 MongoDB的documentation指出<dbname>.system.*名稱空間中保留了與數據庫相關的元數據。

你很可能無法緩存它,因爲它的數據可能需要在每個查詢上更新,作爲某些數據庫管家的一部分。我正在尋找一些具體答案的來源。

+0

mongo沒有理由爲每個查詢查詢名稱空間集合,事實上它沒有。這可能是mongoid自動嘗試做某些事情,在這種情況下,魔法要麼執行得不好,要麼OP執行錯誤。 –

+0

@Devin,Remon,你能詳細說明它查詢的是什麼信息,爲什麼它需要這個信息。我無法挖掘關於它的很多信息。 – Sid