# Re: [HACKERS] Parallel tuplesort (for parallel B-Tree index creation)

```On Wed, Feb 1, 2017 at 8:46 PM, Peter Geoghegan <p...@bowt.ie> wrote:
> On Tue, Jan 31, 2017 at 11:23 PM, Thomas Munro
> <thomas.mu...@enterprisedb.com> wrote:
>> So I'm in favour of this patch, which is relatively simple and give us
>> faster index builds soon.  Eventually we might also be able to have
>> approach 1.  From what I gather, it's entirely possible that we might
>> still need 2 to fall back on in some cases.
>
> Right. And it can form the basis of an implementation of 1, which in
> any case seems to be much more compelling for parallel query, when a
> great deal more can be pushed down, and we are not particularly likely
> to be I/O bound (usually not much writing to the heap, or WAL
> logging).```
```
I ran some tests today.  First I created test tables representing the
permutations of these choices:

Table structure:

int = Integer key only
intwide = Integer key + wide row
text = Text key only (using dictionary words)
textwide = Text key + wide row

Uniqueness:

u = each value unique
d = 10 duplicates of each value

Heap physical order:

rand = Random
asc = Ascending order (already sorted)
desc = Descending order (sorted backwards)

I used 10 million rows for this test run, so that gave me 24 tables of
the following sizes as reported in "\d+":

int tables = 346MB each
intwide tables = 1817MB each
text tables = 441MB each
textwide tables = 1953MB each

It'd be interesting to test larger tables of course but I had a lot of
permutations to get through.

For each of those tables I ran tests corresponding to the permutations
of these three variables:

Index type:

uniq = CREATE UNIQUE INDEX ("u" tables only, ie no duplicates)
nonu = CREATE INDEX ("u" and "d" tables)

Maintenance memory: 1M, 64MB, 256MB, 512MB

Workers: from 0 up to 8

Environment:  EDB test machine "cthulhu", Intel(R) Xeon(R) CPU E7-
8830  @ 2.13GHz, 8 socket, 8 cores (16 threads) per socket, CentOS
7.2, Linux kernel 3.10.0-229.7.2.el7.x86_64, 512GB RAM, pgdata on SSD.
Database initialised with en_US.utf-8 collation, all defaults except
max_wal_size increased to 4GB (otherwise warnings about too frequent
checkpoints) and max_parallel_workers_maintenance = 8.  Testing done
with warm OS cache.

I applied your v2 patch on top of
7ac4a389a7dbddaa8b19deb228f0a988e79c5795^ to avoid a conflict.  It
still had a couple of harmless conflicts that I was able to deal with
(not code, just some header stuff moving around).

See full results from all permutations attached, but I wanted to
highlight the measurements from 'textwide', 'u', 'nonu' which show
interesting 'asc' numbers (data already sorted).  The 'mem' column is
maintenance_work_mem in megabytes.  The 'w = 0' column shows the time
in seconds for parallel_workers = 0.  The other 'w = N' columns show
times with higher parallel_workers settings, represented as speed-up
relative to the 'w = 0' time.

1. 'asc' = pre-sorted data (w = 0 shows time in seconds, other columns
show speed-up relative to that time):

mem | w = 0  | w = 1 | w = 2 | w = 3 | w = 4 | w = 5 | w = 6 | w = 7 | w = 8
-----+--------+-------+-------+-------+-------+-------+-------+-------+-------
1 | 119.97 | 4.61x | 4.83x | 5.32x | 5.61x | 5.88x | 6.10x | 6.18x | 6.09x
64 |  19.42 | 1.18x | 1.10x | 1.23x | 1.23x | 1.16x | 1.19x | 1.20x | 1.21x
256 |  18.35 | 1.02x | 0.92x | 0.98x | 1.02x | 1.06x | 1.07x | 1.08x | 1.10x
512 |  17.75 | 1.01x | 0.89x | 0.95x | 0.99x | 1.02x | 1.05x | 1.06x | 1.07x

2. 'rand' = randomised data:

mem | w = 0  | w = 1 | w = 2 | w = 3 | w = 4 | w = 5 | w = 6 | w = 7 | w = 8
-----+--------+-------+-------+-------+-------+-------+-------+-------+-------
1 | 130.25 | 1.82x | 2.19x | 2.52x | 2.58x | 2.72x | 2.72x | 2.83x | 2.89x
64 | 117.36 | 1.80x | 2.20x | 2.43x | 2.47x | 2.55x | 2.51x | 2.59x | 2.69x
256 | 124.68 | 1.87x | 2.20x | 2.49x | 2.52x | 2.64x | 2.70x | 2.72x | 2.75x
512 | 115.77 | 1.51x | 1.72x | 2.14x | 2.08x | 2.19x | 2.31x | 2.44x | 2.48x

3. 'desc' = reverse-sorted data:

mem | w = 0  | w = 1 | w = 2 | w = 3 | w = 4 | w = 5 | w = 6 | w = 7 | w = 8
-----+--------+-------+-------+-------+-------+-------+-------+-------+-------
1 | 115.19 | 1.88x | 2.39x | 2.78x | 3.50x | 3.62x | 4.20x | 4.19x | 4.39x
64 | 112.17 | 1.85x | 2.25x | 2.99x | 3.63x | 3.65x | 4.01x | 4.31x | 4.62x
256 | 119.55 | 1.76x | 2.21x | 2.85x | 3.43x | 3.37x | 3.77x | 4.24x | 4.28x
512 | 119.50 | 1.85x | 2.19x | 2.87x | 3.26x | 3.28x | 3.74x | 4.24x | 3.93x

The 'asc' effects are much less pronounced when the key is an int.
Here is the equivalent data for 'intwide', 'u', 'nonu':

1.  'asc'

mem | w = 0 | w = 1 | w = 2 | w = 3 | w = 4 | w = 5 | w = 6 | w = 7 | w = 8
-----+-------+-------+-------+-------+-------+-------+-------+-------+-------
1 | 12.19 | 1.55x | 1.93x | 2.21x | 2.44x | 2.64x | 2.76x | 2.91x | 2.83x
64 |  7.35 | 1.29x | 1.53x | 1.69x | 1.86x | 1.98x | 2.04x | 2.07x | 2.09x
256 |  7.34 | 1.26x | 1.47x | 1.64x | 1.79x | 1.92x | 1.96x | 1.98x | 2.02x
512 |  7.24 | 1.24x | 1.46x | 1.65x | 1.80x | 1.91x | 1.97x | 2.00x | 1.92x

2. 'rand'

mem | w = 0 | w = 1 | w = 2 | w = 3 | w = 4 | w = 5 | w = 6 | w = 7 | w = 8
-----+-------+-------+-------+-------+-------+-------+-------+-------+-------
1 | 15.16 | 1.56x | 2.01x | 2.32x | 2.57x | 2.73x | 2.87x | 2.95x | 2.91x
64 | 12.97 | 1.55x | 1.97x | 2.25x | 2.44x | 2.58x | 2.70x | 2.74x | 2.71x
256 | 13.14 | 1.47x | 1.86x | 2.12x | 2.31x | 2.50x | 2.62x | 2.58x | 2.69x
512 | 13.61 | 1.48x | 1.91x | 2.22x | 2.37x | 2.55x | 2.65x | 2.73x | 2.73x

3. 'desc'

mem | w = 0 | w = 1 | w = 2 | w = 3 | w = 4 | w = 5 | w = 6 | w = 7 | w = 8
-----+-------+-------+-------+-------+-------+-------+-------+-------+-------
1 | 13.45 | 1.51x | 1.94x | 2.31x | 2.56x | 2.75x | 2.95x | 3.05x | 3.00x
64 | 10.27 | 1.42x | 1.82x | 2.05x | 2.30x | 2.46x | 2.59x | 2.64x | 2.65x
256 | 10.52 | 1.39x | 1.70x | 2.02x | 2.24x | 2.34x | 2.39x | 2.48x | 2.56x
512 | 10.62 | 1.43x | 1.82x | 2.06x | 2.32x | 2.51x | 2.61x | 2.68x | 2.69x

Full result summary and scripts used for testing attached.

--
Thomas Munro
http://www.enterprisedb.com
```
```   tab    | dup | ord  | uniq | mem | w = 0  | w = 1 | w = 2 | w = 3 | w = 4 |
w = 5 | w = 6 | w = 7 | w = 8
----------+-----+------+------+-----+--------+-------+-------+-------+-------+-------+-------+-------+-------
int      | d   | asc  | nonu |   1 |  11.77 | 1.60x | 2.02x | 2.31x | 2.54x |
2.65x | 2.69x | 2.90x | 2.88x
int      | d   | asc  | nonu |  64 |   6.27 | 1.23x | 1.45x | 1.59x | 1.65x |
1.80x | 1.89x | 1.89x | 1.88x
int      | d   | asc  | nonu | 256 |   6.39 | 1.20x | 1.42x | 1.57x | 1.65x |
1.80x | 1.86x | 1.88x | 1.90x
int      | d   | asc  | nonu | 512 |   6.37 | 1.18x | 1.37x | 1.59x | 1.73x |
1.80x | 1.85x | 1.89x | 1.90x
int      | d   | desc | nonu |   1 |  12.52 | 1.51x | 1.95x | 2.28x | 2.56x |
2.74x | 2.88x | 3.00x | 2.92x
int      | d   | desc | nonu |  64 |   9.10 | 1.40x | 1.76x | 2.03x | 2.21x |
2.31x | 2.49x | 2.53x | 2.56x
int      | d   | desc | nonu | 256 |   9.35 | 1.37x | 1.71x | 1.95x | 2.13x |
2.28x | 2.42x | 2.48x | 2.53x
int      | d   | desc | nonu | 512 |   9.56 | 1.40x | 1.73x | 1.96x | 2.18x |
2.35x | 2.49x | 2.52x | 2.56x
int      | d   | rand | nonu |   1 |  14.67 | 1.53x | 1.97x | 2.28x | 2.50x |
2.72x | 2.72x | 2.82x | 2.77x
int      | d   | rand | nonu |  64 |  12.51 | 1.57x | 1.99x | 2.23x | 2.43x |
2.55x | 2.56x | 2.59x | 2.59x
int      | d   | rand | nonu | 256 |  13.43 | 1.48x | 1.87x | 2.14x | 2.32x |
2.48x | 2.58x | 2.66x | 2.66x
int      | d   | rand | nonu | 512 |  14.63 | 1.53x | 2.05x | 2.30x | 2.51x |
2.64x | 2.75x | 2.78x | 2.69x
int      | u   | asc  | nonu |   1 |  11.14 | 1.52x | 1.88x | 2.22x | 2.42x |
2.58x | 2.69x | 2.80x | 2.74x
int      | u   | asc  | nonu |  64 |   6.14 | 1.23x | 1.44x | 1.58x | 1.73x |
1.79x | 1.88x | 1.90x | 1.88x
int      | u   | asc  | nonu | 256 |   6.25 | 1.19x | 1.39x | 1.56x | 1.66x |
1.76x | 1.83x | 1.88x | 1.89x
int      | u   | asc  | nonu | 512 |   6.25 | 1.21x | 1.42x | 1.56x | 1.70x |
1.74x | 1.84x | 1.89x | 1.85x
int      | u   | asc  | uniq |   1 |  11.06 | 1.49x | 1.88x | 2.18x | 2.35x |
2.49x | 2.61x | 2.80x | 2.70x
int      | u   | asc  | uniq |  64 |   6.12 | 1.19x | 1.42x | 1.60x | 1.71x |
1.75x | 1.86x | 1.85x | 1.87x
int      | u   | asc  | uniq | 256 |   6.28 | 1.17x | 1.41x | 1.56x | 1.70x |
1.76x | 1.82x | 1.85x | 1.88x
int      | u   | asc  | uniq | 512 |   6.25 | 1.19x | 1.40x | 1.48x | 1.63x |
1.71x | 1.80x | 1.86x | 1.87x
int      | u   | desc | nonu |   1 |  12.58 | 1.51x | 1.94x | 2.31x | 2.55x |
2.72x | 2.84x | 3.00x | 2.91x
int      | u   | desc | nonu |  64 |   9.14 | 1.38x | 1.77x | 2.01x | 2.22x |
2.36x | 2.47x | 2.52x | 2.55x
int      | u   | desc | nonu | 256 |   9.47 | 1.37x | 1.75x | 1.97x | 2.18x |
2.38x | 2.48x | 2.55x | 2.57x
int      | u   | desc | nonu | 512 |   9.59 | 1.40x | 1.76x | 2.01x | 2.22x |
2.42x | 2.51x | 2.55x | 2.60x
int      | u   | desc | uniq |   1 |  12.65 | 1.54x | 1.95x | 2.30x | 2.54x |
2.66x | 2.82x | 2.77x | 2.94x
int      | u   | desc | uniq |  64 |   9.13 | 1.40x | 1.78x | 2.03x | 2.25x |
2.36x | 2.42x | 2.53x | 2.48x
int      | u   | desc | uniq | 256 |   9.41 | 1.38x | 1.74x | 1.98x | 2.20x |
2.33x | 2.43x | 2.50x | 2.52x
int      | u   | desc | uniq | 512 |   9.58 | 1.39x | 1.74x | 1.94x | 2.17x |
2.36x | 2.43x | 2.42x | 2.60x
int      | u   | rand | nonu |   1 |  14.18 | 1.55x | 1.99x | 2.20x | 2.51x |
2.69x | 2.82x | 2.87x | 2.55x
int      | u   | rand | nonu |  64 |  11.65 | 1.53x | 1.91x | 2.22x | 2.41x |
2.52x | 2.58x | 2.60x | 2.56x
int      | u   | rand | nonu | 256 |  11.93 | 1.46x | 1.80x | 2.06x | 2.23x |
2.38x | 2.45x | 2.52x | 2.54x
int      | u   | rand | nonu | 512 |  12.56 | 1.50x | 1.91x | 2.18x | 2.31x |
2.46x | 2.56x | 2.60x | 2.39x
int      | u   | rand | uniq |   1 |  14.10 | 1.53x | 1.96x | 2.30x | 2.50x |
2.64x | 2.79x | 2.87x | 2.80x
int      | u   | rand | uniq |  64 |  11.62 | 1.51x | 1.95x | 2.23x | 2.38x |
2.50x | 2.44x | 2.60x | 2.59x
int      | u   | rand | uniq | 256 |  11.93 | 1.45x | 1.79x | 2.07x | 2.26x |
2.37x | 2.44x | 2.50x | 2.51x
int      | u   | rand | uniq | 512 |  12.61 | 1.49x | 1.92x | 2.16x | 2.30x |
2.42x | 2.55x | 2.43x | 2.62x
intwide  | d   | asc  | nonu |   1 |  12.91 | 1.60x | 2.09x | 2.36x | 2.53x |
2.79x | 2.90x | 3.03x | 2.97x
intwide  | d   | asc  | nonu |  64 |   7.51 | 1.29x | 1.54x | 1.73x | 1.89x |
2.00x | 2.07x | 2.10x | 2.09x
intwide  | d   | asc  | nonu | 256 |   7.43 | 1.24x | 1.48x | 1.67x | 1.80x |
1.91x | 1.97x | 1.96x | 2.09x
intwide  | d   | asc  | nonu | 512 |   7.32 | 1.25x | 1.49x | 1.69x | 1.81x |
1.88x | 1.98x | 2.01x | 2.02x
intwide  | d   | desc | nonu |   1 |  13.31 | 1.49x | 1.94x | 2.25x | 2.42x |
2.74x | 2.89x | 2.99x | 3.00x
intwide  | d   | desc | nonu |  64 |  10.62 | 1.48x | 1.82x | 2.12x | 2.34x |
2.53x | 2.67x | 2.74x | 2.65x
intwide  | d   | desc | nonu | 256 |  10.49 | 1.38x | 1.74x | 2.01x | 2.20x |
2.42x | 2.50x | 2.60x | 2.60x
intwide  | d   | desc | nonu | 512 |  10.58 | 1.42x | 1.76x | 2.06x | 2.24x |
2.41x | 2.41x | 2.55x | 2.59x
intwide  | d   | rand | nonu |   1 |  16.05 | 1.55x | 2.03x | 2.38x | 2.58x |
2.76x | 2.85x | 2.98x | 2.85x
intwide  | d   | rand | nonu |  64 |  13.72 | 1.57x | 1.99x | 2.33x | 2.48x |
2.59x | 2.70x | 2.72x | 2.72x
intwide  | d   | rand | nonu | 256 |  14.54 | 1.51x | 1.89x | 2.22x | 2.42x |
2.57x | 2.69x | 2.79x | 2.79x
intwide  | d   | rand | nonu | 512 |  15.67 | 1.51x | 2.01x | 2.37x | 2.61x |
2.78x | 2.87x | 2.90x | 2.89x
intwide  | u   | asc  | nonu |   1 |  12.19 | 1.55x | 1.93x | 2.21x | 2.44x |
2.64x | 2.76x | 2.91x | 2.83x
intwide  | u   | asc  | nonu |  64 |   7.35 | 1.29x | 1.53x | 1.69x | 1.86x |
1.98x | 2.04x | 2.07x | 2.09x
intwide  | u   | asc  | nonu | 256 |   7.34 | 1.26x | 1.47x | 1.64x | 1.79x |
1.92x | 1.96x | 1.98x | 2.02x
intwide  | u   | asc  | nonu | 512 |   7.24 | 1.24x | 1.46x | 1.65x | 1.80x |
1.91x | 1.97x | 2.00x | 1.92x
intwide  | u   | asc  | uniq |   1 |  12.22 | 1.56x | 1.92x | 2.20x | 2.47x |
2.56x | 2.78x | 2.88x | 2.84x
intwide  | u   | asc  | uniq |  64 |   7.33 | 1.27x | 1.50x | 1.70x | 1.84x |
1.96x | 2.06x | 2.01x | 2.05x
intwide  | u   | asc  | uniq | 256 |   7.34 | 1.25x | 1.48x | 1.64x | 1.82x |
1.90x | 1.96x | 2.00x | 2.02x
intwide  | u   | asc  | uniq | 512 |   7.22 | 1.24x | 1.45x | 1.61x | 1.75x |
1.77x | 1.95x | 1.97x | 1.90x
intwide  | u   | desc | nonu |   1 |  13.45 | 1.51x | 1.94x | 2.31x | 2.56x |
2.75x | 2.95x | 3.05x | 3.00x
intwide  | u   | desc | nonu |  64 |  10.27 | 1.42x | 1.82x | 2.05x | 2.30x |
2.46x | 2.59x | 2.64x | 2.65x
intwide  | u   | desc | nonu | 256 |  10.52 | 1.39x | 1.70x | 2.02x | 2.24x |
2.34x | 2.39x | 2.48x | 2.56x
intwide  | u   | desc | nonu | 512 |  10.62 | 1.43x | 1.82x | 2.06x | 2.32x |
2.51x | 2.61x | 2.68x | 2.69x
intwide  | u   | desc | uniq |   1 |  13.74 | 1.56x | 1.99x | 2.35x | 2.64x |
2.78x | 2.98x | 3.10x | 3.01x
intwide  | u   | desc | uniq |  64 |  10.28 | 1.41x | 1.81x | 2.07x | 2.29x |
2.47x | 2.57x | 2.53x | 2.66x
intwide  | u   | desc | uniq | 256 |  10.49 | 1.38x | 1.78x | 2.02x | 2.29x |
2.30x | 2.41x | 2.47x | 2.60x
intwide  | u   | desc | uniq | 512 |  10.61 | 1.41x | 1.80x | 2.02x | 2.25x |
2.42x | 2.51x | 2.69x | 2.51x
intwide  | u   | rand | nonu |   1 |  15.16 | 1.56x | 2.01x | 2.32x | 2.57x |
2.73x | 2.87x | 2.95x | 2.91x
intwide  | u   | rand | nonu |  64 |  12.97 | 1.55x | 1.97x | 2.25x | 2.44x |
2.58x | 2.70x | 2.74x | 2.71x
intwide  | u   | rand | nonu | 256 |  13.14 | 1.47x | 1.86x | 2.12x | 2.31x |
2.50x | 2.62x | 2.58x | 2.69x
intwide  | u   | rand | nonu | 512 |  13.61 | 1.48x | 1.91x | 2.22x | 2.37x |
2.55x | 2.65x | 2.73x | 2.73x
intwide  | u   | rand | uniq |   1 |  15.22 | 1.56x | 2.02x | 2.33x | 2.56x |
2.71x | 2.87x | 2.96x | 2.92x
intwide  | u   | rand | uniq |  64 |  12.96 | 1.53x | 1.96x | 2.27x | 2.44x |
2.59x | 2.70x | 2.71x | 2.73x
intwide  | u   | rand | uniq | 256 |  13.14 | 1.47x | 1.83x | 2.11x | 2.34x |
2.49x | 2.57x | 2.65x | 2.68x
intwide  | u   | rand | uniq | 512 |  13.62 | 1.45x | 1.89x | 2.20x | 2.36x |
2.50x | 2.59x | 2.74x | 2.72x
text     | d   | asc  | nonu |   1 |  96.21 | 5.28x | 4.53x | 5.04x | 5.35x |
5.59x | 5.78x | 5.89x | 5.87x
text     | d   | asc  | nonu |  64 |  10.85 | 1.27x | 0.83x | 0.80x | 0.84x |
0.84x | 0.84x | 0.86x | 0.85x
text     | d   | asc  | nonu | 256 |  10.00 | 1.21x | 0.70x | 0.74x | 0.76x |
0.77x | 0.77x | 0.78x | 0.79x
text     | d   | asc  | nonu | 512 |   9.27 | 1.20x | 0.66x | 0.68x | 0.70x |
0.71x | 0.72x | 0.74x | 0.73x
text     | d   | desc | nonu |   1 |  43.17 | 1.73x | 1.83x | 2.05x | 2.20x |
2.37x | 2.45x | 2.51x | 2.44x
text     | d   | desc | nonu |  64 |  28.42 | 1.63x | 1.55x | 1.73x | 1.77x |
1.90x | 1.87x | 2.00x | 1.96x
text     | d   | desc | nonu | 256 |  27.85 | 1.57x | 1.34x | 1.50x | 1.63x |
1.69x | 1.76x | 1.81x | 1.84x
text     | d   | desc | nonu | 512 |  28.02 | 1.61x | 1.33x | 1.49x | 1.62x |
1.70x | 1.77x | 1.82x | 1.83x
text     | d   | rand | nonu |   1 |  99.31 | 1.86x | 2.53x | 3.10x | 3.41x |
3.72x | 3.89x | 3.92x | 3.91x
text     | d   | rand | nonu |  64 |  86.45 | 1.83x | 2.49x | 3.07x | 3.26x |
3.61x | 3.68x | 3.69x | 3.66x
text     | d   | rand | nonu | 256 |  86.56 | 1.69x | 2.32x | 2.87x | 3.13x |
3.45x | 3.50x | 3.61x | 3.78x
text     | d   | rand | nonu | 512 |  88.93 | 1.75x | 2.07x | 2.37x | 2.51x |
3.06x | 3.24x | 3.26x | 3.41x
text     | u   | asc  | nonu |   1 | 117.60 | 4.80x | 5.05x | 5.54x | 6.08x |
6.39x | 6.58x | 6.81x | 6.71x
text     | u   | asc  | nonu |  64 |  18.21 | 1.23x | 1.27x | 1.29x | 1.30x |
1.31x | 1.30x | 1.35x | 1.31x
text     | u   | asc  | nonu | 256 |  17.01 | 1.08x | 0.99x | 1.05x | 1.10x |
1.14x | 1.17x | 1.19x | 1.20x
text     | u   | asc  | nonu | 512 |  16.45 | 1.05x | 0.95x | 1.02x | 1.08x |
1.10x | 1.15x | 1.15x | 1.15x
text     | u   | asc  | uniq |   1 | 116.81 | 4.69x | 5.13x | 5.66x | 5.99x |
6.35x | 6.57x | 6.70x | 6.60x
text     | u   | asc  | uniq |  64 |  18.61 | 1.31x | 1.19x | 1.25x | 1.30x |
1.31x | 1.32x | 1.37x | 1.34x
text     | u   | asc  | uniq | 256 |  17.03 | 1.08x | 0.97x | 1.06x | 1.10x |
1.13x | 1.15x | 1.20x | 1.20x
text     | u   | asc  | uniq | 512 |  16.49 | 1.05x | 0.94x | 1.02x | 1.08x |
1.11x | 1.14x | 1.15x | 1.15x
text     | u   | desc | nonu |   1 | 114.69 | 1.93x | 2.46x | 2.85x | 3.61x |
3.72x | 4.38x | 4.38x | 4.56x
text     | u   | desc | nonu |  64 | 111.10 | 1.86x | 2.38x | 3.09x | 3.76x |
3.85x | 4.25x | 4.62x | 4.76x
text     | u   | desc | nonu | 256 | 117.00 | 1.86x | 2.20x | 2.94x | 3.43x |
3.59x | 3.95x | 4.45x | 4.42x
text     | u   | desc | nonu | 512 | 118.20 | 1.71x | 2.12x | 2.74x | 3.47x |
3.60x | 3.77x | 3.77x | 4.18x
text     | u   | desc | uniq |   1 | 115.42 | 1.95x | 2.49x | 2.90x | 3.63x |
3.73x | 4.35x | 4.40x | 4.59x
text     | u   | desc | uniq |  64 | 112.18 | 1.84x | 2.35x | 3.07x | 3.67x |
3.81x | 4.26x | 4.69x | 4.88x
text     | u   | desc | uniq | 256 | 118.78 | 1.80x | 2.23x | 2.93x | 3.51x |
3.54x | 4.01x | 4.48x | 4.36x
text     | u   | desc | uniq | 512 | 117.22 | 1.80x | 2.10x | 2.59x | 3.25x |
3.58x | 3.90x | 3.80x | 4.14x
text     | u   | rand | nonu |   1 | 127.67 | 1.83x | 2.21x | 2.51x | 2.53x |
2.69x | 2.71x | 2.70x | 2.76x
text     | u   | rand | nonu |  64 | 113.45 | 1.81x | 2.19x | 2.37x | 2.39x |
2.51x | 2.54x | 2.58x | 2.53x
text     | u   | rand | nonu | 256 | 114.85 | 1.71x | 2.07x | 2.30x | 2.36x |
2.46x | 2.51x | 2.62x | 2.60x
text     | u   | rand | nonu | 512 | 117.45 | 1.54x | 1.68x | 2.34x | 2.15x |
2.34x | 2.29x | 2.51x | 2.55x
text     | u   | rand | uniq |   1 | 128.35 | 1.86x | 2.23x | 2.54x | 2.56x |
2.69x | 2.73x | 2.84x | 2.86x
text     | u   | rand | uniq |  64 | 114.68 | 1.83x | 2.21x | 2.40x | 2.42x |
2.55x | 2.57x | 2.60x | 2.63x
text     | u   | rand | uniq | 256 | 115.61 | 1.67x | 2.08x | 2.31x | 2.36x |
2.51x | 2.53x | 2.66x | 2.60x
text     | u   | rand | uniq | 512 | 123.02 | 1.61x | 1.76x | 2.07x | 2.28x |
2.37x | 2.42x | 2.71x | 2.72x
textwide | d   | asc  | nonu |   1 | 119.69 | 4.66x | 4.89x | 5.41x | 5.72x |
5.83x | 5.97x | 6.16x | 6.03x
textwide | d   | asc  | nonu |  64 |  19.82 | 1.22x | 1.08x | 1.13x | 1.20x |
1.20x | 1.20x | 1.22x | 1.22x
textwide | d   | asc  | nonu | 256 |  19.36 | 1.08x | 0.96x | 1.02x | 1.06x |
1.11x | 1.13x | 1.15x | 1.14x
textwide | d   | asc  | nonu | 512 |  18.66 | 1.05x | 0.93x | 0.99x | 1.04x |
1.08x | 1.10x | 1.11x | 1.11x
textwide | d   | desc | nonu |   1 | 115.26 | 1.87x | 2.46x | 2.84x | 3.55x |
3.65x | 4.18x | 4.25x | 4.42x
textwide | d   | desc | nonu |  64 | 113.54 | 1.85x | 2.37x | 3.03x | 3.70x |
3.61x | 4.07x | 4.48x | 4.61x
textwide | d   | desc | nonu | 256 | 119.54 | 1.78x | 2.26x | 2.88x | 3.32x |
3.46x | 3.91x | 4.26x | 4.17x
textwide | d   | desc | nonu | 512 | 119.40 | 1.50x | 2.11x | 2.66x | 3.19x |
3.57x | 3.89x | 3.65x | 3.90x
textwide | d   | rand | nonu |   1 | 128.80 | 1.83x | 2.21x | 2.50x | 2.51x |
2.69x | 2.71x | 2.80x | 2.75x
textwide | d   | rand | nonu |  64 | 115.76 | 1.80x | 2.18x | 2.39x | 2.43x |
2.54x | 2.54x | 2.61x | 2.60x
textwide | d   | rand | nonu | 256 | 123.02 | 1.75x | 2.13x | 2.41x | 2.51x |
2.61x | 2.69x | 2.81x | 2.74x
textwide | d   | rand | nonu | 512 | 125.02 | 1.57x | 1.98x | 2.48x | 2.40x |
2.44x | 2.62x | 2.60x | 2.68x
textwide | u   | asc  | nonu |   1 | 119.97 | 4.61x | 4.83x | 5.32x | 5.61x |
5.88x | 6.10x | 6.18x | 6.09x
textwide | u   | asc  | nonu |  64 |  19.42 | 1.18x | 1.10x | 1.23x | 1.23x |
1.16x | 1.19x | 1.20x | 1.21x
textwide | u   | asc  | nonu | 256 |  18.35 | 1.02x | 0.92x | 0.98x | 1.02x |
1.06x | 1.07x | 1.08x | 1.10x
textwide | u   | asc  | nonu | 512 |  17.75 | 1.01x | 0.89x | 0.95x | 0.99x |
1.02x | 1.05x | 1.06x | 1.07x
textwide | u   | asc  | uniq |   1 | 117.90 | 4.58x | 4.75x | 5.27x | 5.54x |
5.67x | 5.94x | 5.90x | 5.92x
textwide | u   | asc  | uniq |  64 |  19.61 | 1.13x | 1.23x | 1.18x | 1.19x |
1.18x | 1.20x | 1.21x | 1.20x
textwide | u   | asc  | uniq | 256 |  18.20 | 1.02x | 0.92x | 0.97x | 1.03x |
1.04x | 1.07x | 1.08x | 1.09x
textwide | u   | asc  | uniq | 512 |  18.03 | 1.01x | 0.89x | 0.96x | 1.01x |
1.04x | 1.06x | 1.07x | 1.08x
textwide | u   | desc | nonu |   1 | 115.19 | 1.88x | 2.39x | 2.78x | 3.50x |
3.62x | 4.20x | 4.19x | 4.39x
textwide | u   | desc | nonu |  64 | 112.17 | 1.85x | 2.25x | 2.99x | 3.63x |
3.65x | 4.01x | 4.31x | 4.62x
textwide | u   | desc | nonu | 256 | 119.55 | 1.76x | 2.21x | 2.85x | 3.43x |
3.37x | 3.77x | 4.24x | 4.28x
textwide | u   | desc | nonu | 512 | 119.50 | 1.85x | 2.19x | 2.87x | 3.26x |
3.28x | 3.74x | 4.24x | 3.93x
textwide | u   | desc | uniq |   1 | 115.42 | 1.88x | 2.45x | 2.85x | 3.56x |
3.62x | 4.16x | 4.16x | 4.41x
textwide | u   | desc | uniq |  64 | 113.67 | 1.83x | 2.26x | 2.95x | 3.54x |
3.70x | 4.09x | 4.41x | 4.75x
textwide | u   | desc | uniq | 256 | 120.86 | 1.80x | 2.18x | 2.80x | 3.36x |
3.43x | 3.78x | 4.18x | 4.42x
textwide | u   | desc | uniq | 512 | 118.58 | 1.82x | 2.28x | 2.86x | 3.23x |
3.51x | 3.86x | 4.16x | 3.92x
textwide | u   | rand | nonu |   1 | 130.25 | 1.82x | 2.19x | 2.52x | 2.58x |
2.72x | 2.72x | 2.83x | 2.89x
textwide | u   | rand | nonu |  64 | 117.36 | 1.80x | 2.20x | 2.43x | 2.47x |
2.55x | 2.51x | 2.59x | 2.69x
textwide | u   | rand | nonu | 256 | 124.68 | 1.87x | 2.20x | 2.49x | 2.52x |
2.64x | 2.70x | 2.72x | 2.75x
textwide | u   | rand | nonu | 512 | 115.77 | 1.51x | 1.72x | 2.14x | 2.08x |
2.19x | 2.31x | 2.44x | 2.48x
textwide | u   | rand | uniq |   1 | 129.80 | 1.88x | 2.20x | 2.54x | 2.54x |
2.72x | 2.74x | 2.73x | 2.87x
textwide | u   | rand | uniq |  64 | 117.31 | 1.82x | 2.20x | 2.41x | 2.45x |
2.54x | 2.61x | 2.67x | 2.67x
textwide | u   | rand | uniq | 256 | 118.55 | 1.74x | 2.07x | 2.38x | 2.38x |
2.51x | 2.59x | 2.59x | 2.61x
textwide | u   | rand | uniq | 512 | 120.90 | 1.58x | 1.80x | 2.03x | 2.23x |
2.32x | 2.41x | 2.60x | 2.50x
(144 rows)

```

make_test_data.sh
Description: Bourne shell script

run_tests.sh
Description: Bourne shell script

```--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
```