2024 Postgres Conference Conference丨 한 기사에서 Tuoshupai의 유익한 연설의 본질을 자세히 설명합니다.

지난 4월 17일부터 19일까지 세계 최대 PostgreSQL 컨퍼런스 중 하나인 Postgres Conference 2024가 미국 산호세에서 성대하게 개최되었습니다. 이번 컨퍼런스는 PostgreSQL 커널을 중심으로 Ops, Dev, Essentials, Google Cloud 등 4개 트랙으로 구성되었습니다. 데이터베이스 관리 및 애플리케이션, 사용자 사례 및 경험 등의 주제가 발표되었으며 Google, AWS, EDB, Yugabyte, DBeaver 및 기타 회사의 수석 강사가 컨퍼런스에 초대되었습니다. 국제 기술 커뮤니티에서 강력한 영향력을 발휘하는 Tuoshupai는 이번 행사에 컨퍼런스 후원자로 초대되어 기술 연설을 했습니다.

컨퍼런스에서 새로운 PostgreSQL 기여자인 PieCloudDB 기술 전문가 Richard Guo는 "PostgreSQL의 쿼리 플래너에 대한 고급 소개"라는 기술 연설을 하기 위해 초대되었습니다. 그는 PieCloudDB 데이터베이스 최적화 프로그램 구축 경험을 결합하여 다음과 같은 내용을 설명했습니다. 개발자 관점에서 본 PostgreSQL 옵티마이저의 작동 원리와 쿼리 트리를 플랜 트리로 변환하는 과정을 자세히 소개합니다. 리차드의 연설은 청중들로부터 긍정적인 반응을 얻었으며 심도 있는 상호작용과 소통으로 이어졌습니다.

데이터베이스 관리 시스템(DBMS)에서 SQL 쿼리 처리는 복잡하고 중요한 프로세스입니다. PostgreSQL의 경우 SQL 문은 수신부터 실행까지 다음과 같은 5가지 주요 단계를 거쳐야 합니다.

  • 파서: 구문 오류를 확인하고 파서 트리를 생성하는 역할을 담당합니다.
  • 분석(Analyzer): 파싱 트리를 기반으로 의미 분석을 수행하고 쿼리 트리를 생성합니다.
  • Rewriter: 시스템에 존재하는 규칙에 따라 쿼리 트리를 다시 작성합니다.
  • 계획/최적화(Planner): 쿼리 트리를 기반으로 실행 효율성이 가장 높은 계획 트리를 생성합니다.
  • Executor: Plan Tree의 순서대로 테이블과 인덱스에 접근하여 해당 쿼리를 실행한다.

동일한 쿼리 문은 일반적으로 여러 가지 방법으로 실행될 수 있습니다. 데이터베이스의 중요한 구성 요소로서 쿼리 최적화 프로그램의 역할은 가능한 모든 실행 모드에서 비용이 가장 낮은 쿼리 계획을 찾아 실행 가능한 계획 트리로 변환하는 것입니다.

다음에서는 전체 프로세스에서 가장 중요하고 복잡한 단계인 PostgreSQL 쿼리 처리의 계획/최적화 단계에 중점을 둘 것입니다. 프로세스는 일반적으로 전처리 단계, 스캐닝/연결 최적화 단계, 스캐닝/연결 외부 최적화 단계, 후처리 단계의 네 단계로 구분됩니다.

1. 전처리 단계

전처리 단계의 초기 단계에서는 일반적으로 상수 표현식(함수, 부울, CASE 등)을 단순화하고 간단한 SQL 함수를 인라인 처리하여 쿼리를 최대한 단순화합니다. 동시에 IN, EXISTS 및 기타 유형의 하위 쿼리를 세미 조인으로 변환하고, 하위 쿼리를 승격하고, 외부 조인을 제거(내부 조인 또는 안티 조인으로 변환)함으로써 조인 트리가 단순화됩니다.

이러한 방법 외에도 다음과 같은 다양한 최적화 방법이 나중에 전처리 단계에서 사용됩니다.

  • WHERE 및 JOIN/ON 제약 조건 배포
  • 동등한 클래스 구축
  • 조인 순서 제한에 대한 정보 수집
  • 쓸모없는 연결 제거
  • ...

2. 스캐닝/연결 최적화 단계

스캔/연결 최적화 단계에서는 쿼리문의 FROM 및 WHERE 부분을 주로 처리하며 ORDER BY 정보도 고려합니다. 이 부분은 모두 비용에 의해 좌우됩니다.

이 단계에서는 먼저 기본 테이블에 대한 스캔 경로를 결정하고 스캔 경로의 비용을 추정한 다음 동적 프로그래밍 및 유전 알고리즘을 사용하여 전체 연결 시퀀스 공간을 검색하고 연결 경로를 생성합니다. 연결 순서 공간을 검색할 때 외부 조인으로 인한 연결 순서 제한도 고려해야 합니다.

동적 프로그래밍에서는 연결 검색이 다음과 같이 진행됩니다.

  • 먼저 각 기본 테이블에 대한 스캔 경로를 생성합니다.
  • 두 테이블의 가능한 모든 조인에 대한 조인 경로 생성
  • 세 테이블의 가능한 모든 조인에 대한 조인 경로 생성
  • 4개 테이블의 가능한 모든 조인에 대한 조인 경로 생성
  • ...
  • 모든 기본 테이블이 하나로 연결될 때까지

그러나 이 프로세스의 비용은 이론적으로 n개 테이블의 연결에 대해 서로 다른 연결 순서가 있습니다. 가능한 모든 연결 순서를 순회하는 것은 비현실적입니다. 따라서 검색 공간을 줄이기 위해 일반적으로 일부 경험적 방법이 사용됩니다. 조인 조건이 없는 테이블의 경우 복잡성을 줄이기 위해 큰 문제를 여러 하위 문제로 분해하지 마십시오.

3. 스캐닝/연결을 넘어선 최적화 단계

이 단계에서 옵티마이저는 GROUP BY, 집계, 윈도우 함수 및 DISTINCT의 우선 순위를 지정한 다음 수집(UNION/INTERSECT/EXCEPT) 작업을 처리하고 마지막으로 ORDER BY를 처리합니다. 위의 각 단계에서는 하나 이상의 경로를 생성합니다. 최적화 프로그램은 비용을 기준으로 이러한 경로를 필터링하고 필터링된 경로에 LockRows, Limit 및 ModifyTable 노드를 추가합니다.

4. 후처리 단계

이 단계에서 최적화 프로그램은 최소 비용 경로를 계획 트리로 변환하고 계획 트리의 일부 세부 정보를 조정해야 합니다.

  • 하위 쿼리의 범위 테이블 평면화
  • 하위 계획의 출력을 가리키도록 상위 계획 노드의 변수를 OUTER_VAR 또는 INNER_VAR 형식으로 변경합니다.
  • 불필요한 SubqueryScan, Append, MergeAppend 및 기타 노드 삭제

이 단계를 완료한 후 최적화 프로그램은 전체 계획 트리를 얻고 실행을 위해 계획 트리를 실행자에게 전달한 다음 최종적으로 쿼리 결과를 얻을 수 있습니다.

중국에 본사를 둔 하이테크 혁신 기업인 Tuoshupai는 최근 몇 년간 코드 기여, 강의, 컨퍼런스 후원 및 참여, 생태학적 협력 및 기타 형태를 통해 국제 오픈 소스 기술 및 생태계에 깊이 관여해 왔습니다. 앞으로도 Tuoshupai는 계속해서 국제적 지평을 넓히고, 글로벌 기술 혁신의 물결에 적극적으로 통합하고, 국제적 영향력을 확대 하고, 국제적인 기술 중심 기업을 구축할 것입니다.

오픈 소스 Hongmeng을 포기하기로 결정했습니다 . 오픈 소스 Hongmeng의 아버지 Wang Chenglu: 오픈 소스 Hongmeng은 중국에서 유일하게 기초 소프트웨어 분야의 건축 혁신 산업 소프트웨어 행사입니다. OGG 1.0이 출시되고 Huawei는 모든 소스 코드를 제공합니다. 구글 리더가 '코드 똥산'에 죽는다 페도라 리눅스 40 정식 출시 전 마이크로소프트 개발자: 윈도우 11 성능이 ' 어처구니없을 정도로 나쁨' 마화텡과 저우홍이가 악수하며 '원한 해소' ​​유명 게임사들이 새로운 규정 발표 : 직원 결혼 선물은 100,000위안을 초과할 수 없습니다. Ubuntu 24.04 LTS 공식 출시 Pinduoduo는 부정 경쟁 혐의로 판결을 받았습니다. 보상금 500만 위안
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/5944765/blog/11059181