Table 7.1 shows
the rules used
by the Model D for the results shown
in this section.
In some of the tables
below, rules are disabled or modified
to reduce the search space
or to demonstrate the effect of
the rules themselves.
When these rules are disabled or modified,
there will be a note at the bottom of
the table.
Note that of the EQJOIN transformation rules (7-10),
either the first two rules (7 and 8) were used
(for the complete join order search space),
or the second two rules (9 and 10) were used
(for the left deep join order search space).
For most results in this section
the left-deep only heuristic
(described in sections 4 and 6.4) was used.
In a few cases
(e.g. in tables 7.4 and 7.5)
the NOCART (No Cartesian Product) heuristic was used.
Much of the material
in Section 6 of this thesis
demonstrates the extensibility
of the Cascades Optimizer Framework.
The
aggregation push down rules,
new types of indices,
inclusion of new logical properties
and the complex conditions on rules
all suggest the extensibility
of the Cascades Framework.
It is hard
to precisely compare
the extensibility
of the Cascades Framework
with the extensibility
of other optimizers
without access
to the design
of these optimizers.
The real measure of extensibility
of an optimizer
is the measurement of the other three factors
over a large period of time.
During this time the optimizer will have to contend with the
addition of many new
logical and physical operators,
access paths, etc.
Efficiency is some measure
of resources used by the optimizer
in optimizing a query.
The optimizer can be compared
against other optimizers,
or against itself,
running in different configurations
(different rule-sets, etc.).
By analyzing
the resources used
(CPU time and memory usage)
in optimizing the queries,
the effects of different rules,
pruning techniques, etc.
can be compared.
Table 7.2 shows
the efficiency of
the Cascades/Model D optimizer
on the 17 TPC-D queries.
Efficiency is reported in terms
of the seconds of user time used
(as reported by the Unix time command) and
the maximum (final) size of the data segment of the
Unix process corresponding to the optimizer.