Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 백그라운드로 인덱스 생성하는 방법

MongoDB에서 인덱스를 생성할 때 데이터베이스 작업이 블로킹되지 않도록 하려면 createIndex() 메서드에 background: true 옵션을 설정하면 됩니다. 이렇게 하면 인덱스 빌드가 백그라운드에서 진행되는 동안에도 컬렉션에 대한 읽기 및 쓰기 작업을 계속 수행할 수 있습니다.

백그라운드 인덱스 생성 문법

아래와 같은 기본 문법을 사용하여 백그라운드에서 인덱스를 생성할 수 있습니다.

db.yourCollectionName.createIndex({"yourFieldName1":1,"yourFieldName2":1},{background: true} );

실제 적용 예시

위의 문법을 실제로 적용하여 백그라운드 옵션과 함께 인덱스를 생성해 보겠습니다.

> db.indexCreationDemo.createIndex({"StudentName":1,"StudentAge":1},{background: true} );
{
    "createdCollectionAutomatically" : true,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}

실행 결과를 살펴보면, 컬렉션이 존재하지 않아 자동으로 생성되었고(createdCollectionAutomatically: true), 기존 인덱스 1개에서 새 인덱스가 추가되어 총 2개가 되었음을 확인할 수 있습니다.

생성된 인덱스 확인하기

생성된 인덱스 목록을 조회하려면 getIndexes() 메서드를 사용합니다.

> db.indexCreationDemo.getIndexes();

위 명령을 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "web.indexCreationDemo"
    },
    {
        "v" : 2,
        "key" : {
            "StudentName" : 1,
            "StudentAge" : 1
        },
        "name" : "StudentName_1_StudentAge_1",
        "ns" : "web.indexCreationDemo",
        "background" : true
    }
]

출력 결과에서 볼 수 있듯이, 기본적으로 존재하는 _id 인덱스 외에 StudentNameStudentAge 필드로 구성된 복합 인덱스가 생성되었으며, 해당 인덱스 항목에 "background" : true 속성이 포함되어 있어 백그라운드 방식으로 빌드되었음을 알 수 있습니다.

참고 사항

MongoDB 4.2 버전부터는 향상된 인덱스 빌드 프로세스가 도입되어 background 옵션이 더 이상 사용되지 않습니다(deprecated). 최신 버전에서는 이 옵션을 지정해도 무시되며, 모든 인덱스 빌드가 기본적으로 최적화된 방식으로 수행됩니다. 따라서 구버전과의 호환성을 위해서만 이 옵션을 사용하는 것이 좋습니다.