Re: [GSoC] Push-based query executor discussion

From: Arseny Sher <sher-ars(at)ispras(dot)ru>
To: obartunov(at)gmail(dot)com
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Arseny Sher <sher-ars(at)yandex(dot)ru>, pgsql-hackers(at)postgresql(dot)org, pgsql-students(at)postgresql(dot)org
Subject: Re: [GSoC] Push-based query executor discussion
Date: 2017-03-25 12:47:44
Message-ID: 87shm1zfnz.fsf@ispras.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-students

I have cleaned up the code a bit and added the separation I mentioned in
a previous mail -- now we there are even three functions instead of old
ExecProcNode: one for starting leaf nodes, one for passing tuples and
one for signaling that the node has finished its job. It is all
described in execProcnode.c.

I also rewrote HashJoin without using the explicit state machine. It
seems slightly cleaner to me now...

Here are updated benchmarks:
+-----+-----------+---------+----------+
|query|reversed, s|master, s|speedup, %|
+-----+-----------+---------+----------+
|q01 |108.21 |117.88 |8.94 |
+-----+-----------+---------+----------+
|q03 |55.48 |58.805 |5.99 |
+-----+-----------+---------+----------+
|q04 |78.405 |81.86 |4.41 |
+-----+-----------+---------+----------+
|q05 |49.91 |51.18 |2.54 |
+-----+-----------+---------+----------+
|q10 |49.215 |52.61 |6.9 |
+-----+-----------+---------+----------+
|q12 |63.24 |68.505 |8.33 |
+-----+-----------+---------+----------+
|q14 |33.42 |35.31 |5.66 |
+-----+-----------+---------+----------+

As before, 24 runs were performed, median taken, scale is 40GB,
postgresql.conf is the same.

Patches are rebased, now they apply on 4dd3abe99f50.

--
Arseny Sher

Attachment Content-Type Size
0001-parent-param-added-to-ExecInitNode-parent-field-adde.patch text/x-diff 20.5 KB
0002-Nodes-interface-functions-stubbed.patch text/x-diff 23.3 KB
0003-Base-for-reversed-executor.patch text/x-diff 21.9 KB
0004-Reversed-SeqScan-implementation.patch text/x-diff 18.9 KB
0005-Reversed-HashJoin-implementation.patch text/x-diff 40.0 KB
0006-Reversed-Limit-implementation.patch text/x-diff 11.7 KB
0007-Reversed-hashed-Agg-implementation.patch text/x-diff 42.9 KB
0008-Reversed-in-memory-Sort-implementation.patch text/x-diff 10.4 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Craig Ringer 2017-03-25 12:50:47 Re: PATCH: Batch/pipelining support for libpq
Previous Message Surafel Temesgen 2017-03-25 12:41:07 Re: New CORRESPONDING clause design

Browse pgsql-students by date

  From Date Subject
Next Message Dong Yuan 2017-03-26 15:08:13 [GSoC] Explicitly support predicate locks in index access methods besides btree
Previous Message Charles Cui 2017-03-23 16:13:35 Fwd: GSOC 2017 project ideas