programing

mongodb: 집계 명령의 실행 시간을 어떻게 볼 수 있습니까?

muds 2023. 6. 20. 21:53
반응형

mongodb: 집계 명령의 실행 시간을 어떻게 볼 수 있습니까?

mongo shell에서 다음 mongodb 명령을 실행합니다.

db.coll.aggregate(...)

그리고 결과 목록을 봅니다. 하지만 쿼리 실행 시간을 볼 수 있습니까?집계 쿼리에 대한 방법을 설명할 수 있는 동등한 기능이 있습니까?

var before = new Date()
#aggregation query
var after = new Date()
execution_mills = after - before

추가할 수 있습니다.time파일에 대한 기능(홈 디렉토리):

function time(command) {
    const t1 = new Date();
    const result = command();
    const t2 = new Date();
    print("time: " + (t2 - t1) + "ms");
    return result; 
}

그런 다음 다음과 같이 사용할 수 있습니다.

time(() => db.coll.aggregate(...))

주의.

이 방법은 다음과 관련된 결과를 제공하지 않습니다.db.collection.find()

나는 mongodb에서 이 두 가지 명령을 사용할 가능성이 있다는 것을 알 수 있습니다.

  • db.set 프로파일링 수준(2)

  • 쿼리 후에 db.system을 사용할 수 있습니다.profile.find()는 쿼리 실행 시간 및 기타를 확인합니다.

아니면 모든 쿼리를 자동으로 실행하는 우수한 몽고 해커를 설치할 수 있습니다.pretty()적합, 출력 색상 지정, 키 정렬 등:

enter image description here

제가 이것을 더 잘 설명하기 위해 답변을 쓰겠습니다.

기본적으로 집계 프레임워크에 대한 설명() 기능은 아직 없습니다. https://jira.mongodb.org/browse/SERVER-4504

그러나 클라이언트 측면을 측정하는 방법이 있지만 단점이 없는 것은 아닙니다.

  • 데이터베이스를 측정하고 있지 않습니다.
  • 응용 프로그램을 측정하는 중입니다.
  • 정확한 판독이 불가능할 정도로 부품 사이에 알 수 없는 부분이 너무 많습니다. 즉, 문서 결과가 MongoDB 서버에 의해 공식화되고 직렬화되어 유선으로 전송되는 데 0.04ms가 걸렸다고 할 수 없습니다.앱에서 삭제된 다음 해시에 저장되므로 집계 벤치마크를 얻기 위해 총합에서 해당 합계를 뺄 수 있습니다.

그러나, 당신은 그것을 같은 서버의 MongoDB 콘솔에서 실행함으로써 약간의 정확한 결과를 얻을 수 있을 것입니다.mongos/mongod이것은 그 사이에 거의 만들어지지 않을 것이고, 여전히 너무 많지만 여러분이 대략 믿을 수 있는 독서를 얻기에는 충분할 것입니다.따라서 당신은 그 위치에서 @ 자고룰킨의 대답을 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/14021605/mongodb-how-can-i-see-the-execution-time-for-the-aggregate-command

반응형