programing

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

madecode 2023. 2. 22. 23:23
반응형

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

MongoDB는 빠르지만 작업 세트 또는 인덱스를 RAM에 넣을 수 있는 경우에만 가능합니다.서버에 16G의 RAM이 탑재되어 있는 경우는, 모든 컬렉션의 사이즈가 16G이하가 되는 것입니까?어떻게 하면 "OK 이것은 내 작업 세트이고 나머지는 "보관할 수 있다"고 말할 수 있을까요?

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

예를 들어, 1년치 데이터가 있다고 가정합니다.단순화를 위해 매월 총 12GB의 데이터를 제공하는 데 사용되며, 매월 총 12GB의 데이터를 처리하기 위해 1GB의 인덱스가 다시 제공됩니다.

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

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

그러나 일반적으로 자주 액세스할 것으로 예상되는 데이터/인덱스의 양을 커버할 수 있는 충분한 RAM을 가지고 있다면 문제 없습니다.

편집: 코멘트의 질문에 대한 응답
무슨 말인지 잘 모르겠지만 한번 대답해보겠습니다.첫째, 작업 세트에 대한 계산은 "구장 수치"입니다.두 번째로 user_id에 (예를 들어)1GB 인덱스가 있는 경우 일반적으로 액세스하는 인덱스의 일부만 RAM에 저장하면 됩니다(예를 들어 사용자의 50%가 비활성 상태이고 0.5).RAM에서는 인덱스의 GB가 더 자주 요구됩니다).일반적으로 RAM이 많을수록 특히 사용률이 높아짐에 따라 작업 세트가 시간이 지남에 따라 증가할 가능성이 높기 때문에 좋습니다.여기서 샤딩(Sharding)이 필요합니다.여러 노드에 데이터를 분할하면 비용 효율적으로 스케일아웃할 수 있습니다.작업 세트는 여러 머신으로 분할되므로 RAM에 더 많은 데이터를 저장할 수 있습니다.RAM이 더 필요하신가요?샤드할 다른 머신을 추가합니다.

작업 세트는 기본적으로 가장 많이 사용하는 것입니다.집합 B에 색인 A를 사용하여 문서 하위 집합을 검색할 경우 작업 집합으로 간주할 수 있습니다.이러한 구조에서 가장 일반적으로 사용되는 부분들이 메모리에 들어맞는다면 상황은 매우 빠를 것입니다.많은 문서와 마찬가지로 부품이 작업 세트에 더 이상 들어가지 않기 때문에 속도가 느려질 수 있습니다.일반적으로 인덱스가 메모리를 초과하면 작업이 훨씬 느려집니다.

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

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

반응형