postgresql: decoding partition - pgconf india · 2019-02-17 · © copyright enterprisedb...

49
© Copyright EnterpriseDB Corporation, 2019. All rights reserved. February 14, 2019 PostgreSQL: Decoding Partition Beena Emerson 1

Upload: others

Post on 14-Jul-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

February 14, 2019

PostgreSQL: Decoding Partition

Beena Emerson

1

Page 2: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

INTRODUCTION

● What is Partitioning?

● Why partition?

● When to Partition?

2

Page 3: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

What is Partitioning?Subdividing a database table into smaller parts.

PARENT TABLE

APP

LIC

ATI

ON

INTE

RN

AL

PARTITIONS

3

Page 4: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Why Partition?

10 mn rows

2 mn

A = 100?

Faster Data Access

Scanning smaller tables takes less time.

4

Page 5: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Why Partition?

TABLE SIZE

PER

FOR

MA

NC

EScalability

With partition, we would be dealing with multiple tables of smaller sizes.

5

Page 6: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Why Partition?Easy Maintenance

5000 ms

200 ms

180 ms

Commands are faster and can be run in parallel

6

Page 7: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

When to Partition?Table Size

● Rule of thumb: size of the table exceeds physical memory of the database server.

● Extensive DML operations

7

Page 8: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

When to Partition?Targeted Columns

Col 1 Col 2 Col 3 Col4

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

75%

Good partition key candidateWHERE col3 = xx

8

Page 9: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

When to Partition?Hot and Cold Data

FEB2019

JAN2019

DEC2018

NOV2018

FASTER DISK

9

Page 10: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

CAUTION!

Bad partitioning is worse than no partitioning!

Choose partitioning keys, strategy and no of partitions after thorough analysis and testing.

10

Page 11: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

PARTITIONING IN POSTGRESQL

● Inheritance (Trigger- based) Partition

● Declarative Partitioning

11

Page 12: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

● Since PostgreSQL 8.1

● Table inheritance simulating partitioning

A = 3

PARENT TABLE TRIGGER

CHECKCHILD TABLES

Inheritance (Trigger- based) Partition12

Page 13: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Inheritance (Trigger- based) PartitionProblems

● Partitions tracking is manual and error-prone.

● Slower Performance

● Constraints may not be mutually exclusive

13

Page 14: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Declarative Partitioning● Introduced in PostgreSQL 10

● Somewhat automates creation of partitions

● Easy partition maintenance○ No overlapping boundaries○ Add/Delete partition easily○ Simpler syntax

● Scope for better performance

14

Page 15: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Declarative PartitioningTerms

● Partitioned table - parent table

● Partition key - column on which table is partitioned

● Partitions - the smaller child tables

● Partition bounds - constraints of each partition

15

Page 16: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Declarative Partitioning● Create Partitioned Table CREATE TABLE parent ( <col list > ) PARTITION BY <partition strategy> ( <partition key> );

● Create Partitions CREATE TABLE child PARTITION OF parent <partition bounds>;

… repeat for required partitions

16

Page 17: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Declarative Partitioning● Existing table can be added as a partition to a

partitioned table ALTER TABLE parent ATTACH PARTITION p1 <bounds>;

All entries in the table will be checked.

● A partition can be removed and made standalone ALTER TABLE parent DETACH PARTITION child;

17

Page 18: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

PARTITION STRATEGY AND TYPE

● Strategy○ List ○ Range ○ Hash

● Types○ Multi-column partitioning○ Multi-level partitioning

18

Page 19: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

List Strategy

MUMBAI, PUNE

GOA

CHENNAI, OOTY

BANGLORE

● PostgreSQL 10

● Explicitly specify key values○ Single or multiple value per

partition

19

Page 20: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

List Strategy● Create Partitioned Table CREATE TABLE parent ( <col list > ) PARTITION BY LIST ( <partition key> );

● Create Partitions CREATE TABLE child PARTITION OF parent FOR VALUES IN ( <val1> [, <val2>] ) ;

20

Page 21: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Range Strategy● PostgreSQL 10

● Range boundaries○ Lower inclusive (>=) ○ Upper exclusive (<)

● Unbounded values○ MINVALUE ○ MAXVALUE

1 - 100

100 - 200

200 - 300

300 - 400

21

Page 22: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Range Strategy● Create Partitioned Table CREATE TABLE parent ( <col list > ) PARTITION BY RANGE ( <partition key> );

● Create Partitions CREATE TABLE child PARTITION OF parent FOR VALUES FROM ( <lower> ) TO ( <upper> ) ;

22

Page 23: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Hash Strategy● PostgreSQL 11

● Data does not have natural boundaries

● Specify modulus and remainder ○ remainder < modulus○ Remainder - non-negative integer○ Modulus - positive integer

● Rows spread on hash value of the partition key

23

Page 24: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Hash Strategy

Div m

ParentA = 3

Hash fn

24

Page 25: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Hash Strategy● Create Partitioned Table CREATE TABLE parent ( <col list > ) PARTITION BY HASH ( <partition key> );

● Create Partitions CREATE TABLE child PARTITION OF parent FOR VALUES WITH ( MODULUS <m>, REMAINDER <r> );

25

Page 26: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Multi-Column Partitioning● Multiple columns as partition key

● Supported for range and hash

● Column limit : 32

26

Page 27: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Multi-Column PartitioningRange Partition

CREATE TABLE rparent (col1 int, col2 int) PARTITION BY RANGE (col1, col2);

CREATE TABLE rpart_1 PARTITION OF rparent FOR VALUES FROM (0, 0) TO (100, 50);

CREATE TABLE rpart_2 PARTITION OF rparent FOR VALUES FROM (100, 50) TO (MAXVALUE, MAXVALUE);

27

Page 28: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Multi-Column PartitioningRange Partition

● Every column following MAXVALUE / MINVALUE must also be the same.

● The row comparison operator is used for insert○ Elements are compared left-to-right, stopping at

first unequal pair of elements.Consider partition (0, 0) TO (100, 50)(0, 199), (100, 49) fits while(100, 50) does not.

28

Page 29: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Multi-Column PartitioningHash Partition

CREATE TABLE hparent (col1 int, col2 int) PARTITION BY HASH (col1, col2);

CREATE TABLE hpart_2 PARTITION OF hparent FOR VALUES WITH (MODULUS 3, REMAINDER 2);

CREATE TABLE hpart_1 PARTITION OF hparent FOR VALUES WITH (MODULUS 3, REMAINDER 1);

CREATE TABLE hpart_0 PARTITION OF hparent FOR VALUES WITH (MODULUS 3, REMAINDER 0);

CREATE TABLE hpart_1 PARTITION OF rparent FOR VALUES FROM (0, 0) TO (100, 50);

CREATE TABLE hpart_2 PARTITION OF rparent FOR VALUES FROM (100, 50) TO (MAXVALUE, MAXVALUE);

29

Page 30: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Multi-Column PartitioningHash Partition

● Only a single modulus, remainder pair is used.

● The hash of each of partition key is calculated and then combined to get a single hash value which is divided by the modulus specified.

30

Page 31: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Multi-level Partitioning31

Page 32: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Multi-level Partitioning● Create a partitioned partition

CREATE TABLE child1 PARTITION OF parent FOR VALUES FROM (0) TO (100) PARTITION BY LIST (col3);

● Attach a partitioned table as a partition.

● There is no check to ensure that the sub partition bounds are a subset of the partition’s own bound. CREATE TABLE child1_1 PARTITION OF child1 FOR VALUES IN (500, 2000);

32

Page 33: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

OTHER FEATURES

● Default Partition

● Handling NULL values

● Inherit Constraints

● Update tuple routing

● Foreign Table Partitions

● Partition Pruning

33

Page 34: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

● PostgreSQL 11

● Catch tuples that do not match partition bounds of others.

● Support for: list, range

● Syntax: CREATE TABLE child PARTITION OF parent DEFAULT

A

B

C

DEFAULT

Default PartitionZ

(NOT (col1 IS NOT NULL) AND (col1 = ANY (ARRAY[ 'A', 'B', 'C' ])))

34

Page 35: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Default PartitionAdd new partition

Default partition should not have rows that satisfy the new partition.

ERROR: updated partition constraint for default partition "part_def" would be violated by some row

1 - 100

100 - 200

DEF: 205, 410

200 - 300

35

Page 36: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Handling NULL values● Hash routes based on the hash.

● Range: can be inserted in default partition.

● List: A partition can be made to accept NULL else it is routed to default partition.CREATE TABLE child PARTITION OF lparent FOR VALUES IN ( NULL ) ;

36

Page 37: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Inherit ConstraintsConstraint Types

● Check ● Not-Null ● Unique ● Primary Keys● Foreign Keys● Exclude

37

Page 38: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Inherit ConstraintsPostgreSQL 10

● Supported: Check, Not Null

● Other constraints can be explicitly added to individual partition..

● No cascading inheritance

38

Page 39: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Inherit ConstraintsPostgreSQL 11

● Added Support: unique, primary and foreign keys

● Not supported: exclude constraints

● Cascading: New constraints to parent propagates to partitions.

● Other constraints can be explicitly added to individual partition.

39

Page 40: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Update Tuple RoutingPostgreSQL 11

● When an updated tuple no longer fits the partition, route it to the correct one.

1 - 100

100 - 200

200 - 300

300 - 400

150

380

40

Page 41: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Foreign Table Partitions● Can add foreign table as a partition.

CREATE FOREIGN TABLE lpart_f1 PARTITION OF lparent FOR VALUES IN ('C' , 'E') SERVER s0

● Tuples can be inserted from v11.

● Cannot be partitioned.

● Updated tuples can me moved to foreign partitions but not from them.

41

Page 42: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Partition Pruning

0 - 100

100 - 200

200 - 300

300 - 400

180 - 220Planner Level PruningDepending on the query conditions on partition key, scan only the relevant partitions.

col1

42

Page 43: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Partition PruningPlanner Level Pruning=# EXPLAIN (COSTS OFF, TIMING OFF, ANALYZE) SELECT * FROM rparent WHERE col1 BETWEEN 180 AND 220;

Append (actual rows=41 loops=1) -> Seq Scan on rpart_2 (actual rows=20 loops=1) Filter: ((col1 >= 180) AND (col1 <= 220)) Rows Removed by Filter: 80 -> Seq Scan on rpart_3 (actual rows=21 loops=1) Filter: ((col1 >= 180) AND (col1 <= 220)) Rows Removed by Filter: 79

43

Page 44: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Partition PruningRuntime Partition Pruning

● PostgreSQL 11

● Performed at two levels○ Executor Initialization - prepared query○ Actual Execution - nested loop join

44

Page 45: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Partition PruningRuntime Pruning - Executor Initialization=# PREPARE r_q1 (int) as SELECT * from rparent where col1 < $1;=# EXPLAIN execute r_q1(150);

Append (cost=0.00..168.06 rows=3012 width=8) Subplans Removed: 2 -> Seq Scan on rpart_1 Filter: (col1 < $1) -> Seq Scan on rpart_2 Filter: (col1 < $1)(6 rows)

45

Page 46: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Partition PruningRuntime Pruning - Actual execution

Nested Loop Join

100 - 200

0 - 100

200 - 300

300 - 400

10000 rows

1-50Rest > 500

(50 times)

46

Page 47: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

Partition PruningRuntime Pruning - Actual execution=#EXPLAIN SELECT * FROM tbl JOIN rparent ON id= col1; Nested Loop (actual rows=50 loops=1) -> Seq Scan on tbl (actual rows=10000 loops=1) -> Append (actual rows=0 loops=10000) -> Index Scan using rpart_1_pkey on rpart_1 ( actual rows=1 loops=50) Index Cond: (col1 = tbl.id) -> Index Scan using rpart_2_pkey on rpart_2 (never executed) Index Cond: (col1 = tbl.id) -> Index Scan using rpart_3_pkey on rpart_3 (never executed) Index Cond: (col1 = tbl.id) -> Index Scan using rpart_4_pkey on rpart_4 (never executed) Index Cond: (col1 = tbl.id)

47

Page 48: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

We are Hiring!

● Java Full Stack Developer● Java Architect● Python Full Stack Developer● Technical Sales Engineer● Technical Support● Sales● Database Consultant● UI Developers

48

Page 49: PostgreSQL: Decoding Partition - PGConf India · 2019-02-17 · © Copyright EnterpriseDB Corporation, 2019. All rights reserved. Partition Pruning Runtime Pruning - Actual execution

© Copyright EnterpriseDB Corporation, 2019. All rights reserved.© Copyright EnterpriseDB Corporation, 2019. All rights reserved.

THANK YOU!

49