이 문서는 지원되지 않는 와이즈 토토 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 60.3. PostgreSQL의 유전자 쿼리 최적화 (토토 사이트)버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

59.3. 유전자 쿼리 최적화(GEQO) 와이즈 토토에서

GEQO모듈은 마치 잘 알려진 여행하는 외판원 문제인 것처럼 쿼리 최적화 문제에 접근합니다(TSP). 가능한 쿼리 계획은 정수 문자열로 인코딩됩니다. 각 문자열은 쿼리의 한 관계에서 다음 관계까지의 조인 순서를 나타냅니다. 예를 들어 조인 트리

   /\
  /\ 2
 /\ 3
4  1

은 정수 문자열 '4-1-3-2'로 인코딩됩니다. 이는 먼저 관계 '4'와 '1'을 조인한 다음 '3', 그 다음 '2'를 조인함을 의미합니다. 여기서 1, 2, 3, 4는 내의 관계 ID입니다.와이즈 토토최적화기.

특정 특성GEQO구현포스트그레SQL다음은:

  • a의 사용법정상 상태 GA(전체 세대 교체가 아닌 모집단에서 가장 적합하지 않은 개인 교체)을 통해 향상된 쿼리 계획으로 빠르게 수렴할 수 있습니다. 이는 합리적인 시간 내에 쿼리를 처리하는 데 필수적입니다.

  • 사용법에지 재조합 크로스오버이는 다음 솔루션의 에지 손실을 낮게 유지하는 데 특히 적합합니다.TSPa를 통해GA;

  • 유전 연산자로서의 돌연변이는 더 이상 사용되지 않으므로 법적 생성을 위해 복구 메커니즘이 필요하지 않습니다.TSP투어.

의 일부GEQO모듈은 D. Whitley의 Genitor 알고리즘에서 채택되었습니다.

GEQO모듈은 다음을 허용합니다와이즈 토토비완전한 검색을 통해 대규모 조인 쿼리를 효과적으로 지원하는 쿼리 최적화 프로그램입니다.

59.3.1. 다음을 사용하여 가능한 계획 생성하기GEQO

GEQO계획 프로세스는 표준 플래너 코드를 사용하여 개별 관계 스캔을 위한 계획을 생성합니다. 그런 다음 유전적 접근 방식을 사용하여 가입 계획을 개발합니다. 위에서 보듯이 각 후보 조인 계획은 기본 관계를 조인하는 순서로 표시됩니다. 초기 단계에서는GEQO코드는 단순히 가능한 조인 시퀀스를 무작위로 생성합니다. 고려된 각 조인 시퀀스에 대해 표준 플래너 코드가 호출되어 해당 조인 시퀀스를 사용하여 쿼리를 수행하는 데 드는 비용을 추정합니다. (조인 시퀀스의 각 단계에 대해 가능한 세 가지 조인 전략이 모두 고려되며 초기에 결정된 관계 스캔 계획이 모두 사용 가능합니다. 예상 비용은 이러한 가능성 중 가장 저렴합니다.) 예상 비용이 더 낮은 조인 시퀀스가 ​​고려됩니다.더 적합비용이 더 높은 것보다. 유전자 알고리즘은 가장 적합하지 않은 후보를 삭제합니다. 그런 다음 더 적합한 후보의 유전자를 결합하여 새로운 후보가 생성됩니다. 즉, 알려진 저비용 조인 시퀀스에서 무작위로 선택된 부분을 사용하여 고려할 새 시퀀스를 생성합니다. 이 프로세스는 미리 설정된 수의 조인 시퀀스가 ​​고려될 때까지 반복됩니다. 그런 다음 검색 중 언제든지 찾은 가장 좋은 항목을 사용하여 완성된 계획을 생성합니다.

이 프로세스는 초기 인구 선택과 후속 과정에서 무작위 선택이 이루어지기 때문에 본질적으로 비결정적입니다.돌연변이최고의 후보자들. 선택한 계획의 예상치 못한 변경을 방지하기 위해 GEQO 알고리즘을 실행할 때마다 현재의 난수 생성기를 다시 시작합니다.geqo_seed매개변수 설정. 하는 한geqo_seed및 기타 GEQO 매개변수는 고정된 상태로 유지되며 지정된 쿼리(및 통계와 같은 기타 플래너 입력)에 대해 동일한 계획이 생성됩니다. 다양한 검색 경로를 실험하려면 변경해 보세요.geqo_seed.

59.3.2. 에 대한 향후 구현 작업와이즈 토토 GEQO

유전 알고리즘 매개변수 설정을 개선하기 위한 작업이 여전히 필요합니다. 파일에 있음src/backend/optimizer/geqo/geqo_main.c, 루틴gimme_pool_size그리고gimme_number_세대, 우리는 두 가지 경쟁 요구를 충족시키기 위해 매개변수 설정에 대한 절충안을 찾아야 합니다.

  • 쿼리 계획의 최적화

  • 컴퓨팅 시간

현재 구현에서는 표준 플래너의 조인 선택 및 비용 추정 코드를 처음부터 실행하여 각 후보 조인 시퀀스의 적합성을 추정합니다. 서로 다른 후보가 유사한 조인 하위 시퀀스를 사용하는 경우 많은 작업이 반복됩니다. 하위 조인에 대한 비용 추정을 유지하면 이 작업이 훨씬 더 빨라질 수 있습니다. 문제는 해당 상태를 유지하기 위해 불합리한 양의 메모리를 소비하지 않는 것입니다.

보다 기본적인 수준에서는 TSP용으로 설계된 GA 알고리즘으로 쿼리 최적화를 해결하는 것이 적절한지 명확하지 않습니다. TSP의 경우 하위 문자열(부분 둘러보기)과 관련된 비용은 나머지 둘러보기와 독립적이지만 쿼리 최적화에서는 확실히 그렇지 않습니다. 따라서 가장자리 재조합 교차가 가장 효과적인 돌연변이 절차인지는 의문입니다.