62.3. 유전자 스포츠 토토 베트맨 최적화 (geqo) postgresql에서#

thegeqo모듈은 잘 알려진 여행 판매원 문제인 것처럼 스포츠 토토 베트맨 최적화 문제에 접근합니다 (TSP). 가능한 쿼리 계획은 정수 문자열로 인코딩됩니다. 각 문자열은 쿼리의 한 관계에서 다음 문자열에서 조인 순서를 나타냅니다. 예를 들어, 조인 트리

/\
  /\ 2
 /\ 3
4 1

는 정수 문자열 '4-1-3-2'로 인코딩됩니다. 즉, 먼저 관계 '4'와 '1', '3', '2', '2', 1, 2, 3, 4가 내 관계 ID입니다.PostgreSQLOptimizer.

의 특정 특성geqo구현PostgreSQLare :

  • a 사용정상 상태 ga(전체 세대 교체가 아닌 인구에서 가장 적합하지 않은 개인의 교체)는 개선 된 스포츠 토토 베트맨 계획에 대한 빠른 수렴을 허용합니다. 이것은 합리적인 시간으로 스포츠 토토 베트맨 처리에 필수적입니다.

  • 사용법가장자리 재조합 크로스 오버특히 가장자리 손실을 낮게 유지하는 데 특히 적합합니다.TSPaga;

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

의 일부geqo모듈은 D. Whitley의 Genitor 알고리즘에서 조정되었습니다.

thegeqo모듈 허용PostgreSQL쿼리 최적화기는 비 모성 검색을 통해 대규모 결합 쿼리를 효과적으로 지원합니다.

62.3.1. 가능한 계획 생성geqo #

thegeqo계획 프로세스는 표준 플래너 코드를 사용하여 개별 관계 스캔 계획을 생성합니다. 그런 다음 가입 계획은 유전자 접근법을 사용하여 개발됩니다. 위에서 볼 수 있듯이 각 후보 조인 계획은 기본 관계에 가입하는 시퀀스로 표시됩니다. 초기 단계에서geqo코드는 단순히 가능한 일부 조인 시퀀스를 무작위로 생성합니다. 고려 된 각 조인 시퀀스에 대해, 표준 플래너 코드는 해당 조인 시퀀스를 사용하여 스포츠 토토 베트맨를 수행하는 비용을 추정하기 위해 호출됩니다. (결합 시퀀스의 각 단계마다, 가능한 세 가지 조인 전략이 모두 고려되고, 초기에 결정된 모든 관계 스캔 계획을 사용할 수 있습니다. 추정 비용은 이러한 가능성 중 가장 저렴합니다.) 예상 비용이 낮은 조인 시퀀스가 고려됩니다.더 적합한비용이 더 높은 것보다. 유전자 알고리즘은 가장 적합하지 않은 후보자를 버립니다. 그런 다음 더 적합한 후보의 유전자, 즉 알려진 저비용 조인 시퀀스의 무작위로 선택된 부분을 사용하여 고려할 새로운 서열을 생성함으로써 새로운 후보자가 생성된다. 이 과정은 사전 설정된 수의 조인 시퀀스가 고려 될 때까지 반복됩니다. 그런 다음 검색 중 언제라도 찾을 수있는 가장 좋은 것은 완성 된 계획을 생성하는 데 사용됩니다.

이 과정은 초기 인구 선택과 그 이후의 무작위 선택으로 인해 본질적으로 비 결정적입니다.돌연변이최고의 후보자. 선택된 계획의 놀라운 변화를 피하기 위해 GEQO 알고리즘의 각 실행은 임의의 숫자 생성기를 전류로 다시 시작합니다geqo_seed매개 변수 설정. 하는 한geqo_seed및 다른 GEQO 매개 변수는 고정 상태로 유지되며 주어진 스포츠 토토 베트맨 (및 통계와 같은 다른 플래너 입력)에 대해 동일한 계획이 생성됩니다. 다른 검색 경로를 실험하려면 변경해보십시오geqo_seed.

62.3.2. 향후 구현 작업PostgreSQL geqo #

유전자 알고리즘 매개 변수 설정을 개선하기 위해서는 여전히 작업이 필요합니다. 파일SRC/백엔드/최적화/geqo/geqo_main.c, 루틴gimme_pool_sizeandgimme_number_generations, 우리는 두 가지 경쟁 요구를 충족시키기 위해 매개 변수 설정에 대한 타협을 찾아야합니다.

  • 스포츠 토토 베트맨 계획의 최적 성

  • 컴퓨팅 시간

현재 구현에서 각 후보 결합 시퀀스의 체력은 표준 플래너의 조인 선택 및 비용 추정 코드를 처음부터 실행하여 추정됩니다. 다른 후보자가 유사한 후하의 조인을 사용하는 한, 많은 작업이 반복 될 것입니다. 하위 조인의 비용 추정치를 유지함으로써 이는 훨씬 더 빠르게 이루어질 수 있습니다. 문제는 해당 주를 유지하는 데 불합리한 금액의 메모리를 소비하지 않는 것입니다.

보다 기본적인 수준에서 TSP 용으로 설계된 GA 알고리즘으로 쿼리 최적화를 해결하는 것이 적절하다는 것은 확실하지 않습니다. TSP 사례에서는 모든 서브 스트링 (부분 투어)과 관련된 비용은 나머지 투어와 무관하지만 쿼리 최적화에는 사실이 아닙니다. 따라서 Edge 재조합 크로스 오버가 가장 효과적인 돌연변이 절차인지 의심의 여지가 있습니다.

수정 제출

문서에 맞지 않는 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면