programing

Mongodb 배경 인덱스 - 한 번 생성된 배경 인덱스가 여전히 있습니까?

telecom 2023. 7. 9. 09:49
반응형

Mongodb 배경 인덱스 - 한 번 생성된 배경 인덱스가 여전히 있습니까?

mongodb에서 인덱스를 작성할 때 다음을 지정할 수 있습니다.background: true플래그 - 인덱스 작성을 취소합니다.이렇게 하면 운영 환경에서 전체 데이터베이스를 잠그는 동시에 이전에는 확실히 필요하지 않았던 인덱스를 생성할 수 있으므로 매우 유용합니다.

문서를 읽어보면, 이 플래그는 인덱스 작성 방법만 결정하는 것처럼 보이며, 작성이 완료되면 인덱스는 일반 인덱스와 동일하게 작동합니다.제가 원하는 것은 -- 저는 인덱스가 문서와 동기화되는 것을 원하지 않습니다. 왜냐하면 인덱스는 백그라운드에서 업데이트되기 때문입니다. 비록 저는 이것을 하는 데이터베이스를 상상할 수 있지만요.

제가 여기서 물어보는 이유는getIndexes명령은 인덱스가 여전히 다음과 같이 표시됨을 나타냅니다.background생성된 후에도.이것은 단지 그것이 어떻게 만들어졌는지 상기시키는 것입니까?아니면 하라background인덱스가 생성된 후 다르게 작동합니까?복제에 대한 약간의 미묘함?

생성된 후에는 일반 인덱스처럼 작동합니다.그들은 고집합니다.getIndexes상기시키기 위해, 방법과 유사하게.unique,sparse등등.

하지만 다른 의미도 있습니다.전경 인덱스가 모든 작성기를 차단한다고 해서 이 경우에는 작업을 수행할 수 없습니다.db.testCollection.getIndexes()모든 인덱스가 생성될 때까지.한편, 배경 인덱스를 만들 때, 당신은 전화를 걸 수 있습니다.db.testCollection.getIndexes()보시다시피, 그 색인은 이미 만들어진 것 같습니다.

그러나 이 경우에는 인덱스가 실제로 생성되었는지 여부를 확인할 수 없습니다.이 경우 db.currentOp()호출해야 합니다. 그리고 다음과 같은 것이 표시됩니다.

{
  "inprog": [
    {
      "opid": 2001060,
      "active": true,
      "secs_running": 1,
      "op": "insert",
      "ns": "test.system.indexes",
      "insert": {
        "v": 1,
        "key": {
          "a": 1
        },
        "ns": "test.testCollection",
        "name": "a_1",
        "background": 1
      },
          ....
      "msg": "bg index build Background Index Build Progress: 368640/1000000 36%",
      "progress": {
        "done": 368640,
        "total": 1000000
      }
      ...
    }
  ]
}

즉, 백그라운드 인덱스를 만드는 작업이 여전히 진행 중이며 프로세스에 대한 일부 정보도 볼 수 있습니다.

예를 들어 대략적인 계산을 몇 가지 수행할 수 있습니다. 1000000 중 368640은 1초(가능한 오프셋으로 +1초)가 소요되므로 모든 작업에 3-6초(최종적으로 4.8초)가 소요됩니다.

이러한 작업이 진행 중인 것을 볼 수 없으면 인덱스가 이미 생성된 것입니다.

참고: 동시 작업이 많은 경우 다음에 대해 searchh 인수를 지정할 수 있습니다.db.currentOp()f.e.

db.currentOp({"insert.background":1})

색인화 옵션에는 전경(기본값)과 배경 등 여러 가지가 있습니다.전경은 상대적으로 빠르고 모든 작가와 독자를 차단합니다.다른 데이터베이스들은 아직 접근할 수 있습니다.이 작업은 프로덕션 환경에서는 수행할 수 없습니다.

배경 색인 작성은 약간 느리고 독자와 작성자를 차단하지 않습니다.와 함께MongoDB 개의 수 .2.4 이상에서는동서에도스여러다드인있니병수습작성할렬로를스덱운백그라의개이일이데베한터▁2▁in다니2있▁background습▁indexes▁multiple수▁create작▁you성할▁even,병▁can▁later로렬▁parallel▁database▁on.

시작위치로 MongoDB은 기본적인 2.6은 기본적인 배경에 인덱스가 생성됩니다.기본 인덱스 작성이 완료되면 보조 인덱스 작성이 시작됩니다.

생산 시스템에서 인덱스를 매우 효율적으로 만드는 또 다른 방법이 있습니다.즉, 대부분의 쿼리를 처리하는 데 사용되는 다른 서버에 색인을 작성합니다.예를 들어, 여러 데이터베이스 서버가 함께 작동하는 복제본 집합에서 하나를 꺼내어 사용 가능한 서버로 요청을 라우트할 수 있습니다.전경 색인 작성은 분리된 서버에서 수행할 수 있습니다.생성이 성공적으로 완료되면 클러스터로 다시 가져올 수 있습니다.

언급URL : https://stackoverflow.com/questions/15579322/mongodb-background-indexes-are-they-still-background-once-created

반응형