In section 9.4, we presented the black-out
preprocessing strategy that essentially scraps all entries of an
IP-table I(R) whose associated value lies beyond a certain
threshold value Y . These entries are considered as
unsuitable to provide a good breakpoint for a partition. Therefore, an
underflow strategy cannot choose such unsuitable breakpoints if the
IP-tables that it uses have been preprocessed in this way.
The experiments of section 10.2 showed discouraging
results for black-out preprocessing. However, this might be due to a
bad choice for the threshold Y which was chosen to be the average
of all values in the respective IP-table
I(R) according to equation (10.1). Here, we want to look at
black-out preprocessing in more detail. Experiments were set up in
which the threshold Y was varied. For practical purposes we express
Y in percent of . A value of 70%, for example, is supposed to
mean that . The respective Y'
threshold was set to be 10% below the corresponding XR and XQ
values, i.e.
Table 10.22 shows the performance results on the parallel and on the single-processor architectures. Figures 10.51 and 10.52 show the differences with respect to the time that is required if black-out preprocessing is not used in the partitioning process.
Not surprisingly, we find that the lower the threshold Y is, the higher
is the impact of black-preprocessing on the performances, at least on
the parallel architecture. The performance gains, if there are any,
remain marginal with 5% at best. From figures 10.51
and 10.52 we can see that black-out preprocessing is often
beneficial for the performances for the `mixed' join while
we find a negative effect on the performances for the `self' joins and . The latter effect is due to two slightly
different reasons:
In summary, we can conclude that the positive influence of black-out preprocessing are lower than we had hoped for when designing this strategy in section 9.4. In a considerable amount of cases it restricts the primary underflow strategy too much in its choice and causes a load balance which is worse than in the original case. This is usually penalised when a join is processed on a parallel architecture. In contrast, there is a modest benefit in most cases if the join is processed sequentially.
3c!width 2ptparallel architecture | 3c|single-processor machine | |||||||||||
Y | ![]() |
![]() |
||||||||||
(in % of ) | 1c|(Join 1) | 1c|(Join 2) | 1c!width 2pt(Join 3) | 1c|(Join 1) | 1c|(Join 2) | 1c|(Join 3) | ||||||
no black-out | 716 | 1141 | 896 | 7898 | 5560 | 10410 | ||||||
120% | 716 | 1150 | 896 | 7898 | 5562 | 10410 | ||||||
110% | 716 | 1133 | 896 | 7898 | 5384 | 10410 | ||||||
100% | 712 | 1133 | 898 | 7892 | 5385 | 10411 | ||||||
90% | 723 | 1140 | 895 | 7889 | 5564 | 10412 | ||||||
80% | 737 | 1132 | 901 | 7917 | 5384 | 10414 | ||||||
70% | 754 | 1132 | 904 | 7926 | 5376 | 10413 | ||||||
60% | 750 | 1142 | 910 | 7904 | 5560 | 10416 | ||||||
50% | 752 | 1092 | 911 | 7908 | 5571 | 10420 | ||||||
40% | 764 | 1087 | 911 | 7909 | 5578 | 10443 | ||||||
30% | 781 | 1091 | 937 | 7936 | 5594 | 10475 |