Re: Trying to the behavior of a parallel query with with a change in the transaction isolation mode

From: Luis Carril <luis(dot)carril(at)swarm64(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Trying to the behavior of a parallel query with with a change in the transaction isolation mode
Date: 2018-02-13 09:05:04
Message-ID: FRXPR01MB00706A088A014AF9AAEB6C5AE7F60@FRXPR01MB0070.DEUPRD01.PROD.OUTLOOK.DE
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Thanks for the answer it worked, the third analyze in the sequence below show multiple workers planned and none launched.

PREPARE st AS SELECT avg(a) FROM parallel_big;
EXPLAIN ANALYZE EXECUTE st;

BEGIN;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED, READ ONLY;
EXPLAIN ANALYZE EXECUTE st;
COMMIT;

BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ ONLY;
EXPLAIN ANALYZE EXECUTE st;
COMMIT;
DEALLOCATE st;

Cheers,
Luis M

________________________________
From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Sent: Monday, February 12, 2018 4:19:52 PM
To: Luis Carril
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Trying to the behavior of a parallel query with with a change in the transaction isolation mode

Luis Carril wrote:

> The transaction isolation level is serializable. This situation does not normally arise, because parallel query plans are not generated when the transaction isolation level is serializable. However, it can happen if the transaction isolation level is changed to serializable after the plan is generated and before it is executed.

> BEGIN;
> SET TRANSACTION ISOLATION LEVEL READ COMMITTED, READ ONLY;
> EXPLAIN (COSTS OFF) SELECT avg(a) FROM parallel_big;
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ ONLY;
> EXPLAIN ANALYZE SELECT avg(a) FROM parallel_big;
> COMMIT;
>
>
> But complains that after the first SELECT (even if it is in an EXPLAIN) the isolation level cannot be changed, so the transaction is aborted and the SELECT is never executed (even sequentially).
>
>
> Is there any way to test the possible behavior described in the documentation?

I think you would do a PREPARE in a regular transaction, then open a
transaction changing the isolation level to serializable and try the
EXPLAIN EXECUTE there.

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Browse pgsql-general by date

  From Date Subject
Next Message GALLIANO Nicolas 2018-02-13 09:15:23 RE: Barman 2.3 errors
Previous Message Vinodh NV 2018-02-13 08:58:03 Require assistance in Postgres + Hibernate : Error: java.math.BigInteger cannot be cast to java.math.BigDecimal