복붙노트

[MONGODB] 인덱스를 사용하지 않는 쿼리를 찾거나 MongoDB를 둔화하는 방법

MONGODB

인덱스를 사용하지 않는 쿼리를 찾거나 MongoDB를 둔화하는 방법

인덱스를 사용하거나 느린되지 않습니다 MongoDB의에 쿼리를 찾을 수있는 방법은 무엇입니까? MySQL의에서 구성 파일 안에 다음과 같은 설정으로 가능하다 :

log-queries-not-using-indexes = 1
log_slow_queries = /tmp/slowmysql.log

해결법

  1. ==============================

    1.MongoDB의에서 이에 해당하는 접근 방식은 속도가 느린 쿼리를 추적하고 진단 할 쿼리 프로파일 러를 사용하는 것입니다.

    MongoDB의에서 이에 해당하는 접근 방식은 속도가 느린 쿼리를 추적하고 진단 할 쿼리 프로파일 러를 사용하는 것입니다.

    데이터베이스를 사용할 수 프로파일 링, 느린 동작은 (기본적으로 크기가 1MB의 임) system.profile 덮인 컬렉션에 기록됩니다. 당신은 slowms 매개 변수를 사용 (기본값이 100ms로) 느린 작업에 대한 임계 값을 조정할 수 있습니다.

  2. ==============================

    2.첫째, 당신은 로그 레벨은 당신이 원하는 무엇을 지정하여 프로파일을 설정해야합니다. 3 옵션은 다음과 같습니다

    첫째, 당신은 로그 레벨은 당신이 원하는 무엇을 지정하여 프로파일을 설정해야합니다. 3 옵션은 다음과 같습니다

    당신은 --profile 옵션 데몬 당신의 mongod를 실행하여이 작업을 수행 :

    mongod --profile 2 --slowms 20

    이와 함께, 로그는 다음과 같이 쿼리를 수행 할 수있는에 system.profile 수집, 기록됩니다 :

    db.system.profile.find ({. NS / <컬렉션> /}) .sort (TS {1});

    db.system.profile.find (밀리 {{$ GT를 5}}) .sort (TS {1});

  3. ==============================

    3.다음 두 mongod 옵션을 사용할 수 있습니다. 첫 번째 옵션은 지수 (V 2.4 만) 사용하지 않는 쿼리, 느린 몇 밀리 초 임계 값보다 두 번째 기록 쿼리 (기본값은이 100ms입니다) 실패

    다음 두 mongod 옵션을 사용할 수 있습니다. 첫 번째 옵션은 지수 (V 2.4 만) 사용하지 않는 쿼리, 느린 몇 밀리 초 임계 값보다 두 번째 기록 쿼리 (기본값은이 100ms입니다) 실패

    --notablescan
    
    Forbids operations that require a table scan.
    
    --slowms <value>
    
    Defines the value of “slow,” for the --profile option. The database logs all slow queries to the log, even when the profiler is not turned on. When the database profiler is on, mongod the profiler writes to the system.profile collection. See the profile command for more information on the database profiler.
    
  4. ==============================

    4.당신은 콘솔 내에서 더 읽을 수있는 형식으로 프로파일 러의 로그를 읽을 수있는 명령 줄 도구 mongotail를 사용할 수 있습니다.

    당신은 콘솔 내에서 더 읽을 수있는 형식으로 프로파일 러의 로그를 읽을 수있는 명령 줄 도구 mongotail를 사용할 수 있습니다.

    먼저 프로파일을 활성화하고 느린 동작을 고려하는 프로파일에 대한 밀리 초 임계 값을 설정합니다. 다음 예에서 임계 값은 "판매"라는 이름의 데이터베이스에 대한 10 밀리 초로 설정 :

    $ mongotail sales -l 1
    Profiling level set to level 1
    $ mongotail sales -s 10
    Threshold profiling set to 10 milliseconds
    

    그런 다음, 각 쿼리가 걸렸다거나 "도보"에 필요한 얼마나 많은 레지스트리 특정 결과를 찾기 위해 시간과 같은 몇 가지 추가 정보와 함께, 느린 쿼리를 "실시간"으로 볼 수 있습니다 :

    $ mongotail sales -f -m millis nscanned docsExamined
    2016-08-11 15:09:10.930 QUERY   [ops] : {"deleted": {"$exists": false}, "prod_id": "367133"}. 8 returned. nscanned: 344502. millis: 12
    2016-08-11 15:09:10.981 QUERY   [ops] : {"deleted": {"$exists": false}, "prod_id": "367440"}. 6 returned. nscanned: 345444. millis: 12
    ....
    
  5. ==============================

    5.경우 누군가가이 오래된 질문에 여기에 구글의 끝에서, 나는 정말 내가 로그에서 COLLSCANs의 원인이되었다 볼 수 있다는 특정 쿼리를 해결 도움이 설명하는 것을 발견했다.

    경우 누군가가이 오래된 질문에 여기에 구글의 끝에서, 나는 정말 내가 로그에서 COLLSCANs의 원인이되었다 볼 수 있다는 특정 쿼리를 해결 도움이 설명하는 것을 발견했다.

    예:

    db.collection.find (). 설명 ()

    쿼리가 다른 것들 사이에서 COLLSCAN (기본 커서) 또는 인덱스 (BTREE)를 사용하는 경우이를 알려드립니다.

    https://docs.mongodb.com/manual/reference/method/cursor.explain/

  6. ==============================

    6.어떤에 내가 실제로 사랑에 빠지게 인해 당신은 분명 프로파일에게 몽고 DB의 아주 깔끔한 기능을 사용할 수 있지만 몽고 DB MMS이다. 60 초 이내에 이동합니다 어디서나 관리 할 수 ​​있습니다. 나는 당신을 사랑합니다 확신합니다. https://mms.mongodb.com/

    어떤에 내가 실제로 사랑에 빠지게 인해 당신은 분명 프로파일에게 몽고 DB의 아주 깔끔한 기능을 사용할 수 있지만 몽고 DB MMS이다. 60 초 이내에 이동합니다 어디서나 관리 할 수 ​​있습니다. 나는 당신을 사랑합니다 확신합니다. https://mms.mongodb.com/

  7. from https://stackoverflow.com/questions/18451681/how-to-find-queries-not-using-indexes-or-slow-in-mongodb by cc-by-sa and MIT license