복붙노트

[MONGODB] MongoDB의 색인 / RAM 관계

MONGODB

MongoDB의 색인 / RAM 관계

나는 새로운 프로젝트에 대한 MongoDB를 채택하기에 대해 그리고 난 유연성을 선택한 아니라 확장 성 때문에 하나의 기계에 실행됩니다. 문서와 웹 게시물에서 나는 모든 인덱스가 RAM에 있는지 계속 읽어. 이 단지 내 인덱스가 쉽게 사용 가능한 RAM의 양보다 더 큰 것으로 나에게 감각을하지 않습니다.

개별 인덱스 내 모든 인덱스가 모두 사용 가능한 RAM의 크기를 초과 할 경우에 할 수있는 모든 사용자 점유율이 인덱스 / RAM 관계에 대한 몇 가지 통찰력과 어떻게됩니까?

해결법

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

    1.MongoDB의는 RAM에 인덱스의 수있는 유지합니다. 그들은는 LRU 기준으로 밖으로 swaped됩니다. 당신은 자주 메모리에 "작업 집합"을 유지해야 제안 문서를 볼 수 있습니다 : 인덱스의 부분이 실제로 메모리에 맞게 접근하는 경우, 당신은 괜찮을거야.

    MongoDB의는 RAM에 인덱스의 수있는 유지합니다. 그들은는 LRU 기준으로 밖으로 swaped됩니다. 당신은 자주 메모리에 "작업 집합"을 유지해야 제안 문서를 볼 수 있습니다 : 인덱스의 부분이 실제로 메모리에 맞게 접근하는 경우, 당신은 괜찮을거야.

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

    2.그것은 작업 집합 크기 플러스 이상적으로 항상 RAM에 있어야 MongoDB를의 인덱스가 사용 가능한 RAM의 양을 즉해야 이상적 될 적어도 작업 집합 크기를 더한 인덱스의 크기 플러스 무엇 OS의 나머지 (운영체제) 및 동일한 시스템의 요구에서 실행중인 다른 소프트웨어. 사용 가능한 RAM이보다 작은 경우, LRUing 발생하고 따라서 우리는 상당한 침체를 ​​얻을 수있는 것입니다. 한 가지 유념해야 할 점은 인덱스에 BTREE 버킷은 우리가 역사적 데이터를 포함하여 인덱스에 키의 균일 한 분포를 가지고있는 경우 개별 인덱스 키 우리는 때를 비교 RAM에서 더 많은 인덱스해야 할 수도 있습니다, 즉,하지, 캐시이다 시간을 더한 뭔가에 복합 인덱스가 있습니다. 이 경고가 발생하지 않도록 후자와 같은 BTREE 양동이 키, 동시에 시대에서 일반적입니다. 또한, 우리는 BSON 우리의 필드 이름이 기록에 저장됩니다 (그러나 인덱스가) 우리가 메모리 압력을 받고있는 경우 그래서 그들은 짧게 유지해야 있음을 알아 두셔야합니다.

    그것은 작업 집합 크기 플러스 이상적으로 항상 RAM에 있어야 MongoDB를의 인덱스가 사용 가능한 RAM의 양을 즉해야 이상적 될 적어도 작업 집합 크기를 더한 인덱스의 크기 플러스 무엇 OS의 나머지 (운영체제) 및 동일한 시스템의 요구에서 실행중인 다른 소프트웨어. 사용 가능한 RAM이보다 작은 경우, LRUing 발생하고 따라서 우리는 상당한 침체를 ​​얻을 수있는 것입니다. 한 가지 유념해야 할 점은 인덱스에 BTREE 버킷은 우리가 역사적 데이터를 포함하여 인덱스에 키의 균일 한 분포를 가지고있는 경우 개별 인덱스 키 우리는 때를 비교 RAM에서 더 많은 인덱스해야 할 수도 있습니다, 즉,하지, 캐시이다 시간을 더한 뭔가에 복합 인덱스가 있습니다. 이 경고가 발생하지 않도록 후자와 같은 BTREE 양동이 키, 동시에 시대에서 일반적입니다. 또한, 우리는 BSON 우리의 필드 이름이 기록에 저장됩니다 (그러나 인덱스가) 우리가 메모리 압력을 받고있는 경우 그래서 그들은 짧게 유지해야 있음을 알아 두셔야합니다.

    (물론 또한 RAM에 대한 인) MongoDB를 현재의 가상 메모리 사용에 관심이있는 사람들은 mongod의 상태를 살펴 수 있습니다.

    @see http://www.markus-gattol.name/ws/mongodb.html#sec7

  3. from https://stackoverflow.com/questions/2811299/mongodb-index-ram-relationship by cc-by-sa and MIT license