Hi Derby community,
a while ago I´ve posted some mails, which shortly introduced my
extensions, which I`m developing during my thesis and which I want to
contribute to the community. These extensions will extend Derby with
kind of a persistent workload repository and a well-designed query plan
extraction extension. Now, I´ve got some questions and I would like to
know what the community thinks about them:
I`m planning to store the query plans in some kind of system explain
tables. I´m currently designing the scheme for the tables and I want to
know, if the community is interested in a more general solution.
1. More specifically I mean, should this explain functionality include
the plans generated during compilation phase? If yes, should the user
have the ability to specifiy the exact position when during compilation
(ParseTree, BindTree, OptimizedTree)?
2. Should the scheme support compilation and execution plans (This would
mean there must be a mapping from the node tree to the resultset tree
and vice versa and the scheme has to be more generic)?
2b. Should the approach be oriented on DB2, where the user has the
ability to switch between, only explain, execute and explain, just
execute without explain?
3. Another approach would be to develop two decoupled solutions, one for
the compilation plans and one for the execution plans. The first one
stores NodeTrees and the second one ResultSetTrees? What do you think,
does this make sense for you?
4. Should the extension follow general derby architecture
(FactoryInterface and Implementation) and should it therefore be so
generic, that for example the extraction of the plans into xml files
will also be possible with the suggested approach?
5. Should the solution extend, replace or coexist together with the
ResultSetStatistics facility?
6. Is there some information, which is available, or easily derivable
from current information, which is interesting for some of you and is
currently not printed out with the current implementation of the
ResultSetStatistics?
Have you got further ideas regarding this or some similiar extension?
My current timetable is the following:
In some weeks (before end of november) I want to post a detailed
concept, describing my extensions in full detail. After the feedback for
this, I want to start with the development. At the end of the year, I
want to have a working solution. In the new year, I want to run the
derby test suites and a couple of performance impact measurements to
test my solution and to improve the stability. After that I`ll post a
new thread, providing my results.
Thank you for your feedback,
Felix Beyer