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

David Wayne Birdsall commented on TRAFODION-2645:
-------------------------------------------------

I experimented with the suggested change a few days ago. When I ran the 
development regression suite I encountered two plan changes that were not 
beneficial. In seabase/TEST011, one query that formerly did not use MDAM 
started using MDAM with a disjunct of (V1 < 100000) AND (V2 < 99) AND (V3 < 
500) which intuitively does not seem like a good plan to me. And indeed when I 
executed the query with old and new plans I found the execution time lengthened 
from 0.332512 seconds to 0.739676 seconds on my workstation. This was not a 
controlled environment so more careful testing would be needed to prove that it 
is detrimental but it seems like a plausible result to me. In test 
seabase/TEST026, I saw three queries switch from a full index-only scan against 
the OBJECTS_UNIQ_IDX to an MDAM plan against the OBJECTS table. The MDAM plans 
look better, actually, but we get different results! It turns out the testware 
needs upgrading. The test is a CLEANUP test, and the OBJECTS_UNIQ_IDX was 
intentionally made to be inconsistent with the OBJECTS table. The testware 
should be upgraded to execute the queries twice, with the access path forced 
each way.

So, the change suggested in this JIRA may still be a good one but additional 
changes might be needed. Further development testing is needed.

> MDAM costing overestimates I/O cost
> -----------------------------------
>
>                 Key: TRAFODION-2645
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-2645
>             Project: Apache Trafodion
>          Issue Type: Bug
>          Components: sql-cmp
>    Affects Versions: 2.2-incubating
>         Environment: All
>            Reporter: David Wayne Birdsall
>            Assignee: David Wayne Birdsall
>
> The method MDAMCostWA::compute (optimizer/ScanOptimizer.cpp) has logic to 
> calculate the total cost of an MDAM plan and compare it to the cost of a 
> single subset plan. In the case of a Trafodion table, the cost logic for MDAM 
> cost has an error. It is adding the total number of probes (totalRqsts) to 
> the number of seeks (totalSeeks) in order to calculate I/O costs.
> TotalSeeks models direct access disk seeks. These happen at the block level 
> and are an I/O cost.
> TotalRqsts models the number of probes, which is a CPU cost. A probe is a 
> direct access within a block that has already been read into memory. This is 
> a vastly smaller unit of cost than an I/O operation.
> Note that TotalRqsts is already modeled as a message cost since it is added 
> to TotalRows.
> The effect of the bug is to vastly penalize MDAM plans having large numbers 
> of probes. This will show up the most on the largest tables.
> The fix is simply not to add totalRqsts to totalSeeks. However, in making 
> this fix, it is likely that other MDAM-related parameters will need tuning. 
> So this change needs to be done carefully.



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

Reply via email to