문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

메타 필드 및 timeField에 보조 인덱스 추가

이 페이지의 내용

  • 세컨더리 인덱스를 사용하여 정렬 성능 향상
  • Time Series 컬렉션에 대한 인덱스 힌트 지정
  • Time Series 보조 인덱스

Time Series 컬렉션 에 대한 쿼리 성능을 개선하려면 일반적인 Time Series 쿼리 패턴을 지원하는 하나 이상의 보조 인덱스 를 추가합니다. 구체적으로는 timeFieldmetaField 로 지정된 필드에 하나 이상의 복합 인덱스 를 생성하는 것이 좋습니다. metaField 필드의 필드 값이 문서인 경우 해당 문서 내부의 필드에 보조 인덱스를 생성할 수 있습니다.

참고

모든 인덱스 유형이 지원되는 것은 아닙니다. 지원되지 않는 인덱스 유형 목록은 Time Series 컬렉션의 세컨더리 인덱스에 대한 제한 사항을 참조하세요.

예를 들어, 이 명령은 metadata.sensorIdtimestamp 필드에 복합 인덱스 를 생성합니다.

db.weather24h.createIndex({ "metadata.sensorId": 1, "timestamp": 1 })

참조:

timeFieldmetaField 에 대한 정렬 작업은 해당 필드에 보조 인덱스를 사용하여 성능을 개선할 수 있습니다.

예를 들어, 다음 sensorData collection에는 온도 측정값이 포함되어 있습니다.

db.sensorData.insertMany( [
{
"metadata": { "sensorId": 5578, "type": "temperature" },
"timestamp": ISODate("2022-01-15T00:00:00.000Z"),
"temperatureReading": 12
},
{
"metadata": { "sensorId": 5578, "type": "temperature" },
"timestamp": ISODate("2022-01-15T04:00:00.000Z"),
"temperatureReading": 11
},
{
"metadata": { "sensorId": 5579, "type": "temperature" },
"timestamp": ISODate("2022-01-15T08:00:00.000Z"),
"temperatureReading": 9
}
] )

다음 명령은 timestampmetadata.sensorId 필드에 복합 오름차순 보조 인덱스를 생성합니다.

db.sensorData.createIndex(
{ "timestamp": 1, "metadata.sensorId": 1 }
)

timestamp 필드에 대한 다음 정렬 작업은 인덱스를 사용하여 성능을 개선합니다.

db.sensorData.find().sort( { "timestamp": 1 } )

정렬 작업에 인덱스가 사용되었는지 확인하려면 .explain() 옵션을 사용하여 작업을 다시 실행합니다.

db.sensorData.find().sort( { "timestamp": 1 } ).explain()

winningPlan.queryPlan.inputStage.stageIXSCAN 이며, 이는 인덱스가 사용되었음을 나타냅니다. 계획 설명 출력에 대한 자세한 내용은 결과 설명을 참조하세요.

인덱스 힌트는 MongoDB가 쿼리에 특정 인덱스를 사용하도록 합니다. Time Series 컬렉션에 대한 일부 작업은 인덱스가 힌트에 지정된 경우에만 인덱스를 활용할 수 있습니다.

예를 들어 다음 쿼리는 MongoDB가 timestamp_1_metadata.sensorId_1 인덱스를 사용하도록 합니다.

db.sensorData.find( { "metadata.sensorId": 5578 } ).hint( "timestamp_1_metadata.sensorId_1" )

Time Series 컬렉션에서는 인덱스 이름 또는 인덱스 키 패턴을 사용하여 힌트를 지정할 수 있습니다. 컬렉션에서 인덱스 이름을 가져오려면 db.collection.getIndexes() 메서드를 사용합니다.

MongoDB 6 부터 시작.0 (및 5.0.16):

참고

Time Series 컬렉션 에 세컨더리 인덱스 가 있고 기능 호환성 버전(fCV)을 다운그레이드해야 하는 경우, 먼저 다운그레이드된 fCV와 호환되지 않는 세컨더리 인덱스를 모두 삭제해야 합니다. 를 setFeatureCompatibilityVersion 참조하세요.

← 시계열 데이터의 세분성 설정