정의
- db.setProfilingLevel(level, options)
- 버전 5.0에서 변경됨 - mongod인스턴스의 경우 이 메서드는 데이터베이스 프로파일러를 활성화, 비활성화 또는 구성합니다. 프로파일러는 실행 중인- mongod인스턴스에서 쓰기 작업, 커서 및 데이터베이스 명령의 성능에 대한 데이터를 캡처하고 기록합니다. 프로파일러가 비활성화된 경우 이 메서드는 저속 작업이 진단 로그에 기록되는 방식을 구성합니다.- 참고- db.setProfilingLevel()이 포함된 프로파일링 수준의 변경 사항은 지속되지 않습니다. 서버가 다시 시작되면 이 값은- 0(기본값) 또는- operationProfiling.mode설정이나- --profile명령줄 옵션으로 설정된 값으로 되돌아갑니다.- 데이터베이스 프로파일러 수준이 - 1또는- 2(특히 데이터베이스 프로파일러가 활성화된 경우)인 경우 slowms, SampleRate는 프로파일러와- diagnostic log모두의 동작에 영향을 미칩니다.- 데이터베이스 프로파일러 수준이 - 0일 경우(특히, 데이터베이스 프로파일러가 비활성화된 경우), slowms와 sampleRate는 진단 로그에만 영향을 줍니다.- mongos인스턴스를 사용하면 이 메서드는- slowms,- sampleRate,- filter구성 설정을 설정하여 진단 로그에 작업이 기록되는 방식을 구성합니다.- mongos에는 프로파일러가 쓸 수 있는 컬렉션이 없으므로- mongos인스턴스에 데이터베이스 프로파일러를 활성화할 수 없습니다.- mongos인스턴스의 경우- profile수준은- 0이어야 합니다.- mongod및- mongos인스턴스에 필터를 지정하여 프로파일러가 어떤 작업을 기록하도록 할지 제어할 수 있습니다. 프로파일러에- filter를 지정하면 프로파일링 및 느린 쿼리 로그 줄에 slowms 및 sampleRate 옵션이 사용되지 않습니다.- db.setProfilingLevel()은- profile명령에 대한 래퍼(wrapper)를 제공합니다.- MongoDB 5.0부터 - profile명령 또는- db.setProfilingLevel()래퍼(wrapper) 메서드를 사용하여 데이터베이스 프로파일러- level,- slowms,- sampleRate또는- filter에 대한 변경 사항이- log file에 기록됩니다.
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
- MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스 
중요
이 명령은 M0 및 Flex 클러스터에서 지원되지 않습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.
- MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전 
- MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전 
구문
db.setProfilingLevel() 메서드의 형식은 다음과 같습니다.
db.setProfilingLevel(<level>, <options>) 
매개변수
| Parameter | 유형 | 설명 | ||||||
|---|---|---|---|---|---|---|---|---|
| integer | 데이터베이스 프로파일러 수준을 구성합니다. 사용할 수 있는 프로파일러 수준은 다음과 같습니다. 
 에서  | |||||||
| 문서 또는 정수 | 선택 사항. 정수 또는 옵션 문서 허용합니다. 문서 대신 인수로 정수 값이 전달되면 해당 값이  
 | 
반환
이 메서드는 해당 설정의 이전 값이 포함된 문서를 반환합니다.
{    "was" : 2,    "slowms" : 100,    "sampleRate" : 1,    "filter" : {       "$and" : [          {             "op" : {                "$eq" : "query"             }          },          {             "millis" : {                "$gt" : 20000             }          }       ]    },    "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.",    "ok" : 1 } 
{    "was" : 0,    "slowms" : 100,    "sampleRate" : 1,    "filter" : {       "$and" : [          {             "op" : {                "$eq" : "query"             }          },          {             "millis" : {                "$gte" : 2000             }          }       ]    },    "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.",    "ok" : 1,    "$clusterTime" : {       "clusterTime" : Timestamp(1572991238, 1),       "signature" : {          "hash" : BinData(0,"hg6GnlrVhV9MAhwWdeHmHQ4T4qU="),          "keyId" : Long("6755945537557495811")       }    },    "operationTime" : Timestamp(1572991238, 1) } 
{    "was" : 0,    "slowms" : 100,    "sampleRate" : 1,    "filter" : {       "$and" : [          {             "op" : {                "$eq" : "query"             }          },          {             "millis" : {                "$gte" : 2000             }          }       ]    },    "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.",    "ok" : 1,    "operationTime" : Timestamp(1572991499, 2),    "$clusterTime" : {       "clusterTime" : Timestamp(1572991499, 2),       "signature" : {          "hash" : BinData(0,"nhCquIxUw7thlrBudXe3PnsnvP0="),          "keyId" : Long("6755946491040235540")       }    } } 
구제척으로:
- was는 이전 수준 설정입니다.
- slowms는 이전 slowms 설정입니다.
- sampleRate는 이전 sampleRate 설정입니다.
- filter는 이전 필터 설정입니다.
- note는- filter의 동작을 설명하는 문자열입니다. 이 필드는- filter도 있는 경우에만 출력에 나타납니다.
참고
filter 및 note 필드는 이전 수준 설정에 있었던 경우에만 출력에 나타납니다.
현재 프로파일링 수준을 보려면 db.getProfilingStatus()를 참조하세요.
행동
경고
프로파일링은 성능을 저하시키고 시스템 로그에서 암호화되지 않은 쿼리 데이터를 노출시킬 수 있습니다. 프로덕션 배포서버에서 프로파일러를 구성하고 활성화하기 전에 이것이 성능과 보안에 미치는 영향을 신중하게 고려하세요.
잠재적인 성능 저하에 대한 자세한 내용은 프로파일러 오버헤드를 참조하십시오.
예시
프로파일러 활성화 및 저속 작업 임계값과 샘플 속도 설정
다음은 mongod 인스턴스에서 설정할 수 있는 값의 예입니다.
- 프로파일링 수준을 - 1로 설정합니다.
- 느린 작업 임계값 slowms: - 20밀리초
- sampleRate: - 0.42
db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 }) 
이 작업은 이전 설정 값이 포함된 문서를 반환합니다.
현재 프로파일링 수준을 보려면 db.getProfilingStatus()를 참조하세요.
프로파일러 비활성화 및 저속 작업 임계값과 샘플 속도 설정
다음은 mongod 또는 mongos 인스턴스에서 설정할 수 있는 값의 예입니다.
- 프로파일링 수준을 - 0로 설정합니다.
- 느린 작업 임계값 slowms: - 20밀리초
- sampleRate: - 0.42
db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 }) 
이 작업은 이전 설정 값이 포함된 문서를 반환합니다.
현재 프로파일링 수준을 보려면 db.getProfilingStatus()를 참조하세요.
프로파일링될 작업을 결정하기 위한 필터 설정
다음은 mongod 인스턴스에서 설정할 수 있는 값의 예입니다.
db.setProfilingLevel( 1, { filter: { op: "query", millis: { $gt: 2000 } } } ) 
이 작업은 이전 설정 값이 포함된 문서를 반환합니다.
현재 프로파일링 수준을 보려면 db.getProfilingStatus()를 참조하세요.
필터 설정 해제
프로필 필터를 지우려면 filter: "unset" 옵션으로 db.setProfilingLevel()을 실행합니다.
db.setProfilingLevel( 1, { filter: "unset" } ) 
이 작업은 이전 설정 값이 포함된 문서를 반환합니다.
현재 프로파일링 수준을 보려면 db.getProfilingStatus()를 참조하세요.