이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

미래 에 대한 구현 작업포스트그레 GEQO

기본 개선사항

해제 개선 쿼리가 이미 처리된 경우의 메모리

대형으로가입컴퓨팅을 쿼리합니다. 유전자 쿼리 최적화에 소비된 시간은 단순한 것 같습니다분수시간의포스트그레스루틴을 통해 메모리를 해제해야 함MemoryContextFree, 파일백엔드/utils/mmgr/mcxt.c. 디버깅 결과 루틴의 루프에 갇히다OrderedElemPop, 파일백엔드/utils/mmgr/oset.c. 같은 문제가 발생합니다 일반을 사용할 때 긴 쿼리가 있는 경우포스트그레스쿼리 최적화 알고리즘.

유전적 개선 알고리즘 매개변수 설정

파일에백엔드/최적화/geqo/geqo_params.c, 루틴gimme_pool_size그리고gimme_number_세대, 우리는 두 가지 경쟁을 만족시키기 위해 매개변수 설정을 타협했습니다. 요구사항:

  • 쿼리 계획의 최적화

  • 컴퓨팅 시간

더 나은 찾기 정수 오버플로에 대한 솔루션

파일에백엔드/최적화/geqo/geqo_eval.c, 루틴geqo_joinrel_size, 현재 해킹 MAXINT 오버플로는포스트그레스정수 값rel-크기로그로 변환합니다. 수정 의상대in백엔드/노드/관계.h분명히 심각한 일이 있을 것입니다 전체에 영향을 미칩니다포스트그레스구현.

해결책 찾기 지친 기억을 위해

10개 이상의 관계가 관련되면 메모리 고갈이 발생할 수 있습니다. 쿼리에서. 파일에 있음백엔드/최적화/geqo/geqo_eval.c, 루틴gimme_tree재귀적으로 호출됩니다. 아마도 나는 올바르게 해제해야 할 것을 잊어버렸는데 무엇인지 모르겠습니다. 물론이다rel의 데이터 구조가입계속 성장하고 더욱 성장합니다 관계가 담겨있습니다. 제안을 환영합니다 :-(