2013-10-08 4 views
1

mongodb에서 정말 이상한 행동이 나타납니다.MongoDB 첫 번째 쿼리가 느림

나는 findid가 _id (= 샤드 키)에서만 수행하는 샤드 세션 추적 컬렉션을 가지고 있습니다.

세션 데이터를 가져 오기 전에 findOne (또한 _id에서)과 함께 사이트 데이터를 가져오고 memcached에서 사이트 데이터를 캐시합니다. 이렇게하면 findOne 추적에 약 0.04 초가 걸립니다.

그러나 사이트 데이터에 memcached를 사용하지 않도록 설정하고 강제로 mongodb에서 데이터를 가져 오면 findOne 추적에 0.001 초가 걸리고 사이트 findOne이 느려집니다. http://pastebin.com/qTX0az7H

가 findOne 먼저 추적과 상황 1 설명 : http://pastebin.com/bBSXUEKh

나는 PHP 드라이버 1.4.4 및 MongoDB를 버전 v2.4.6

+1

첫 번째 실행에서 MongoDB의 작업 집합을 캐싱하는 OS이며, 첫 번째 실행시 네트워크 대기 시간이 될 수도 있습니다. – Sammaye

+0

'findOne'을 사용하지 않고'find' 만 사용해도 될까요? 나는'findOne'이 실제로'find'보다 느리다는 것을 발견했습니다 ... – RickyA

+0

노드 사이의 네트워크 대기 시간은 평균 0.401ms입니다. 그래서 문제가 될 것이라고 생각하지 않습니다. 작동하는 운영 체제를 캐싱하는 OS가 될 수는 있지만 어떻게 측정합니까? 이? explain()은 나에게 아무 것도 보여주지 않습니다. – Vincent

답변

0

을 사용하고

첫 findOne 사이트와 상황이 설명 분명히 이것은 PHP에서 MongoClient 클래스 대신 Mongo 클래스를 사용하여 연결했기 때문입니다.