我有一个小应用程序,我使用MongoDb(Mongoid)。该集合相对较小(约300条记录),但查询需要很长时间(大约12秒)。这是我的疑问:
query = Lead.order(:post_date.desc).cache
query = query.page(params['page_number']).cache if params['page_number']
query = query.per(params['page_size']).cache if params['page_size']
query = query.where(read: params['read']).cache if params['read']
query = query.where(important: @user.id.to_s).cache if params['important'] == "true"
query = query.where(starred: @user.id.to_s).cache if params['starred'] == "true"
我在Model上有一个fowling索引设置:
index({ post_date: 1 }, { background: true })
index({ read: 1 }, { background: true })
index({ important: 1 }, { background: true })
index({ starred: 1 }, { background: true })
所以我的问题是,1)如何提高此查询的性能; 2)是否有工具(如NewRelic,尽管NewRelic不提供有关如何提高查询性能的详细信息)或可监控查询的服务并建议改进?
提前致谢!
答案 0 :(得分:1)
CloudManager是付费的图形用户界面,提供(其中包括)性能分析和#34;如NewRelic"。
默认情况下,built-in profiler会记录慢查询(> 100毫秒),但可以打开(谨慎)记录所有内容。
.explain()用于分析特定查询的效果。
Compas是一个具有一些性能见解的官方GUI。
更多监控工具:https://docs.mongodb.com/manual/administration/monitoring/