MongoDB 캐시 시스템 이해
이것은 기본적인 질문이지만, 매우 중요하며, 저는 정말 요점을 이해할 수 없습니다.
우리가 읽을 수 있는 공식 문서에서.
MongoDB는 가장 최근에 사용된 모든 데이터를 RAM에 저장합니다.쿼리에 대한 인덱스를 만들고 작업 데이터 세트가 RAM에 맞으면 MongoDB는 메모리에서 모든 쿼리를 처리합니다.
제가 이해할 수 없는 부분은
쿼리에 대한 인덱스를 만들고 작업 데이터 세트가 RAM에 적합한 경우
여기서 "지옥"은 무엇을 의미합니까?
예를 들어, 모델을 업데이트한 경우, 업데이트를 했기 때문에 RAM에 저장되어 있기 때문에 메모리에서 가져올 수 있지만, 이것은 제가 생각하기에 매우 명확하지 않습니다.
쿼리하는 데이터가 메모리에서 전송되는지 여부를 어떻게 확인할 수 있습니까?MongoDB가 현재 사용 가능한 메모리에 대한 데이터를 캐시하기 위해 사용 가능한 메모리를 사용하는 것은 이해하지만, 누군가 글로벌 행동을 더 설명할 수 있습니까?
MongoDB 캐시 시스템을 신뢰하는 것보다 데이터를 저장하는 노드 서버에서 변수를 사용하는 것이 더 나은 경우가 있습니까?
거대한 트래픽에 대해 세계적으로 MongoDB를 사용할 것을 어떻게 조언합니까?
참고: 이 문서는 MongoDB가 아직 젊었을 때인 2013년에 작성되었습니다. 현재 MongoDB가 구현하고 있는 다른 스토리지 기술(예: WiredTiger 또는 Percona)에는 해당되지 않지만, MongoDB가 현재 구현하고 있는 다른 스토리지 기술(예: Wired Tiger 또는 Percona)에는 해당되지 않습니다.
인덱스가 무엇인지 정확하게 이해하기 시작하기에 좋은 장소: http://docs.mongodb.org/manual/core/indexes/
하지만 여러분이 그것을 이해한 후에 여러분은 왜 그들이 그렇게 좋은지 알게 될 것이고, 더 복잡한 질문들 중 몇 가지로 넘어가세요.
쿼리하는 데이터가 메모리에서 전송되는지 여부를 어떻게 확인할 수 있습니까?
한 가지 방법은 다음을 살펴보는 것입니다.yields모든 쿼리의 필드explain()데이터가 RAM에 없어서 판독기가 잠금을 해제한 횟수를 알 수 있습니다.
또 다른 심층적인 방법은 mongostat와 같은 프로그램과 다른 그러한 프로그램을 살펴보는 것입니다.이러한 프로그램은 디스크에서 RAM으로 데이터를 페이징해야 할 때 발생하는 페이지 장애에 대해 알려줍니다.mongod.
MongoDB가 현재 사용 가능한 메모리에 대한 데이터를 캐시하기 위해 사용 가능한 메모리를 사용하는 것은 이해하지만, 누군가 글로벌 행동을 더 설명할 수 있습니까?
이것은 사실 정확하지 않습니다.MongoDB는 이것을 한다고 말하는 것이 더 쉽지만 실제로는 그렇지 않습니다.실제로 MongoDB를 위해 이를 수행하는 것은 OS와 자체 페이징 알고리즘, 대개 LRU입니다.MongoDB는 일정 기간 동안 인덱스 계획을 캐시하여 인덱스를 지속적으로 확인하고 테스트할 필요가 없습니다.
MongoDB 캐시 시스템을 신뢰하는 것보다 데이터를 저장하는 노드 서버에서 변수를 사용하는 것이 더 나은 경우가 있습니까?
그게 어떻게 될지는 모르겠지만,제 말은 두 가지가 상당히 다른 일을 한다는 것입니다. 시작할 때 MongoDB의 데이터를 애플리케이션으로 읽어 들일 생각이라면 저는 절대로 추천하지 않을 것입니다.
게다가 메모리 관리를 위한 OS 알고리즘은 매우 성숙하고 빠르기 때문에 괜찮습니다.
거대한 트래픽에 대해 세계적으로 MongoDB를 사용할 것을 어떻게 조언합니까?
흠, 이것은 정말 큰 질문입니다.이 주제에 대해서는 Google을 조금 사용하는 것이 좋으나 설명서에 나와 있듯이 작업 세트가 하나의 RAM에 맞는지 확인해야 합니다.
여기 좋은 출발점이 있습니다.MongoDB의 RAM에 "작업 세트"를 장착한다는 것은 무엇을 의미합니까?
MongoDB는 전체 컬렉션을 메모리에 저장하려고 시도합니다. 즉, 각 컬렉션 페이지를 메모리 매핑합니다.모든 것이 메모리에 저장되려면 데이터 페이지와 이를 참조하는 인덱스가 모두 메모리에 저장되어야 합니다.
MongoDB가 레코드를 반환하는 경우 쿼리 이전인지 여부에 관계없이 해당 레코드가 메모리에 저장되어 있음을 확인할 수 있습니다.
MongoDB는 웹 브라우저와 같은 방식으로 레코드의 "캐시"를 보관하지 않습니다.변경 내용을 커밋하면 메모리와 디스크가 모두 업데이트됩니다.
Mongo는 적절한 사용 사례와 일치하면 좋습니다.모든 것을 캐시할 수 있는 충분한 서버 메모리가 있으면 매우 높은 성능을 발휘하며, 이 시점을 지나면 급격히 감소합니다.많은, 많은 대용량 웹사이트들이 MongoDB를 사용합니다. 메모리가 저렴해진 것은 좋은 일입니다.
언급URL : https://stackoverflow.com/questions/17534628/understand-mongodb-cache-system
'programing' 카테고리의 다른 글
| 각도 재료의 기본 정렬 - 머리글 정렬 (0) | 2023.05.14 |
|---|---|
| 문자열을 별도의 변수로 분할 (0) | 2023.05.14 |
| "ViewController라는 클래스에 대한 정보를 찾을 수 없습니다." (0) | 2023.05.14 |
| AWS 람다 함수가 다른 함수를 호출할 수 있습니까? (0) | 2023.05.14 |
| 내부의.SQL Azure의 Net Framework 데이터 공급자 오류 6 (0) | 2023.05.14 |