>  기사  >  데이터 베이스  >  MongoDB 스토리지 엔진에 대한 심층 분석(개략도 포함)

MongoDB 스토리지 엔진에 대한 심층 분석(개략도 포함)

藏色散人
藏色散人앞으로
2022-12-06 17:00:182932검색

이 기사는 mongodb에 대한 관련 지식을 소개하고 MongoDB의 스토리지 엔진을 소개하는 데 도움이 되길 바랍니다!

간단한 리뷰

지난번에 mongodb 클러스터에 대해 이야기했는데, 이는 마스터-슬레이브 클러스터와 샤드 클러스터로 나누어집니다. 샤드 클러스터의 샤드와 관련하여 다음 사항에 유의해야 합니다. :

  • 핫 데이터

특정 샤드 키(샤드 키는 컬렉션의 각 문서에 존재하는 인덱스 필드 또는 복합 인덱스 필드임)의 경우 모든 읽기 또는 쓰기 요청이 작동하게 됩니다. 단일 데이터 블록 또는 샤드에서 이로 인해 단일 샤드 서버에 과부하가 발생하고 자체 증가하는 샤드 키로 인해 쉽게 쓰기 문제가 발생할 수 있습니다. [권장: MongoDB 비디오 튜토리얼]

  • 분할할 수 없는 데이터 블록의 경우

개별 분할 키의 경우 동일한 분할 키를 사용하는 많은 문서가 발생할 수 있습니다

이 경우 이러한 문서는 여러 데이터 블록으로 분할할 수 없으므로 mongodb에서 데이터의 균등한 배포가 제한됩니다.

  • 쿼리 장애물

샤드 키가 쿼리와 관련이 없기 때문에 쿼리 성능이 저하될 수 있습니다

위의 주의 사항을 숙지하고 실제 작업 문제에서도 유사한 문제에 직면하게 됩니다.

오늘 우리는 간단히 이해하겠습니다 mongodb의 스토리지 엔진은 무엇인가요? 플러그형 스토리지 엔진의 개념

이제 주로 다음 엔진이 있습니다.

WiredTiger 스토리지 엔진

inMemory 스토리지 엔진
  • 스토리지 엔진이 처음 나왔을 때는 기본적으로 MMAPV1 스토리지 엔진이 사용되었습니다
  • MMAPV1 엔진, 이름만 보면 mmap을 사용하고 리눅스 메모리 매핑의 원리를 사용한다는 것을 알 수 있을 것입니다

MMAPV1 엔진은

WiredTiger 스토리지 엔진이 더 좋기 때문에 현재 사용되지 않습니다. 멀티 코어 시스템의 처리 능력

WiredTiger

잠금 세분성이 더 작음

MMAPV1 엔진 테이블 수준 잠금을 사용하면 단일 테이블에 동시 작업이 있는 경우 처리량이 제한됩니다
  • 그리고 WiredTiger는 동시성과 처리량을 향상시키는 문서 수준 잠금을 사용합니다

WiredTiger

압축 방법이 더 발전되었습니다. 좋음
  • WiredTiger는 MMAPV1

    에 비해 메모리 공간 소비를 절약하는 접두사 압축을 사용하며 WiredTiger는 또한

    하드 디스크 리소스 소모를 크게 줄일 수 있는 압축 알고리즘

WiredTiger 엔진의 쓰기 원리

  • 위 그림에서 WiredTiger 디스크 쓰기 원리도 매우 간단하다는 것을 알 수 있습니다

응용 프로그램 요청이 mongodb에 오면 mongodb가 처리를 수행하고 결과를 캐시에 저장합니다

캐시가 2G

에 도달하거나

60s

타이머가 만료되면 캐시의 데이터가 플러시됩니다. 주의 깊게 xdm이 알게 되면 지금 정확히 59초가 되면 1G 이상이면 캐시의 데이터가 디스크에 동기화되지 않고 mongodb가 비정상적으로 중단됩니다. 데이터를 잃어버리셨나요?

MongoDB 스토리지 엔진에 대한 심층 분석(개략도 포함)

우리는 모두 손가락으로 생각할 수 있습니다. mongodb의 설계자가 어떻게 이런 상황을 허용할 수 있었는지, 그러면 해결책이 있을 것입니다 , 다음과 같이

  • 위 그림과 같이 extra one 저널링 버퍼
    mongodb 추가, 삭제, 수정 명령을 저장하는 버퍼

저널 파일

MongoDB 스토리지 엔진에 대한 심층 분석(개략도 포함)은 관계형 데이터베이스의 트랜잭션 로그와 비슷합니다

journaling buffer 和  journal 文件저널링을 도입한 목적

  • 저널링은 예상치 못한 실패 후 빠른 복구로 인해 mongod b 데이터베이스를 활성화할 수 있습니다
저널링 로그 기능

저널링의 로그 기능은 Redis의 지속성과 약간 비슷해 보이지만 유사하다고만 말할 수 있습니다
  • mongodb에서 2.4, 이미기본값입니다. Journaling 기능을 켜면, mongod 인스턴스를 시작할 때 서비스에서 데이터를 복원해야 하는지 여부를 확인합니다

그러면 위에서 언급한 것처럼 mongodb에서는 데이터 손실이 발생하지 않습니다

여기서 우리는 저널링의 로깅 기능이 mongodb에서 쓰기 작업을 수행해야 할 때, 즉 추가, 삭제 또는 수정 시 저널링이 로그를 작성하므로 성능에 영향을 미칠 것이라는 점을 알아야 합니다.

하지만 mongodb는 읽습니다. 가져오기 작업을 수행하면 캐시에 기록되지 않으므로 저널링 로그에 기록되지 않습니다. 따라서 오늘 배운 내용은 이것뿐입니다. 편차가 있으면 정정해주세요

위 내용은 MongoDB 스토리지 엔진에 대한 심층 분석(개략도 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제