Docs Menu

configureQueryAnalyzer

configureQueryAnalyzer

버전 7.0에 추가.

복제본 세트 또는 샤드 클러스터에서 컬렉션에 대한 쿼리 샘플링을 구성합니다. 샘플링된 쿼리는 샤드 키의 읽기 및 쓰기 분포에 대한 지표를 계산하기 위해 analyzeShardKey 에 정보를 제공합니다.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

참고

이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 관해 자세히 알아보려면 지원되지 않는 명령을 참조하십시오.

명령은 다음과 같은 구문을 가집니다:

db.adminCommand(
{
configureQueryAnalyzer: <string>,
mode: <string>,
samplesPerSecond: <double>
}
)

configureQueryAnalyzer 에는 다음과 같은 필드가 있습니다.

필드
유형
필요성
설명

configureQueryAnalyzer

문자열

필수 사항

쿼리 샘플링을 위해 구성할 컬렉션의 네임스페이스 입니다.

mode

문자열

필수 사항

쿼리 분석기가 실행되는 모드입니다. "full" 또는 "off" 로 설정해야 합니다.

samplesPerSecond

double

옵션

초당 샘플 수입니다.

  • mode"full" 로 설정하면 050 사이에 samplesPerSecond 를 설정해야 합니다.

  • mode"off" 로 설정하면 서버는 samplesPerSecond 을(를) 무시합니다.

자세한 내용은 samplesPerSecond 상한을 참조하세요.

configureQueryAnalyzer 에는 다음 역할 중 하나가 필요합니다.

  • 분석 중인 컬렉션 이 포함된 데이터베이스 에 대한 dbAdmin 역할

  • 클러스터 에 대한 clusterManager 역할

configureQueryAnalyzer 을(를) 실행할 때 다음 동작을 고려하세요.

collection이 삭제되거나 이름을 바꾸면 Query 샘플링이 자동으로 비활성화됩니다. collection을 다시 만들거나 이름을 바꾼 후 쿼리를 샘플링하려면 쿼리 샘플링을 다시 구성해야 합니다.

The upper limit for samplesPerSecond is 50. 속도가 높을수록 샘플링된 쿼리가 4일 이내에 10GB의 디스크 공간을 채우게 됩니다.

이 표는 각 샘플 속도 및 기간 조합에 대한 예상 디스크 사용량을 보여줍니다.

평균 샘플링된 쿼리 크기(kB)
samplesPerSecond
샘플링 기간(일)
샘플링된 쿼리 수
샘플링된 쿼리의 총 크기(GB)

0.5

0.1

7

60,480

0.03024

0.5

10

7

6,048,000

3.024

0.5

50

7

30,240,000

15.12

1000

50

1

4,320,000

4320

16,000

50

1

432,0000

69,120

샘플링된 쿼리는 expireAfterSeconds 가 포함된 TTL 인덱스가 있는 내부 collection에 저장됩니다. expireAfterSeconds 을(를) 구성하려면 queryAnalysisSampleExpirationSecs 서버 매개 변수를 사용합니다. 샘플링된 쿼리는 queryAnalysisSampleExpirationSecs 이후 자동으로 삭제됩니다.

쿼리 샘플링 프로세스를 모니터링하려면 $currentOp 단계를 사용하세요. 예시는 샘플링된 쿼리를 참조하세요.

모든 컬렉션 또는 특정 컬렉션에 대해 샘플링된 쿼리를 보려면 $listSampledQueries 집계 단계를 사용합니다.

쿼리 분석기 에서 캡처한 모든 명령 유형의 개수를 확인하려면 다음을 사용하세요.

db.getSiblingDB("admin").aggregate( [
{ "$listSampledQueries": { ns: "<db.collectionName>" } },
{
"$group": {
"_id": {
ns: "$ns",
cmdName: "$cmdName"
},
count: { "$sum": 1 }
}
},
{
"$project": {
"_id.ns": 1,
"_id.cmdName": 1,
"count": 1 // Explicitly include fields to output
}
},
{ "$sort": { "_id.ns": 1 } }
] );
[{ count: 10, cmdName: 'aggregate' },
{ count: 51, cmdName: 'delete' },
{ count: 25, cmdName: 'distinct' },
{ count: 100, cmdName: 'find' },
{ count: 24, cmdName: 'findAndModify' },
{ count: 7, cmdName: 'update' }]

샘플이 충분하면 쿼리 분석기 비활성화할 수 있습니다.

  • Atlas 공유 클러스터 및 서버리스 인스턴스에서는 configureQueryAnalyzer 를 실행 수 없습니다.

  • 독립형 배포에서는 configureQueryAnalyzer 를 실행할 수 없습니다.

  • --shardsvr 복제본 세트에 대해 직접 configureQueryAnalyzer 를 실행할 수 없습니다. 샤드 cluster에서 실행할 때는 configureQueryAnalyzer 을(를) mongos 에 대해 실행해야 합니다.

  • time-series collection에 대해 configureQueryAnalyzer 를 실행할 수 없습니다.

  • Queryable Encryption을 사용하는 컬렉션에 대해 configureQueryAnalyzer 를 실행할 수 없습니다.

configureQueryAnalyzer 은(는) 이전 구성을 설명하는 필드(있는 경우)와 새 구성을 설명하는 필드가 포함된 문서 를 반환합니다.

  • oldConfiguration, 이전 구성을 설명하는 필드가 있는 경우 이를 포함합니다.

  • newConfiguration 에는 새 구성을 설명하는 필드가 포함되어 있습니다.

configureQueryAnalyzer 은 다음과 유사한 문서 를 반환합니다.

{
ok: 1,
oldConfiguration: {
mode: ...,
samplesPerSecond: ...
}
newConfiguration: {
...
}
}

초당 5개의 샘플 속도로 test.students 컬렉션에서 쿼리 샘플링을 활성화하려면 다음 명령을 사용합니다.

db.adminCommand(
{
configureQueryAnalyzer: "test.students",
mode: "full",
samplesPerSecond: 5
}
)

test.students collection에서 쿼리 샘플링을 비활성화하려면 다음 명령을 사용합니다.

db.adminCommand(
{
configureQueryAnalyzer: "test.students",
mode: "off"
}
)