쿼리 최적화 도구 정보

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

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

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

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

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

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

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

쿼리 최적화 도구 버전 관리

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

Cloud Spanner는 쿼리 실행 계획의 효율성 향상을 위해 새 쿼리 최적화 도구 버전으로 쿼리 최적화 도구 업데이트를 출시합니다. 여러 버전에 대한 자세한 내용은 Cloud Spanner 쿼리 최적화 도구 버전을 참조하세요.

쿼리 최적화 도구 통계 패키지

Cloud Spanner는 테이블 열의 데이터 분포에 대한 통계를 유지하여 쿼리에서 생성할 행의 수를 추정할 수 있습니다. 쿼리 최적화 도구는 이러한 예측을 사용하여 가장 적합한 쿼리 실행 계획을 선택합니다. Cloud Spanner에서 이러한 통계를 주기적으로 업데이트합니다. 통계는 쿼리 실행 계획을 선택하는 데 사용되므로 통계가 업데이트되면 Cloud Spanner에서 쿼리에 사용하는 쿼리 계획을 변경할 수 있습니다.

기본적으로 데이터베이스는 생성된 최신 통계 패키지를 자동으로 사용합니다. 데이터베이스를 이전 통계 패키지 버전에 고정할 수 있습니다. 최신이 아닌 통계 패키지를 사용하여 개별 쿼리를 실행할 수도 있습니다.

통계 패키지의 가비지 컬렉션

Cloud Spanner는 3일 간격으로 통계 패키지를 업데이트합니다. 이전 패키지는 생성 후 30일 동안 보관된 후 가비지 컬렉션에 적용됩니다.

Cloud Spanner 기본 제공 INFORMATION_SCHEMA.SPANNER_STATISTICS 테이블에는 사용 가능한 통계 패키지 목록이 포함됩니다. 이 표의 각 행에는 통계 패키지가 이름별로 나열되고 이름에는 지정된 패키지의 생성 타임스탬프가 포함됩니다. 또한 각 항목에는 패키지가 가비지로 수집될 수 있는지 여부를 정의하는 ALLOW_GC라는 필드가 있습니다.

전체 데이터베이스를 해당 표에 나와 있는 패키지 중 하나에 고정할 수 있습니다. 데이터베이스가 이 패키지에 고정되어 있는 동안에는 고정된 통계 패키지가 가비지로 수집되지 않고 ALLOW_GC 값이 무시됩니다. 개별 쿼리에 특정 통계 패키지를 사용하려면 패키지가 ALLOW_GC=FALSE와 함께 나열되거나 고정되어야 합니다. 이렇게 하면 통계 패키지가 가비지로 수집된 후 쿼리 실패가 방지됩니다. ALTER STATISTICS DDL 문을 사용하여 ALLOW_GC 값을 변경할 수 있습니다.

패키지 보관 및 개인 식별 정보(PII)

통계 패키지에는 표준 업계 관행에 따라 열 데이터의 히스토그램이 포함됩니다. 이를 통해 쿼리 옵티마이저에서 최적의 쿼리 계획을 선택할 수 있습니다. 히스토그램은 작은 값 샘플을 통해 구성됩니다. 이 작은 데이터 세트에 PII가 포함될 수 있습니다.

Cloud Spanner는 새 통계 패키지를 정기적으로 만들고 기본적으로 30일 동안 보관합니다. 따라서 데이터베이스에서 삭제된 값의 작은 샘플은 통계 히스토그램에서 30일 동안 추가 보관될 수 있습니다. optimizer_statistics_package 데이터베이스 옵션으로 고정된 통계 패키지나 ALLOW_GC=FALSE 옵션이 포함된 패키지는 가비지로 수집되지 않습니다. 이 패키지의 히스토그램에는 데이터베이스에서 삭제된 값이 더 오래 포함될 수 있습니다. 또한 통계 패키지의 콘텐츠는 데이터베이스 백업에 포함됩니다.

최적화 도구 통계는 사용자 데이터와 동일한 방식으로 암호화되어 저장됩니다.

이러한 패키지에 필요한 총 스토리지 양은 일반적으로 100MB 미만이며 총 스토리지 비용에 포함됩니다.

다음 단계