From: | tushar <tushar(dot)ahuja(at)enterprisedb(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
Cc: | Julien Rouhaud <julien(dot)rouhaud(at)dalibo(dot)com>, James Sewell <james(dot)sewell(at)lisasoft(dot)com>, David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Paul Ramsey <pramsey(at)cleverelephant(dot)ca>, Andreas Ulbrich <andreas(dot)ulbrich(at)matheversum(dot)de> |
Subject: | Re: Choosing parallel_degree |
Date: | 2016-04-11 13:56:12 |
Message-ID: | 570BACFC.6020305@enterprisedb.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 04/08/2016 08:53 PM, Robert Haas wrote:
> On Fri, Apr 8, 2016 at 1:22 AM, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
>> Other than that, patch looks good and I have marked it as Ready For
>> Committer. Hope, we get this for 9.6.
> Committed. I think this is likely to make parallel query
> significantly more usable in 9.6.
>
While testing ,I observed couple of things -
Case 1 =Not accepting parallel seq scan when parallel_degree is set to 0
postgres=# create table fok2(n int) with (parallel_degree=0);
CREATE TABLE
postgres=# insert into fok2 values (generate_series(1,1000000)); analyze
fok2; vacuum fok2;
INSERT 0 1000000
ANALYZE
VACUUM
postgres=# set max_parallel_degree =5;
SET
postgres=# explain analyze verbose select * from fok2 where n<=10;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------
Seq Scan on public.fok2 (cost=0.00..16925.00 rows=100 width=4)
(actual time=0.027..217.882 rows=10 loops=1)
Output: n
Filter: (fok2.n <= 10)
Rows Removed by Filter: 999990
Planning time: 0.084 ms
Execution time: 217.935 ms
(6 rows)
I am assuming parallel_degree=0 is as same as not using it , i.e
create table fok2(n int) with (parallel_degree=0); = create table
fok2(n int);
so in this case it should have accepted the parallel seq .scan.
Case 2=Total no# of workers are NOT matching with the workers information -
postgres=# alter table fok set (parallel_degree=10);
ALTER TABLE
postgres=# set max_parallel_degree =9;
SET
postgres=# explain analyze verbose select * from fok where n<=1;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------
Gather (cost=1000.00..6823.89 rows=100 width=4) (actual
time=0.621..107.755 rows=1 loops=1)
Output: n
* Number of Workers: 9*
-> Parallel Seq Scan on public.fok (cost=0.00..5814.00 rows=11
width=4) (actual time=83.382..95.157 rows=0 loops=9)
Output: n
Filter: (fok.n <= 1)
Rows Removed by Filter: 111111
Worker 0: actual time=82.181..82.181 rows=0 loops=1
Worker 1: actual time=97.236..97.236 rows=0 loops=1
Worker 2: actual time=93.586..93.586 rows=0 loops=1
Worker 3: actual time=94.159..94.159 rows=0 loops=1
Worker 4: actual time=88.459..88.459 rows=0 loops=1
Worker 5: actual time=90.245..90.245 rows=0 loops=1
Worker 6: actual time=101.577..101.577 rows=0 loops=1
Worker 7: actual time=102.955..102.955 rows=0 loops=1
Planning time: 0.119 ms
Execution time: 108.585 ms
(17 rows)
Expected = Expecting worker8 information , also loops=10 (including the
Master)
Case 3=Getting error if we set the max value in max_parallel_degree as
well in parallel_degree .
postgres=# create table abd(n int) with (parallel_degree=262144);
ERROR: value 262144 out of bounds for option "parallel_degree"
DETAIL: Valid values are between "0" and "262143".
postgres=# create table abd(n int) with (parallel_degree=262143);
CREATE TABLE
postgres=# insert into abd values (generate_series(1,1000000)); analyze
abd; vacuum abd;
INSERT 0 1000000
ANALYZE
postgres=# set max_parallel_degree =2624444;
ERROR: 2624444 is outside the valid range for parameter
"max_parallel_degree" (0 .. 262143)
postgres=# set max_parallel_degree =262143;
SET
postgres=#
postgres=# explain analyze verbose select * from abd where n<=1;
ERROR: requested shared memory size overflows size_t
if we remove the analyze keyword then query running successfully.
Expected = Is it not better to throw the error at the time of setting
max_parallel_degree, if not supported ?
--
regards,tushar
From | Date | Subject | |
---|---|---|---|
Next Message | Alexander Korotkov | 2016-04-11 14:03:40 | Re: Move PinBuffer and UnpinBuffer to atomics |
Previous Message | Shulgin, Oleksandr | 2016-04-11 13:55:53 | Re: PQsendQuery+PQgetResult+PQsetSingleRowMode limitations and support |