[ 
https://issues.apache.org/jira/browse/DERBY-6949?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16113109#comment-16113109
 ] 

Harshvardhan Gupta commented on DERBY-6949:
-------------------------------------------

The whole lifecycle of Query Optimization in Derby is as follows - 

Optimizer Interface's implementation OptimizerImpl.java is responsible to 
iterate through all permitted semantically equivalent execution plans and 
orchestrating calls to the various entities that provide their 'estimated cost' 
of execution considering the set of constraints that will be associated with 
them during that particular plan.

Before getting into the details of the above mentioned entities and their 
estimated cost, it is important to note that the search space of all the 
possible semantically equivalent plans is limited to only left deep trees. The 
selection of join order also influences the way we want to constraint the 
execution. For example - A left deep HJ has to wait for each join to finished 
completely so that the result set can be hashed before  the next step can probe 
it, on the other hand in a right deep HJ, it is not the intermediate results 
that are being hashed but the base tables. So, Right deep HJ trees use 
substantially more memory / disk spillovers. 

It has been shown in the [VLDB Optimizer 
Paper|http://www.vldb.org/pvldb/vol9/p204-leis.pdf] (Section 6.2) that left 
deep trees perform quite reasonably while restricting search space and making 
the Optimizer simple and fast as opposed to right deep trees where disk spills 
eat away a lot of performance. The author further emphasize on cardinality 
estimates as opposed to search space which may not offer significant 
performance benefits. This area definitely needs to be further explored in 
Derby's context.

Coming back to the entities for cost estimation, they are Join Strategy, 
Optimizables and Ordering. Each of these implement the 'estimateCost' function 
and gives out their estimated cost of execution to the Optimizer. Optimizer 
permutes through the various combinations and produces the best possible 
execution plan it is able to find.

> Analysis of Derby Cost Estimation
> ---------------------------------
>
>                 Key: DERBY-6949
>                 URL: https://issues.apache.org/jira/browse/DERBY-6949
>             Project: Derby
>          Issue Type: Sub-task
>          Components: SQL
>            Reporter: Harshvardhan Gupta
>            Assignee: Harshvardhan Gupta
>




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to