쿼리 최적화 도구

쿼리 최적화 도구는 무엇인가요?

Cloud Spanner SQL 쿼리 최적화 도구는 쿼리에 필요한 데이터가 무엇인지 기술하는 선언적인 SQL 문을 해당 데이터를 정확하게 가져오기 위한 한 가지 방법을 기술하는 명령적인 실행 계획으로 변환합니다. 선언적인 문을 쿼리 실행 계획으로 변환하는 과정에는 쿼리 표현을 위해 사용되는 3개의 구조체로 변환을 수행하는 작업이 포함됩니다. 실행 계획을 생성하는 동안 최적화 도구는 올바른 행이 반환되도록 원래 SQL 쿼리의 논리적 의미를 보존해야 합니다.

최적화 도구의 또 다른 중요한 역할은 효율적인 실행 계획을 생성하는 것입니다.

Cloud Spanner 최적화 도구가 효율적인 실행 계획을 생성하기 위해 어떻게 하나요?

Cloud Spanner의 최적화 도구는 잘 설정된 휴리스틱과 비용 기반의 최적화를 결합하여 효율적인 계획을 생성합니다. 일부 휴리스틱은 '데이터를 로컬 머신으로 가져오는 대신 원격 머신에서 필터 수행'과 같이 매우 직관적입니다. 다른 휴리스틱은 이보다 더 복잡하지만 여전히 데이터 볼륨을 줄여주는 논리를 해당 데이터에 더 가깝게 이동하는 원칙을 따릅니다. 이러한 원칙은 여러 머신 간에 데이터를 샤딩하는 시스템에서 특히 중요합니다.

이러한 고정된 규칙을 사용하여 모든 실행 결정을 효율적으로 내릴 수 있진 않기 때문에, Cloud Spanner의 최적화 도구는 대안의 예상 비용을 기준으로 의사결정을 수행합니다. 이러한 비용 예상 값은 쿼리 구조, 데이터베이스 스키마, 쿼리 조각으로 생성되는 데이터 볼륨의 예상 값을 사용해서 계산됩니다. 예를 들어 Cloud Spanner는 SongGenre = 'Country' 필터가 쿼리에 표시될 때 Songs 테이블에서 이 필터에 해당하는 행수가 얼마나 될지 예상합니다. 이러한 예상 값의 계산을 돕기 위해 Cloud Spanner는 주기적으로 사용자 데이터에 대한 통계를 수집합니다.

쿼리 실행 계획 및 분산 환경에서의 쿼리 수행을 위해 Cloud Spanner에서 쿼리 실행 계획이 사용되는 방법을 자세히 알아보려면 쿼리 실행 계획을 참조하세요.

쿼리 최적화 도구 버전 관리

시간이 지남에 따라 쿼리 최적화 도구도 발전하여 쿼리 실행 계획에서 비용에 기반한 선택 옵션의 범위가 확장되고 이러한 옵션을 알려주는 예상 값의 정확도가 향상되어, 더 효율적인 쿼리 실행 계획을 얻을 수 있습니다.

Cloud Spanner는 새로운 쿼리 최적화 도구 버전으로 최적화 도구 업데이트를 출시합니다. 기본적으로 각 데이터베이스에는 항상 최신 버전의 최적화 도구가 사용됩니다. 관리 효율 향상을 위해 쿼리에 사용되는 쿼리 최적화 도구 버전을 관리할 수 있는 기능이 도입되었습니다. 최신 버전으로 커밋하기 전 이전 버전과 최신 버전 사이의 쿼리 성능 프로필을 비교해볼 수 있습니다. 자세한 내용은 쿼리 최적화 도구 관리를 참조하세요.

쿼리 최적화 도구 버전 기록

다음은 각 출시 버전에서 쿼리 최적화 도구에 적용된 업데이트 내용을 요약해서 보여줍니다.

버전 2: 2020년 3월 1일(최신)

  • 색인 선택에서 최적화 기능을 추가합니다.
  • 특정 상황에서 REGEXP_CONTAINSLIKE 서술어의 성능을 향상시켜 줍니다.
  • 특정 상황의 GROUP BY에서 스캔 성능을 향상시켜 줍니다.

버전 1: 2019년 6월 18일

  • 서술어 푸시다운, 한도 푸시다운, 중복 조인, 중복 표현식 제거 등 많은 규칙 기반의 최적화가 포함되었습니다.

  • 사용자 데이터에 대해 통계를 사용하여 각 테이블에 액세스하기 위해 사용할 색인을 선택합니다.

사용자 시나리오에 맞게 최적화 도구 버전을 관리하려면 쿼리 최적화 도구 관리를 참조하세요.