Add the GEQO Todo file too
This commit is contained in:
parent
c9ead90ea3
commit
7507e6b5fc
59
doc/TODO.GEQO
Normal file
59
doc/TODO.GEQO
Normal file
@ -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.
|
Loading…
Reference in New Issue
Block a user