Interface OptTrace
-
- All Known Implementing Classes:
DefaultOptTrace
,XMLOptTrace
public interface OptTrace
Interface for optimizer tracing.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
printToWriter(java.io.PrintWriter out)
Print the trace so far.void
traceAddingUnorderedOptimizable(int predicateCount)
Say that we're adding an unordered optimizable.void
traceChangingAccessPathForTable(int tableNumber)
Say that we're considering a different access path for a table.void
traceCheapestPlanSoFar(int planType, CostEstimate currentCost)
Report the cost of the cheapest plan so far.void
traceCompleteJoinOrder()
Say that we have a complete join order.void
traceCompositeSelectivityFromStatistics(double statCompositeSelectivity)
Report the selectivity calculated from SYSSTATISTICS.void
traceConsideringConglomerate(ConglomerateDescriptor cd, int tableNumber)
Report that we are considering a conglomerate for a table.void
traceConsideringJoinStrategy(JoinStrategy js, int tableNumber)
Say that we're considering a particular join strategy on a particular table.void
traceConstantStartStopPositions()
Say that we're setting the lock mode to MODE_RECORD because the start and stop positions are all constant.void
traceCostIncludingCompositeSelectivityFromStats(CostEstimate cost, int tableNumber)
Report the cost based on selectivities coming out of SYSSTATISTICS.void
traceCostIncludingExtra1stColumnSelectivity(CostEstimate cost, int tableNumber)
Report the cost of a scan given the selectivity of an extra first column.void
traceCostIncludingExtraNonQualifierSelectivity(CostEstimate cost, int tableNumber)
Report the cost if we include an extra non-qualifier.void
traceCostIncludingExtraQualifierSelectivity(CostEstimate cost, int tableNumber)
Report the cost if we include an extra qualifier.void
traceCostIncludingExtraStartStop(CostEstimate cost, int tableNumber)
Report the cost if we include an extra start/stop.void
traceCostIncludingStatsForIndex(CostEstimate cost, int tableNumber)
Report the cost based on index statistics.void
traceCostOfConglomerateScan(int tableNumber, ConglomerateDescriptor cd, CostEstimate costEstimate, int numExtraFirstColumnPreds, double extraFirstColumnSelectivity, int numExtraStartStopPreds, double extraStartStopSelectivity, int startStopPredCount, double statStartStopSelectivity, int numExtraQualifiers, double extraQualifierSelectivity, int numExtraNonQualifiers, double extraNonQualifierSelectivity)
Report the cost of a conglomerate scan.void
traceCostOfNoncoveringIndex(CostEstimate cost, int tableNumber)
Report the cost of using a non-covering index.void
traceCostOfNScans(int tableNumber, double rowCount, CostEstimate cost)
Report the cost of scanning a table a certain number of timesvoid
traceCostWithoutSortAvoidance(CostEstimate currentCost)
Report the cost without a sort.void
traceCostWithSortAvoidance(CostEstimate currentSortAvoidanceCost)
Report the cost with sort avoidance.void
traceCurrentPlanAvoidsSort(CostEstimate bestCost, CostEstimate currentSortAvoidanceCost)
Say that the current plan avoids a sort.void
traceEndQueryBlock()
End tracing the optimization of a query block.void
traceEstimatingCostOfConglomerate(ConglomerateDescriptor cd, int tableNumber)
Report the cost of using a particular conglomerate to scan a table.void
traceHashKeyColumns(int[] hashKeyColumns)
Report the columns being tracedvoid
traceIllegalUserJoinOrder()
Say that the user specified an impossible join order.void
traceJoinOrderConsideration(int joinPosition, int[] proposedJoinOrder, JBitSet assignedTableMap)
Say that we're considering a join order.void
traceLookingForSpecifiedIndex(java.lang.String indexName, int tableNumber)
Say that we're looking for an index specified by optimizer hints.void
traceModifyingAccessPaths(int optimizerID)
Say that we're modifying access paths.void
traceNextAccessPath(java.lang.String baseTable, int predicateCount)
Report that we are advancing to the next access path for the table.void
traceNoBestPlan()
Say that we couldn't find a best plan.void
traceNoMoreConglomerates(int tableNumber)
Say that we have exhausted the conglomerate possibilities for a table.void
traceNonCoveringIndexCost(double cost, int tableNumber)
Say that we're considering a non-covering index.void
traceNoStartStopPosition()
Say that we're setting the lock mode to MODE_TABLE because there is no start/stop position.void
traceOptimizingJoinNode()
Say that we're starting to optimize a join nodevoid
traceRememberingBestAccessPath(AccessPath accessPath, int tableNumber, int planType)
Report that we've found a best access path.void
traceRememberingBestAccessPathSubstring(AccessPath ap, int tableNumber)
Report the best access path for the table so far.void
traceRememberingBestJoinOrder(int joinPosition, int[] bestJoinOrder, int planType, CostEstimate planCost, JBitSet assignedTableMap)
Say that we are remembering the current plan as the best join order so far.void
traceRememberingBestSortAvoidanceAccessPathSubstring(AccessPath ap, int tableNumber)
Report the best sort-avoiding access path for this table so far.void
traceRememberingBestUnknownAccessPathSubstring(AccessPath ap, int tableNumber)
Report an optimizer failure, e.g., while optimizing an outer joinvoid
traceRememberingJoinStrategy(JoinStrategy joinStrategy, int tableNumber)
Say that we've found a new best join strategy for the table.void
traceScanningHeapWithUniqueKey()
Say that we're considering scanning a heap even though we have a unique key match.void
traceShortCircuiting(boolean timeExceeded, Optimizable thisOpt, int joinPosition)
Say that we short-circuited a join order.void
traceSingleMatchedRowCost(double cost, int tableNumber)
Report the cost of a scan which will match exactly one row.void
traceSkipHashJoinNoHashKeys()
Say we won't consider a hash join because there are no hash key columns.void
traceSkippingBecauseTooMuchMemory(int maxMemoryPerTable)
Say that we are skipping a plan because it consumes too much memory.void
traceSkippingJoinOrder(int nextOptimizable, int joinPosition, int[] proposedJoinOrder, JBitSet assignedTableMap)
Say that we're skipping the join order starting with the next optimizable.void
traceSkipUnmaterializableHashJoin()
Say that we won't consider a hash join because the result can't be materializedvoid
traceSortCost(CostEstimate sortCost, CostEstimate currentCost)
Report the sort cost.void
traceSortNeededForOrdering(int planType, RequiredRowOrdering requiredRowOrdering)
Report that this plan needs a sortvoid
traceStartQueryBlock(long timeOptimizationStarted, int optimizerID, OptimizableList optimizableList)
Start optimizer tracing for a query block.void
traceStartStatement(java.lang.String statementText)
Start the start of tracing a statement.void
traceTimeout(long currentTime, CostEstimate bestCost)
Say that the optimizer ran out of time.void
traceUserJoinOrderOptimized()
Say that we have optimized the user-specified join order.void
traceVacuous()
Say that there's nothing to optimizer.
-
-
-
Method Detail
-
traceStartStatement
void traceStartStatement(java.lang.String statementText)
Start the start of tracing a statement.
-
traceStartQueryBlock
void traceStartQueryBlock(long timeOptimizationStarted, int optimizerID, OptimizableList optimizableList)
Start optimizer tracing for a query block.
-
traceEndQueryBlock
void traceEndQueryBlock()
End tracing the optimization of a query block.
-
traceTimeout
void traceTimeout(long currentTime, CostEstimate bestCost)
Say that the optimizer ran out of time.
-
traceVacuous
void traceVacuous()
Say that there's nothing to optimizer.
-
traceCompleteJoinOrder
void traceCompleteJoinOrder()
Say that we have a complete join order.
-
traceSortCost
void traceSortCost(CostEstimate sortCost, CostEstimate currentCost)
Report the sort cost.
-
traceNoBestPlan
void traceNoBestPlan()
Say that we couldn't find a best plan.
-
traceModifyingAccessPaths
void traceModifyingAccessPaths(int optimizerID)
Say that we're modifying access paths.
-
traceShortCircuiting
void traceShortCircuiting(boolean timeExceeded, Optimizable thisOpt, int joinPosition)
Say that we short-circuited a join order.
-
traceSkippingJoinOrder
void traceSkippingJoinOrder(int nextOptimizable, int joinPosition, int[] proposedJoinOrder, JBitSet assignedTableMap)
Say that we're skipping the join order starting with the next optimizable.
-
traceIllegalUserJoinOrder
void traceIllegalUserJoinOrder()
Say that the user specified an impossible join order.
-
traceUserJoinOrderOptimized
void traceUserJoinOrderOptimized()
Say that we have optimized the user-specified join order.
-
traceJoinOrderConsideration
void traceJoinOrderConsideration(int joinPosition, int[] proposedJoinOrder, JBitSet assignedTableMap)
Say that we're considering a join order.
-
traceCostWithoutSortAvoidance
void traceCostWithoutSortAvoidance(CostEstimate currentCost)
Report the cost without a sort.
-
traceCostWithSortAvoidance
void traceCostWithSortAvoidance(CostEstimate currentSortAvoidanceCost)
Report the cost with sort avoidance.
-
traceCurrentPlanAvoidsSort
void traceCurrentPlanAvoidsSort(CostEstimate bestCost, CostEstimate currentSortAvoidanceCost)
Say that the current plan avoids a sort.
-
traceCheapestPlanSoFar
void traceCheapestPlanSoFar(int planType, CostEstimate currentCost)
Report the cost of the cheapest plan so far.
-
traceSortNeededForOrdering
void traceSortNeededForOrdering(int planType, RequiredRowOrdering requiredRowOrdering)
Report that this plan needs a sort
-
traceRememberingBestJoinOrder
void traceRememberingBestJoinOrder(int joinPosition, int[] bestJoinOrder, int planType, CostEstimate planCost, JBitSet assignedTableMap)
Say that we are remembering the current plan as the best join order so far.
-
traceSkippingBecauseTooMuchMemory
void traceSkippingBecauseTooMuchMemory(int maxMemoryPerTable)
Say that we are skipping a plan because it consumes too much memory.
-
traceCostOfNScans
void traceCostOfNScans(int tableNumber, double rowCount, CostEstimate cost)
Report the cost of scanning a table a certain number of times
-
traceSkipUnmaterializableHashJoin
void traceSkipUnmaterializableHashJoin()
Say that we won't consider a hash join because the result can't be materialized
-
traceSkipHashJoinNoHashKeys
void traceSkipHashJoinNoHashKeys()
Say we won't consider a hash join because there are no hash key columns.
-
traceHashKeyColumns
void traceHashKeyColumns(int[] hashKeyColumns)
Report the columns being traced
-
traceOptimizingJoinNode
void traceOptimizingJoinNode()
Say that we're starting to optimize a join node
-
traceConsideringJoinStrategy
void traceConsideringJoinStrategy(JoinStrategy js, int tableNumber)
Say that we're considering a particular join strategy on a particular table.
-
traceRememberingBestAccessPath
void traceRememberingBestAccessPath(AccessPath accessPath, int tableNumber, int planType)
Report that we've found a best access path.
-
traceNoMoreConglomerates
void traceNoMoreConglomerates(int tableNumber)
Say that we have exhausted the conglomerate possibilities for a table.
-
traceConsideringConglomerate
void traceConsideringConglomerate(ConglomerateDescriptor cd, int tableNumber)
Report that we are considering a conglomerate for a table.
-
traceScanningHeapWithUniqueKey
void traceScanningHeapWithUniqueKey()
Say that we're considering scanning a heap even though we have a unique key match.
-
traceAddingUnorderedOptimizable
void traceAddingUnorderedOptimizable(int predicateCount)
Say that we're adding an unordered optimizable.
-
traceChangingAccessPathForTable
void traceChangingAccessPathForTable(int tableNumber)
Say that we're considering a different access path for a table.
-
traceNoStartStopPosition
void traceNoStartStopPosition()
Say that we're setting the lock mode to MODE_TABLE because there is no start/stop position.
-
traceNonCoveringIndexCost
void traceNonCoveringIndexCost(double cost, int tableNumber)
Say that we're considering a non-covering index.
-
traceConstantStartStopPositions
void traceConstantStartStopPositions()
Say that we're setting the lock mode to MODE_RECORD because the start and stop positions are all constant.
-
traceEstimatingCostOfConglomerate
void traceEstimatingCostOfConglomerate(ConglomerateDescriptor cd, int tableNumber)
Report the cost of using a particular conglomerate to scan a table.
-
traceLookingForSpecifiedIndex
void traceLookingForSpecifiedIndex(java.lang.String indexName, int tableNumber)
Say that we're looking for an index specified by optimizer hints.
-
traceSingleMatchedRowCost
void traceSingleMatchedRowCost(double cost, int tableNumber)
Report the cost of a scan which will match exactly one row.
-
traceCostIncludingExtra1stColumnSelectivity
void traceCostIncludingExtra1stColumnSelectivity(CostEstimate cost, int tableNumber)
Report the cost of a scan given the selectivity of an extra first column.
-
traceNextAccessPath
void traceNextAccessPath(java.lang.String baseTable, int predicateCount)
Report that we are advancing to the next access path for the table.
-
traceCostIncludingExtraStartStop
void traceCostIncludingExtraStartStop(CostEstimate cost, int tableNumber)
Report the cost if we include an extra start/stop.
-
traceCostIncludingExtraQualifierSelectivity
void traceCostIncludingExtraQualifierSelectivity(CostEstimate cost, int tableNumber)
Report the cost if we include an extra qualifier.
-
traceCostIncludingExtraNonQualifierSelectivity
void traceCostIncludingExtraNonQualifierSelectivity(CostEstimate cost, int tableNumber)
Report the cost if we include an extra non-qualifier.
-
traceCostOfNoncoveringIndex
void traceCostOfNoncoveringIndex(CostEstimate cost, int tableNumber)
Report the cost of using a non-covering index.
-
traceRememberingJoinStrategy
void traceRememberingJoinStrategy(JoinStrategy joinStrategy, int tableNumber)
Say that we've found a new best join strategy for the table.
-
traceRememberingBestAccessPathSubstring
void traceRememberingBestAccessPathSubstring(AccessPath ap, int tableNumber)
Report the best access path for the table so far.
-
traceRememberingBestSortAvoidanceAccessPathSubstring
void traceRememberingBestSortAvoidanceAccessPathSubstring(AccessPath ap, int tableNumber)
Report the best sort-avoiding access path for this table so far.
-
traceRememberingBestUnknownAccessPathSubstring
void traceRememberingBestUnknownAccessPathSubstring(AccessPath ap, int tableNumber)
Report an optimizer failure, e.g., while optimizing an outer join
-
traceCostOfConglomerateScan
void traceCostOfConglomerateScan(int tableNumber, ConglomerateDescriptor cd, CostEstimate costEstimate, int numExtraFirstColumnPreds, double extraFirstColumnSelectivity, int numExtraStartStopPreds, double extraStartStopSelectivity, int startStopPredCount, double statStartStopSelectivity, int numExtraQualifiers, double extraQualifierSelectivity, int numExtraNonQualifiers, double extraNonQualifierSelectivity)
Report the cost of a conglomerate scan.
-
traceCostIncludingCompositeSelectivityFromStats
void traceCostIncludingCompositeSelectivityFromStats(CostEstimate cost, int tableNumber)
Report the cost based on selectivities coming out of SYSSTATISTICS.
-
traceCompositeSelectivityFromStatistics
void traceCompositeSelectivityFromStatistics(double statCompositeSelectivity)
Report the selectivity calculated from SYSSTATISTICS.
-
traceCostIncludingStatsForIndex
void traceCostIncludingStatsForIndex(CostEstimate cost, int tableNumber)
Report the cost based on index statistics.
-
printToWriter
void printToWriter(java.io.PrintWriter out)
Print the trace so far.
-
-