Program Tip

MongoDB 용 RAM에 "작업 세트"를 맞추는 것은 무엇을 의미합니까?

programtip 2020. 11. 28. 10:19
반응형

MongoDB 용 RAM에 "작업 세트"를 맞추는 것은 무엇을 의미합니까?


MongoDB는 빠르지 만 작업 세트 또는 인덱스가 RAM에 맞을 때만 가능합니다. 그렇다면 내 서버에 16G의 RAM이 있다면 모든 컬렉션의 크기가 16G보다 작거나 같아야 함을 의미합니까? "ok this is my working set, 나머지는"보관 "할 수 있습니까?


"작업 세트"는 기본적으로 시스템에서 활성 / 사용중인 데이터 및 인덱스의 양입니다.

예를 들어 1 년 분량의 데이터가 있다고 가정합니다. 간단하게하기 위해 매월 1GB의 데이터가 총 12GB를 제공하고, 매월의 데이터를 처리하기 위해 1GB의 인덱스가 다시 총 12GB가됩니다.

지난 12 개월 분량의 데이터에 항상 액세스하는 경우 작업 세트는 12GB (데이터) + 12GB (인덱스) = 24GB입니다.

그러나 실제로 지난 3 개월 분량의 데이터에만 액세스하는 경우 작업 세트는 3GB (데이터) + 3GB (인덱스) = 6GB입니다. 이 시나리오에서 8GB RAM이 있고 지난 6 개월 분량의 데이터에 정기적으로 액세스하기 시작하면 작업 세트가 사용 가능한 RAM을 초과하여 성능에 영향을 미치기 시작합니다.

그러나 일반적으로 자주 액세스 할 것으로 예상되는 데이터 / 인덱스의 양을 처리하기에 충분한 RAM이 있다면 괜찮습니다.

편집 : 댓글에있는 질문에 대한 응답
나는 내가 잘 따르는 지 잘 모르겠지만 대답 할 것입니다. 첫째, 작업 세트에 대한 계산은 "야구장 그림"입니다. 둘째, user_id에 (예) 1GB 인덱스가있는 경우 일반적으로 액세스되는 해당 인덱스의 일부만 RAM에 있어야합니다 (예 : 사용자의 50 %가 비활성 상태라고 가정하면 인덱스의 0.5GB가 더 자주 사용됨). RAM에서 필요 / 필요). 일반적으로 RAM이 많을수록 사용량 증가로 인해 작업 세트가 시간이 지남에 따라 증가 할 가능성이 높으므로 특히 좋습니다. 이것이 샤딩이 들어오는 곳입니다. 데이터를 여러 노드로 분할하면 비용 효율적으로 확장 할 수 있습니다. 그런 다음 작업 세트가 여러 시스템으로 나뉘어 RAM에 더 많이 보관할 수 있습니다. 더 많은 RAM이 필요하십니까? 샤딩 할 다른 머신을 추가합니다.


작업 세트는 기본적으로 가장 많이 사용하는 항목입니다 (자주 사용). 컬렉션 B에 인덱스 A를 사용하여 문서의 하위 집합을 검색하는 경우 작업 집합을 고려할 수 있습니다. 이러한 구조에서 가장 일반적으로 사용되는 부분이 메모리에 들어갈 수있는 한 모든 것이 매우 빠릅니다. 많은 문서처럼 부품이 더 이상 작업 세트에 맞지 않으면 속도가 느려질 수 있습니다. 일반적으로 인덱스가 메모리를 초과하면 상황이 훨씬 느려집니다.

예, 많은 데이터가있을 수 있습니다. 대부분의 데이터가 "아카이브"되고 애플리케이션 성능에 영향을주지 않고 거의 사용되지 않으며 (아카이브 된 데이터를 포함하지 않는) 작업 세트에 영향을주지 않습니다.

참고 URL : https://stackoverflow.com/questions/6453584/what-does-it-mean-to-fit-working-set-into-ram-for-mongodb

반응형