Mongodb 인덱스 생성시 주의사항 - ( 백그라운드 인덱스 생성 )

2023. 3. 14. 07:50mongodb

반응형

mongodb 로그

1. mongodb index 장점

- MongoDB에서 인덱스를 사용하는 것은 데이터 검색 속도를 향상시키는 등 많은 장점이 있습니다.

1. 빠른 데이터 검색: 인덱스를 사용하면 데이터를 빠르게 검색할 수 있습니다. 인덱스를 사용하지 않을 경우 모든 데이터를 검색해야 하지만, 인덱스를 사용하면 검색 대상 데이터가 줄어들기 때문에 검색 속도가 크게 향상됩니다.

2. 쿼리 최적화: 인덱스를 사용하면 데이터를 쿼리할 때 쿼리 처리 시간이 크게 줄어듭니다. 데이터를 검색할 때 쿼리가 수행되는 방식을 최적화하기 때문입니다.

3. 데이터 정렬: 인덱스를 사용하면 데이터를 정렬할 때 매우 빠릅니다. 인덱스가 정렬된 상태에서 데이터를 가져오므로, 추가적인 정렬 작업을 수행하지 않아도 됩니다.

4. 중복 데이터 방지: 인덱스를 사용하면 중복 데이터가 발생하는 것을 방지할 수 있습니다. 중복된 데이터가 있다면, 검색 시에 원하는 데이터를 찾기 어려워질 수 있습니다.

5. 데이터 접근 최적화: 인덱스를 사용하면 데이터 접근을 최적화할 수 있습니다. 인덱스를 사용하면 데이터를 더 적은 양의 디스크 I/O 작업으로 검색할 수 있으므로, 디스크 I/O에 의한 데이터 접근 시간을 줄일 수 있습니다.

728x90

2. 인덱스 생성 시 주의사항

- MongoDB 인덱스 생성 시 Collection Lock이 걸릴 수 있습니다.

1. 대규모 데이터베이스의 인덱스 생성 속도 향상: 대용량 데이터베이스에서 인덱스 생성 작업은 많은 시간이 걸릴 수 있습니다. 이러한 작업은 백그라운드에서 실행될 경우에는 데이터베이스의 다른 작업과 병행하여 처리할 수 있어서 인덱스 생성 작업이 끝나기를 기다릴 필요 없이 데이터베이스를 계속해서 사용할 수 있습니다.

2. 인덱스 생성 작업이 느리거나 멈추는 현상 방지: 인덱스 생성 작업은 대규모 데이터베이스에서 수시로 발생하는데, 이 작업이 실행되는 동안 다른 작업들이 지연될 수 있습니다. 이러한 상황을 방지하기 위해서 인덱스 생성 작업은 백그라운드에서 실행하는 것이 좋습니다. 이러한 방법으로, 인덱스 생성 작업이 끝나기를 기다리지 않고 데이터베이스를 계속해서 사용할 수 있습니다.

3. 인덱스 생성 중 데이터베이스의 일관성 유지: 인덱스 생성 작업이 전체적으로 실행될 때 데이터베이스에 일시적으로 일관성이 무너지는 경우가 있습니다. 이러한 상황을 방지하기 위해서 인덱스 생성 작업은 백그라운드에서 실행하는 것이 좋습니다. 이러한 방법으로, 데이터베이스의 일관성을 유지하면서 인덱스 생성 작업을 실행할 수 있습니다.

반응형

3. 백그라운드 인덱스 생성 방법

db.mycollection.createIndex({ myfield: 1 }, { background: true })

위의 코드에서 { background: true } 옵션을 사용하여 백그라운드 인덱스를 생성하도록 지정합니다. 이렇게 하면 MongoDB가 인덱스 생성 작업을 백그라운드에서 실행하고, 데이터베이스와 인덱스 생성 작업을 병행할 수 있습니다. 따라서 인덱스 생성 작업이 더 긴 시간이 걸리더라도, 데이터베이스 작업에 영향을 덜 주게 됩니다.

또한, createIndex() 메소드를 호출하면 인덱스 생성 작업이 즉시 시작되며, 작업이 완료될 때까지 해당 명령이 차단됩니다. 이를 방지하려면 background: true 옵션을 사용하여 인덱스 생성을 백그라운드로 실행하도록 합니다.

반응형