ExternalSortFactory
, UniqueWithDuplicateNullsExternalSortFactory
public interface SortCostController
Modifier and Type | Method | Description |
---|---|---|
void |
close() |
Close the controller.
|
double |
getSortCost(DataValueDescriptor[] template,
ColumnOrdering[] columnOrdering,
boolean alreadyInOrder,
long estimatedInputRows,
long estimatedExportRows,
int estimatedRowSize) |
Calculate the cost of a sort.
|
void close()
Close the open controller. This method always succeeds, and never throws any exceptions. Callers must not use the StoreCostController after closing it; they are strongly advised to clear out the StoreCostController reference after closing.
double getSortCost(DataValueDescriptor[] template, ColumnOrdering[] columnOrdering, boolean alreadyInOrder, long estimatedInputRows, long estimatedExportRows, int estimatedRowSize) throws StandardException
The cost of a sort includes the time spent in the sorter inserting the rows into the sort, and the time spent in the sorter returning the rows. Note that it does not include the cost of scanning the rows from the source table, for insert into the sort.
Arguments to getSortCost(), should be the same as those to be passed to TransactionController.createSort().
template
- A row which is prototypical for the sort. All
rows inserted into the sort controller must have
exactly the same number of columns as the
template row. Every column in an inserted row
must have the same type as the corresponding
column in the template.columnOrdering
- An array which specifies which columns
participate in ordering - see interface
ColumnOrdering for details. The column
referenced in the 0th columnOrdering object is
compared first, then the 1st, etc.alreadyInOrder
- Indicates that the rows inserted into the sort
controller will already be in order. This is used
to perform aggregation only.estimatedInputRows
- The number of rows that the caller estimates
will be inserted into the sort. This number must
be >= 0.estimatedExportRows
- The number of rows that the caller estimates
will be exported by the sorter. For instance if
the sort is doing duplicate elimination and all
rows are expected to be duplicates then the
estimatedExportRows would be 1. If no duplicate
eliminate is to be done then estimatedExportRows
would be the same as estimatedInputRows. This
number must be >= 0.estimatedRowSize
- The estimated average row size of the rows
being sorted. This is the client portion of the
rowsize, it should not attempt to calculate
Store's overhead. -1 indicates that the caller
has no idea (and the sorter will use 100 bytes
in that case. Used by the sort to make good
choices about in-memory vs. external sorting,
and to size merge runs. The client is not
expected to estimate the per column/ per row
overhead of raw store, just to make a guess
about the storage associated with each row
(ie. reasonable estimates for some
implementations would be 4 for int, 8 for long,
102 for char(100), 202 for varchar(200), a
number out of hat for user types, ...).StandardException
- Standard exception policy.Apache Derby V10.14 Internals - Copyright © 2004,2018 The Apache Software Foundation. All Rights Reserved.