쿼리 일관성
쿼리 일관성은 쿼리 및 업데이트가 동기화되는 방법을 나타냅니다. 쿼리 일관성에는 지원되는 두 가지 모드가 있습니다.
강력한 일관성: 강력한 일관성을 통해 데이터 추가, 삭제 및 스키마 수정과 같은 최신 업데이트에 즉시 액세스할 수 있습니다. 강력한 일관성은 기본 일관성 모드입니다. 동기화로 인해 이 일관성 모드는 동시성 측면에서 약한 일관성 모드보다 약간 덜 잘 수행됩니다.
약한 일관성: 일관성이 약하면 쿼리 결과가 최신 데이터베이스 업데이트를 반영하기 전에 지연이 있을 수 있습니다. 일반적으로 이 지연 범위는 1~2분입니다. 약한 일관성은 강력한 일관성보다 더 높은 쿼리 동시성 속도를 지원할 수 있습니다.
예를 들어 1분마다 1,000개의 레코드가 데이터베이스의 테이블에 수집되는 경우 강력한 일관성으로 실행되는 해당 테이블에 대한 쿼리는 가장 최근에 수집된 레코드에 액세스할 수 있는 반면, 약한 일관성으로 실행되는 해당 테이블에 대한 쿼리는 지난 몇 분 동안의 일부 레코드에 액세스하지 못할 수 있습니다.
참고
기본적으로 쿼리는 강력한 일관성으로 실행됩니다. 더 높은 쿼리 동시성을 지원하기 위해 필요한 경우에만 약한 일관성으로 전환하는 것이 좋습니다.
강력한 일관성을 위한 사용 사례
지난 몇 분 동안 데이터베이스에서 발생한 업데이트에 대한 강력한 종속성이 있는 경우 강력한 일관성을 사용합니다.
예를 들어 다음 쿼리는 5분 동안의 오류 레코드 수를 계산하고 개수가 0보다 큰 경고를 트리거합니다. 이 사용 사례는 일관성이 약한 경우처럼 지난 몇 분 동안 수집된 레코드에 액세스할 수 없는 인사이트를 변경할 수 있으므로 강력한 일관성으로 처리하는 것이 가장 좋습니다.
my_table
| where timestamp between(ago(5m)..now())
| where level == "error"
| count
또한 데이터베이스 메타데이터가 큰 경우 강력한 일관성을 사용해야 합니다. instance. 데이터베이스에는 수백만 개의 데이터 익스텐 트가 있으며, 약한 일관성을 사용하면 쿼리 헤드가 영구 스토리지에서 광범위한 메타데이터 아티팩트를 다운로드하고 역직렬화하여 다운로드 및 관련 작업에서 일시적인 오류가 발생할 가능성이 높아집니다.
약한 일관성에 대한 사용 사례
지난 몇 분 동안 데이터베이스에서 발생한 업데이트에 대한 강력한 종속성이 없고 높은 쿼리 동시성이 필요한 경우 약한 일관성을 사용합니다.
예를 들어 다음 쿼리는 지난 90일 동안의 주당 오류 레코드 수를 계산합니다. 지난 몇 분 동안 수집된 레코드에 영향을 주지 않을 수 있으므로 이 경우 약한 일관성이 적절합니다.
my_table
| where timestamp between(ago(90d) .. now())
| where level == "error"
| summarize count() by level, startofweek(Timestamp)
약한 일관성 모드
다음 표에서는 약한 쿼리 일관성의 네 가지 모드를 요약합니다.
Mode | Description |
---|---|
임의 | 쿼리는 약하게 일관된 쿼리 헤드 역할을 할 수 있는 클러스터의 노드 중 하나로 임의로 라우팅됩니다. |
데이터베이스별 선호도 | 동일한 데이터베이스 내의 쿼리는 약하게 일관된 동일한 쿼리 헤드로 라우팅되어 해당 데이터베이스에 대해 일관된 실행을 보장합니다. |
쿼리 텍스트별 선호도 | 쿼리 텍스트 해시가 동일한 쿼리는 약하게 일관된 동일한 쿼리 헤드로 라우팅되므로 쿼리 캐싱을 활용하는 데 유용합니다. |
세션 ID별 선호도 | 세션 ID 해시가 동일한 쿼리는 약하게 일관된 동일한 쿼리 헤드로 라우팅되어 세션 내에서 일관된 실행을 보장합니다. |
데이터베이스별 선호도
데이터베이스 모드별 선호도를 통해 동일한 데이터베이스에 대해 실행되는 쿼리가 동일한 버전의 데이터베이스에 대해 실행되도록 할 수 있습니다. 그러나 데이터베이스의 최신 버전일 필요는 없습니다. 이 모드는 특정 데이터베이스 내에서 일관된 실행을 보장하는 것이 중요할 때 유용합니다. 그러나 데이터베이스 전체의 쿼리 수에 불균형이 있는 경우 이 모드로 인해 부하 분산이 고르지 않을 수 있습니다.
쿼리 텍스트별 선호도
쿼리 결과 캐시를 쿼리할 때 쿼리 텍스트 모드별 선호도는 유용합니다. 이 모드는 동일한 ID로 자주 실행되는 반복 쿼리를 동일한 쿼리 헤드로 라우팅하여 캐시된 결과를 활용하고 클러스터의 부하를 줄일 수 있도록 합니다.
세션 ID별 선호도
세션 ID 모드별 선호도를 사용하면 동일한 사용자 활동 또는 세션에 속하는 쿼리가 동일한 버전의 데이터베이스에 대해 실행되도록 할 수 있습니다. 이 모드를 사용하려면 각 쿼리의 클라이언트 요청 속성에서 세션 ID를 명시적으로 지정해야 합니다. 이 모드는 세션 내에서 일관된 실행이 필수적인 시나리오에서 유용합니다.
쿼리 일관성을 지정하는 방법
클라이언트가 요청을 보내거나 서버 쪽 정책을 사용하여 쿼리 일관성 모드를 지정할 수 있습니다. 둘 중 하나로 지정되지 않은 경우 강력한 일관성의 기본 모드가 적용됩니다.
요청을 보내는 클라이언트: 클라이언트 요청 속성을 사용합니다
queryconsistency
. 이 메서드는 특정 쿼리에 대한 쿼리 일관성 모드를 설정하고 기본값 또는 서버 쪽 정책에 따라 결정되는 전반적인 유효 일관성 모드에는 영향을 주지 않습니다. 자세한 내용은 클라이언트 요청 속성을 참조하세요.서버 쪽 정책: 쿼리 일관성 정책의 속성을 사용합니다
QueryConsistency
. 이 메서드는 워크로드 그룹 수준에서 쿼리 일관성 모드를 설정하므로 사용자가 클라이언트 요청 속성에서 일관성 모드를 지정할 필요가 없으며 원하는 일관성 모드를 적용할 수 있습니다. 자세한 내용은 쿼리 일관성 정책을 참조하세요.
참고
Kusto .NET SDK를 사용하는 경우 연결 문자열 통해 쿼리 일관성을 설정할 수 있습니다. 이 설정은 특정 연결 문자열 통해 전송된 모든 쿼리에 적용됩니다. 자세한 내용은 연결 문자열 속성을 참조하세요.
관련 콘텐츠
- 약한 일관성으로 실행되는 쿼리에 대한 매개 변수를 사용자 지정하려면 쿼리 약한 일관성 정책을 사용합니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기