학습 기반 매개변수화된 쿼리 최적화 방법

1. 배경 소개

매개변수화된 쿼리는 동일한 템플릿을 가지며 조건자 바인딩 매개변수 값만 다른 쿼리 유형을 의미합니다. 이는 최신 데이터베이스 애플리케이션에서 널리 사용됩니다. 작업을 반복적으로 수행하므로 성능 최적화 기회가 제공됩니다.

그러나 많은 상용 데이터베이스에서 매개변수화된 쿼리를 처리하는 현재 방법은 쿼리의 첫 번째 쿼리 인스턴스(또는 사용자 지정 인스턴스)만 최적화하고 최상의 계획을 캐시한 후 후속 쿼리 인스턴스에 재사용합니다. 이 방법은 시간을 최소화하기 위해 최적화되지만 쿼리 인스턴스마다 최적의 계획이 다르기 때문에 캐시된 계획의 실행은 임의로 차선책이 될 수 있으며 이는 실제 애플리케이션 시나리오에 적용되지 않습니다.

대부분의 기존 최적화 방법에는 쿼리 최적화 프로그램에 대한 많은 가정이 필요하지만 이러한 가정은 실제 애플리케이션 시나리오와 일치하지 않는 경우가 많습니다. 다행히도 머신러닝의 등장으로 위의 문제는 효과적으로 해결될 수 있습니다. 이번 호에서는 VLDB2022 및 SIGMOD2023에 발표된 두 편의 논문을 자세히 소개합니다.

论文 1:"파라메트릭 쿼리 최적화를 위한 쿼리 로그 및 기계 학습 활용"
论文 2:"Kepler: 더 빠른 매개변수 쿼리 최적화를 위한 강력한 학습"

2. 종이의 본질 1

"파라메트릭 쿼리 최적화를 위한 쿼리 로그 및 기계 학습 활용" 이 문서에서는 매개변수화된 쿼리 최적화를 두 가지 문제로 분리합니다.
(1) PopulateCache: 쿼리 템플릿에 대한 K 계획을 캐시합니다.
(2) getPlan: 각 쿼리 인스턴스에 대해 가장 적합한 계획을 선택합니다. 캐시된 계획.

본 논문의 알고리즘 아키텍처는 아래 그림과 같습니다. 주로 PopulateCache 및 getPlan 모듈의 두 가지 모듈로 나뉩니다.

PopulateCache는 쿼리 로그의 정보를 사용하여 모든 쿼리 인스턴스에 대한 K 계획을 캐시합니다. getPlan 모듈은 먼저 옵티마이저와 상호 작용하여 K 계획과 쿼리 인스턴스 간의 비용 정보를 수집하고 이 정보를 사용하여 기계 학습 모델을 교육합니다. 훈련된 모델을 DBMS에 배포합니다. 쿼리 인스턴스가 도착하면 해당 인스턴스에 대한 최상의 계획을 빠르게 예측할 수 있습니다.

캐시 채우기

PolulateCache 모듈은 특정 매개변수화된 쿼리에 대한 캐시 계획 세트를 식별하는 역할을 합니다. 검색 단계에서는 두 가지 최적화 API를 사용합니다.

  • 옵티마이저 호출: 쿼리 인스턴스에 대해 옵티마이저가 선택한 계획을 반환합니다.
  • Recost 호출: 쿼리 인스턴스 및 해당 계획에 대해 최적화 프로그램이 추정한 비용을 반환합니다.

알고리즘 흐름은 다음과 같습니다.

  • 계획 수집 단계: 쿼리 로그에서 n개의 쿼리 인스턴스에 대한 후보 계획을 수집하기 위해 최적화 호출을 호출합니다.
  • 계획-재비용 단계: 각 쿼리 인스턴스와 각 후보 계획에 대해 재비용 호출을 호출하여 계획-재비용 매트릭스를 형성합니다.
  • K 세트 식별 단계: 그리디 알고리즘을 채택하고 계획-재비용 매트릭스를 사용하여 차선책을 최소화하기 위해 K 계획을 캐시합니다.

getPlan

getPlan 모듈은 주어진 쿼리 인스턴스에 대한 실행을 위해 K개의 캐시된 계획 중 하나를 선택하는 일을 담당합니다. getPlan 알고리즘은 옵티마이저가 추정한 비용을 최소화하거나 K 캐시 계획 중 실제 실행 비용을 최소화하는 두 가지 목표를 고려할 수 있습니다.

목표 1 고려: 계획-재비용 매트릭스를 사용하여 지도 ML 모델을 훈련하고 분류 및 회귀를 고려합니다.

목표 2를 고려하십시오. Multi-Armed Bandit을 기반으로 한 강화 학습 훈련 모델을 사용하십시오.

3. 종이의 본질 2

"Kepler: 더 빠른 파라메트릭 쿼리 최적화를 위한 강력한 학습" 본 논문에서는 쿼리 최적화 시간을 단축하고 쿼리 실행 성능을 향상시키는 것을 목표로 하는 엔드투엔드 학습 기반 파라메트릭 쿼리 최적화 방법을 제안합니다.

알고리즘 아키텍처는 다음과 같습니다. Kepler는 문제를 계획 생성과 학습 기반 계획 예측의 두 부분으로 분리합니다. 주로 계획 생성 전략, 훈련 쿼리 실행 단계 및 강력한 신경망 모델의 세 단계로 나뉩니다.

위 그림과 같이 쿼리 로그의 쿼리 인스턴스를 Kepler Trainer에 입력하면, Kepler Trainer는 먼저 후보 계획을 생성한 후, 후보 계획과 관련된 실행 정보를 훈련 데이터로 수집하여 훈련 후, 모델은 DBMS에 배포됩니다. 쿼리 인스턴스가 도착하면 Kepler Client를 사용하여 최상의 계획을 예측하고 실행합니다.

행 개수의 진화

본 논문에서는 옵티마이저 카디널리티 추정을 교란하여 후보 계획을 생성하는 RCE(Row Count Evolution)라는 후보 계획 생성 알고리즘을 제안합니다.

이 알고리즘의 아이디어는 카디널리티의 잘못된 추정이 옵티마이저 차선의 주요 원인이며, 후보 계획 생성 단계에서는 단일 최적 계획을 선택하는 것이 아니라 하나의 인스턴스의 최적 계획만 포함하면 된다는 것에서 비롯됩니다.

RCE 알고리즘은 먼저 쿼리 인스턴스에 대한 최적 계획을 생성한 다음 지수 간격 범위 내에서 해당 하위 계획의 조인 카디널리티를 교란하고 이를 여러 번 반복하고 여러 반복을 수행한 다음 마지막으로 생성된 모든 계획을 후보 계획으로 사용합니다. 구체적인 예는 다음과 같습니다.

RCE 알고리즘을 사용하면 생성된 후보 계획이 최적화 프로그램에서 생성된 계획보다 나을 수 있습니다. 왜냐하면 옵티마이저에는 카디널리티 추정 오류가 있을 수 있고 RCE는 카디널리티 추정을 지속적으로 교란하여 올바른 카디널리티에 해당하는 최적의 계획을 생성할 수 있기 때문입니다.

훈련 데이터 수집

후보 계획 세트를 획득한 후 각 쿼리 인스턴스에 대한 워크로드에 대해 각 계획을 실행하고 지도 최적 계획 예측 모델 학습을 위해 실제 실행 시간을 수집합니다. 위의 프로세스는 상대적으로 번거롭습니다. 이 기사에서는 병렬 실행, 적응형 타임아웃 메커니즘 등과 같은 훈련 데이터 수집 속도를 높이는 몇 가지 메커니즘을 제안합니다.

강력한 최적 계획 예측

결과로 나온 실제 실행 데이터는 신경망을 훈련하여 각 쿼리 인스턴스에 대한 최적의 계획을 예측하는 데 사용됩니다. 사용된 신경망은 스펙트럼 정규화된 가우스 신경 프로세스이며, 이 모델은 네트워크의 안정성과 훈련의 수렴을 보장하고 예측에 대한 불확실성 추정치를 제공할 수 있습니다. 불확실성 추정치가 특정 임계값보다 큰 경우 실행 계획을 선택하는 것은 최적화 프로그램에 맡겨집니다. 성능 회귀는 어느 정도 방지됩니다.

4. 요약

위의 두 문서 모두 매개변수화된 쿼리를 populateCache 및 getPlan으로 분리합니다. 두 가지의 비교는 아래 표에 나와 있습니다.

기계 학습 모델을 기반으로 한 알고리즘은 계획 예측에서는 좋은 성능을 발휘하지만 훈련 데이터 수집 프로세스는 비용이 많이 들고 모델을 일반화하고 업데이트하기가 쉽지 않습니다. 따라서 기존의 매개변수화된 쿼리 최적화 방법에는 여전히 개선의 여지가 있습니다.

本文图示来源: 1) Kapil Vaidya & Anshuman Dutt, 《파라메트릭 쿼리 최적화를 위한 쿼리 로그 및 기계 학습 활용》, 2022 VLDB, https://dl.acm.org/doi/pdf/10.14778/3494124.3494126 2) LYRIC DOSHI & VINCENT ZHUANG, 《Kepler: 더 빠른 매개변수 쿼리 최적화를 위한 강력한 학습》, 2023 SIGMOD, https://dl.acm.org/doi/pdf/10.1145/3588963

오픈 소스 산업용 소프트웨어를 포기하기로 결정했습니다 . 주요 이벤트 - OGG 1.0 출시, Huawei가 모든 소스 코드를 제공했습니다. Google Python Foundation 팀이 "코드 똥산"에 의해 해고되었습니다 . ". Fedora Linux 40이 정식 출시되었습니다. 유명 게임 회사가 출시했습니다. 새로운 규정: 직원의 결혼 선물은 100,000위안을 초과할 수 없습니다. China Unicom은 세계 최초로 오픈 소스 모델의 Llama3 8B 중국어 버전을 출시했습니다. Pinduoduo는 보상금을 선고 받았습니다 . 불공정 경쟁에 500만 위안 국내 클라우드 입력 방식 - 화웨이만 클라우드 데이터 업로드 보안 문제 없음
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/5148943/blog/11043999