2012-08-11 3 views
1

최근에 나는 많은 쿼리를 작성한다는 것을 알고 있습니다. (내 생각)MongoDB : 쿼리 번호

편집 :

난 그냥 내 응용 프로그램을 구축하는 방법을 분석 할 수 있는지 알고 싶습니다. top linux를 사용 하시겠습니까? 또는 브라우저에 사이트를로드하는 것만으로도 충분합니다. 검색어가 길어 지는지보기 위해 방화범을 사용하십시오. 서버 측 트릭이 없습니까? 예를 들어 8 페이지의 쿼리를로드하는 페이지를 보유하고 있습니다. 나는 그것이 많이라고 생각한다. 아니 ?

감사합니다. 쿼리 금액으로 http://www.mongodb.org/display/DOCS/Logging

을 -이 SQL에서와 같은 - 몇-쿼리 것과 같이 가능한 마음이 설정에 당신의 마음을 얻을 :

+0

그것은 아니다는 네가 여기서 묻고있는 걸 정리해라. 다시 말해 줄 수 있니? –

+0

편집 중입니다. 나는 선과 악을 어떻게하는지 안다. –

+0

아직 명확하지 않습니다. 당신이하는 일에 대한 예를 포함시킬 수 있습니까? – JohnnyHK

답변

2

모든 데이터베이스와 마찬가지로 쿼리 성능과 각 쿼리가 반환하는 데이터 효율성과 관련하여 고려해야하는 쿼리의 총 수와 다를 수 있습니다. 응용 프로그램 설계, 데이터 모델 및 색인에 따라 페이지 당 8 개의 쿼리가 예상되는 수입니다. 질의의 수에 관계없이, 일반적인 것들이 이라는 확실한 것인지 확인하고 싶습니다.

MongoDB에서 쿼리를 이해할 수있는 몇 가지 주요 장소가 있습니다.

1)를 사용하여 쿼리 계획 및 인덱스의 사용에 대한 자세한 정보를 얻을 수있는 쿼리와 explain() 기능 사용의 용이성 거친 위해

.

인덱스가 필요한지 또는 일반적인 쿼리에서 효과적으로 사용되는지 여부를 확인하기위한 시작점이되어야합니다.

2) 당신은 MongoDB를 데이터베이스에 대한 Database Profiler을 활성화 할 수 있습니다.

캡처 된 프로파일 링 정보는 explain() 출력과 유사하며 모든 읽기/쓰기 쿼리를 포함합니다. 느린 쿼리 만 보려는 경우 적절한 프로파일 링 수준을 설정할 수 있습니다. "느린 쿼리"의 기본값은 100ms이지만 필요에 따라이 값을 설정할 수 있습니다.

$ mongo mydb 
MongoDB shell version: 2.2.0-rc0 
connecting to: mydb 

> db.setProfilingLevel(2); 
{ "was" : 0, "slowms" : 100, "ok" : 1 } 

> db.getProfilingLevel() 
2 

"는 MongoDB의 쉘에서 모든 쿼리에 대한 프로파일 링을 사용하려면 문서는 viewing the profile data에 자세한 내용이 있습니다.

3) MongoDB에 보내기 전에 응용 프로그램/driver에서 생성 된 쿼리를 볼 수도 있습니다.

이렇게하는 지침 (또는 가능성)은 사용중인 드라이버에 따라 다릅니다 (드라이버 설명서를 확인하십시오).

4) 다른 프로파일 링 도구

프로파일 링 데이터를 분석하고 인덱스 권장 도움이 될 것입니다 몇 가지 유틸리티 애플 리케이션이 있습니다

+0

참고 : Explain()은 느린 쿼리를 판단하는 신뢰할 수있는 도구가 아니지만 – Sammaye

+0

@Sammaye : Explain은 쿼리 계획 및 인덱스 사용을 이해하는 데 유용합니다. 이는 쿼리가 느린 이유 중 하나 일 수 있습니다 (* 느린 쿼리와는 다릅니다). 또한 활동에 대한 개요는 [mongotop] (http://docs.mongodb.org/manual/reference/mongotop/)을 참조해야합니다. – Stennie

+0

다시 한번 나는 최근에 자신을 잘 설명하지 않는 것 같다. 쿼리에 의해 언급 된 '밀리 (millis)'는 쿼리의 속도를 판단하는 신뢰할만한 방법이 아니다. 대신 실제 시간을 판단하기 위해 데이터베이스 프로파일 러와 같은 프로파일 링 도구를 사용해야합니다. 사람들이 실수로 사용자 그룹에서 실수 한 것을 보았 기 때문에 나는 그것에 대해 메모를 추가 할뿐입니다. – Sammaye

0

당신은 속도가 느린 쿼리에 대한 MongoDB의 로그를 확인할 수 있습니다. MongoDB에 대한 규칙 책을 버리십시오. 예를 들어 커서를 반복 할 때마다 DB에서 스트림을 보내기 때문에 다시 쿼리를 실행하므로 8 개의 쿼리를 실행 중이지만 infact가 10 초를 이미 실행 중일 수 있다고 생각할 수 있습니다. Mongo의 결과 집합은 SQL과 같지 않으며 질의는 동일하지 않아야합니다.


는 나는이 후 질문을 대답 할 때 실제로하지 로깅 링크 프로파일 링크를 붙여 것을 깨달았지만 괜찮아 그래서 @Stennie 오른쪽 링크를 붙여.