Php MongoDB第一个查询很慢
我从mongodb那里得到了非常奇怪的行为 我有一个分片会话跟踪集合,如果我只在_id(=分片键)上找到了 在获取会话数据之前,我使用findOne(也在_id上)获取站点数据(非分片集合),我将站点数据缓存在memcached中,这样跟踪findOne大约需要0.04秒来获取 但是,当我在站点数据上禁用memcached并强制它从mongodb获取数据时,跟踪findOne需要0.001秒,而站点findOne现在很慢 首先向findOne站点解释情况2: 首先用findOne跟踪说明情况1:Php MongoDB第一个查询很慢,php,mongodb,Php,Mongodb,我从mongodb那里得到了非常奇怪的行为 我有一个分片会话跟踪集合,如果我只在_id(=分片键)上找到了 在获取会话数据之前,我使用findOne(也在_id上)获取站点数据(非分片集合),我将站点数据缓存在memcached中,这样跟踪findOne大约需要0.04秒来获取 但是,当我在站点数据上禁用memcached并强制它从mongodb获取数据时,跟踪findOne需要0.001秒,而站点findOne现在很慢 首先向findOne站点解释情况2: 首先用findOne跟踪说明情况1:
我使用的是PHP驱动程序1.4.4和mongodb v2.4.6版本显然这是因为在PHP中使用Mongo类而不是MongoClient类来连接。这是操作系统在第一次运行时缓存mongodb的工作集,也可能是第一次运行时的网络延迟。您可以尝试不使用
findOne
,而只是find
?我发现findOne
实际上比find
慢…节点之间的网络延迟平均为0.401ms,所以我认为这不是问题所在,可能是操作系统缓存了工作集,但我如何衡量这一点?explain()并没有真正向我展示任何东西。@RickyA我认为find和findOne在性能方面几乎没有区别。