Re: Parallel Index Scans
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: Anastasia Lubennikova <a.lubennikova@postgrespro.ru>, Anastasia Lubennikova <lubennikovaav@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>, Rahila Syed <rahilasyed.90@gmail.com>
Date: 2017-02-14T20:34:19Z
Lists: pgsql-hackers
Attachments
- parallel_index_scan_v9.patch (application/octet-stream) patch v9
On Tue, Feb 14, 2017 at 12:48 PM, Robert Haas <robertmhaas@gmail.com> wrote: > That sounds way better. Here's an updated patch. Please review my changes, which include: * Various comment updates. * _bt_parallel_seize now unconditionally sets *pageno to P_NONE at the beginning, instead of doing it conditionally at the end. This seems cleaner to me. * I removed various BTScanPosInvalidate calls from _bt_first in places where they followed calls to _bt_parallel_done, because I can't see how the scan position could be valid at that point; note that _bt_first asserts that it is invalid on entry. * I added a _bt_parallel_done() call to _bt_first where it apparently returned without releasing the scan; search for SK_ROW_MEMBER. Maybe there's something I'm missing that makes this unnecessary, but if so there should probably be a comment here. * I wasn't happy with the strange calling convention where _bt_readnextpage usually gets a valid block number but not for non-parallel backward scans. I had a stab at fixing that so that the block number is always valid, but I'm not entirely sure I've got the logic right. Please see what you think. * I repositioned the function prototypes you added to nbtree.h to separate the public and non-public interfaces. I can't easily test this because your second patch doesn't apply, so I'd appreciate it if you could have a stab at checking whether I've broken anything in this revision. Also, it would be good if you could rebase the second patch. I think this is pretty close to committable at this point. Whether or not I broke anything in this revision, I don't think there's too much left to be done here. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
Replace min_parallel_relation_size with two new GUCs.
- 51ee6f3160d2 10.0 landed
-
Factor out logic for computing number of parallel workers.
- 716c7d4b242f 10.0 cited
-
Support condition variables.
- e8ac886c2477 10.0 cited
-
Allow parallel custom and foreign scans.
- 69d34408e5e7 9.6.0 cited
-
Add a C API for parallel heap scans.
- ee7ca559fcf4 9.6.0 cited