the스포츠 토토 베트맨모듈은 잘 알려진 여행 판매원 문제인 것처럼 쿼리 최적화 문제에 접근합니다 (TSP). 가능한 쿼리 계획은 정수 문자열로 인코딩됩니다.
/\
는 정수 문자열 '4-1-3-2'로 인코딩됩니다. 즉, 먼저 관계 '4'와 '1', '3', '3', '2', 1, 2, 3, 4는 내 관계 ID입니다.PostgreSQLOptimizer.
의 특정 특성스포츠 토토 베트맨구현PostgreSQLare :
a 사용정상 상태 ga(전체 세대 교체가 아닌 인구에서 가장 적합하지 않은 개인의 교체)는 개선 된 쿼리 계획에 대한 빠른 수렴을 허용합니다. 이것은 합리적인 시간으로 쿼리 처리에 필수적입니다.
사용법가장자리 재조합 크로스 오버12481_12555TSPaga;
유전자 운영자로서의 돌연변이는 더 이상 사용되지 않으므로 법률을 생성하기 위해 수리 메커니즘이 필요하지 않습니다TSP투어.
의 일부스포츠 토토 베트맨모듈은 D. Whitley의 Genitor 알고리즘에서 조정되었습니다.
the스포츠 토토 베트맨모듈 허용PostgreSQL쿼리 옵티마이저는 비 모성 검색을 통해 대규모 결합 쿼리를 효과적으로 지원합니다.
the스포츠 토토 베트맨계획 프로세스는 표준 플래너 코드를 사용하여 개별 관계 스캔 계획을 생성합니다. 그런 다음 가입 계획은 유전자 접근법을 사용하여 개발됩니다.스포츠 토토 베트맨코드는 단순히 가능한 일부 조인 시퀀스를 무작위로 생성합니다. 고려 된 각 조인 시퀀스에 대해, 표준 플래너 코드는 해당 조인 시퀀스를 사용하여 쿼리를 수행하는 비용을 추정하기 위해 호출됩니다.“더 적합한”비용이 더 높은 것보다. 유전자 알고리즘은 가장 적합하지 않은 후보자를 버립니다.
이 과정은 초기 인구 선택과 후속 모두에서 이루어진 무작위 선택으로 인해 본질적으로 비 결정적입니다.“돌연변이”최고의 후보자. 선택된 계획의 놀라운 변화를 피하기 위해 스포츠 토토 베트맨 알고리즘의 각 실행은 임의의 숫자 생성기를 전류로 다시 시작합니다스포츠 토토 베트맨_seed매개 변수 설정. 하는 한스포츠 토토 베트맨_seed
및 다른 스포츠 토토 베트맨 매개 변수는 고정 된 상태로 유지되며, 주어진 쿼리 (및 통계와 같은 다른 플래너 입력)에 대해 동일한 계획이 생성됩니다. 다른 검색 경로를 실험하려면 변경해보십시오스포츠 토토 베트맨_seed
.
유전자 알고리즘 매개 변수 설정을 개선하기 위해서는 여전히 작업이 필요합니다. 파일SRC/백엔드/최적화/스포츠 토토 베트맨/스포츠 토토 베트맨_main.c
, 루틴gimme_pool_size
및gimme_number_generations
, 우리는 두 가지 경쟁 요구를 충족시키기 위해 매개 변수 설정에 대한 타협을 찾아야합니다.
쿼리 계획의 최적 성
컴퓨팅 시간
현재 구현에서 각 후보 결합 시퀀스의 체력은 표준 플래너의 조인 선택 및 비용 추정 코드를 처음부터 실행하여 추정됩니다. 다른 후보자가 유사한 후하의 조인을 사용하는 한, 많은 작업이 반복 될 것입니다.
보다 기본적인 수준에서 TSP 용으로 설계된 GA 알고리즘으로 쿼리 최적화를 해결하는 것이 적절하다는 것은 확실하지 않습니다. TSP 사례에서는 모든 하위 문자열 (부분 투어)과 관련된 비용은 나머지 투어와 무관하지만 쿼리 최적화에는 사실이 아닙니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면