Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MongoDB第一个查询很慢_Php_Mongodb - Fatal编程技术网

Php MongoDB第一个查询很慢

Php MongoDB第一个查询很慢,php,mongodb,Php,Mongodb,我从mongodb那里得到了非常奇怪的行为 我有一个分片会话跟踪集合,如果我只在_id(=分片键)上找到了 在获取会话数据之前,我使用findOne(也在_id上)获取站点数据(非分片集合),我将站点数据缓存在memcached中,这样跟踪findOne大约需要0.04秒来获取 但是,当我在站点数据上禁用memcached并强制它从mongodb获取数据时,跟踪findOne需要0.001秒,而站点findOne现在很慢 首先向findOne站点解释情况2: 首先用findOne跟踪说明情况1:

我从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在性能方面几乎没有区别。