Re: Partitioning and performance - Mailing list pgsql-general

From Jan Lentfer
Subject Re: Partitioning and performance
Date
Msg-id BADB0E1D-FE4E-4CE9-85C6-7B34B1956EA3@web.de
Whole thread Raw
In response to Re: Partitioning and performance  (Ravi Krishna <sravikrishna3@gmail.com>)
List pgsql-general


Am 28. Mai 2015 18:25:42 MESZ, schrieb Ravi Krishna <sravikrishna3@gmail.com>:
Have you set up constraints on the partitions? The planner needs to know
what is in the child tables so it can avoid scanning them.

Yes. each child table is defined as follows

CREATE TABLE TSTESTING.ACCOUNT_PART1

( CHECK (ACCOUNT_ROW_INST BETWEEN 1001 and 271660))

INHERITS (TSTESTING.ACCOUNT);

ALTER TABLE TSTESTING.ACCOUNT_PART1 ADD CONSTRAINT ACCOUNT_PART1_PKEY
PRIMARY KEY (ACCOUNT_ROW_INST);

Perhaps I was not clear. The planner is excluding partitions which can
not contain the rows looked up in the WHERE clause. However it is
still scanning the parent table.

Aggregate (cost=8.45..8.46 rows=1 width=0)
-> Append (cost=0.00..8.44 rows=2 width=0)
-> Seq Scan on account (cost=0.00..0.00 rows=1 width=0)
Filter: (account_row_inst = 101)
-> Index Only Scan using account_part1_pkey on account_part1
(cost=0.42..8.44 rows=1 width=0)
Index Cond: (account_row_inst = 101)
(6 rows)

You can have a look at pg_partman. It makes setting up partitioning quite easy and provides a tool to easily move existing data from parent to child tables.

Jan

pgsql-general by date:

Previous
From: Melvin Davidson
Date:
Subject: Re: Partitioning and performance
Next
From: Tom Lane
Date:
Subject: Re: Partitioning and performance