From 7507e6b5fc0413aa031a2a460ee7fdf2e17065c1 Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" Date: Wed, 19 Feb 1997 13:04:24 +0000 Subject: [PATCH] Add the GEQO Todo file too --- doc/TODO.GEQO | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 doc/TODO.GEQO diff --git a/doc/TODO.GEQO b/doc/TODO.GEQO new file mode 100644 index 0000000000..3e5b9f4f76 --- /dev/null +++ b/doc/TODO.GEQO @@ -0,0 +1,59 @@ + +=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= +* Things left to done for the PostgreSQL * += Genetic Query Optimization (GEQO) = +* module implementation * +=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= +* Martin Utesch * Institute of Automatic Control * += = University of Mining and Technology = +* utesch@aut.tu-freiberg.de * Freiberg, Germany * +=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= + + +1.) Basic Improvements +=============================================================== + +a) improve freeing of memory when query is already processed: +------------------------------------------------------------- +with large JOIN queries the computing time spent for the genetic query +optimization seems to be a mere *fraction* of the time Postgres +needs for freeing memory via routine 'MemoryContextFree', +file 'backend/utils/mmgr/mcxt.c'; +debugging showed that it get stucked in a loop of routine +'OrderedElemPop', file 'backend/utils/mmgr/oset.c'; +the same problems arise with long queries when using the normal +Postgres query optimization algorithm; + +b) improve genetic algorithm parameter settings: +------------------------------------------------ +file 'backend/optimizer/geqo/geqo_params.c', routines +'gimme_pool_size' and 'gimme_number_generations'; +we have to find a compromise for the parameter settings +to satisfy two competing demands: +1. optimality of the query plan +2. computing time + +c) find better solution for integer overflow: +--------------------------------------------- +file 'backend/optimizer/geqo/geqo_eval.c', routine +'geqo_joinrel_size'; +the present hack for MAXINT overflow is to set the Postgres integer +value of 'rel->size' to its logarithm; +modifications of 'struct Rel' in 'backend/nodes/relation.h' will +surely have severe impacts on the whole PostgreSQL implementation. + +d) find solution for exhausted memory: +-------------------------------------- +that may occur with more than 10 relations involved in a query, +file 'backend/optimizer/geqo/geqo_eval.c', routine +'gimme_tree' which is recursively called; +maybe I forgot something to be freed correctly, but I dunno what; +of course the 'rel' data structure of the JOIN keeps growing and +growing the more relations are packed into it; +suggestions are welcome :-( + + +2.) Further Improvements +=============================================================== +Enable bushy query tree processing within PostgreSQL; +that may improve the quality of query plans. -- 2.40.0