SlideShare a Scribd company logo
© Copyright EnterpriseDB Corporation, 2015. All Rights Reserved. 1
Partition and Conquer large data in
PostgreSQL 10
• Ashutosh Bapat | 2017.02.03 @ PGConf India
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 2
• Manageability
– Smaller data is easier to manage
– Partition-wise utility commands
– Easy bulk load and deletes
• Query/DML Performance
– Partition elimination (pruning)
– Partition-wise joins, aggregate
– Distribute DMLs across partitions
• Data storages based on partition properties
– “hot” and “cold” partitions
– Foreign partitions
Why to partition tables?
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 3
• Maintenance
– No triggers, rules or constraints to maintain
– Adding/deleting partition does not require more than a
single command
• Faster queries and DMLs
– No trigger execution overhead
●
DMLs are 10-20 times faster
– Simpler partition bounds representation
– Faster partition pruning
– Partition-wise join, aggregation
Why declarative partitioning?
(instead of inheritance based partitioning)
© Copyright EnterpriseDB Corporation, 2015. All Rights Reserved. 4
Declarative partitioning in
PostgreSQL 10
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 5
●
Partitioning methods: List, range, (WIP. hash)
●
Partition key: Single or multiple columns, expressions
●
Sub-partitioning
– Partitioned partitions
– Mixed sub-partitioning
●
Development efforts
– Several previous attempts by many people
– Amit Langote proposed first patch in August 2015
– Got committed in Dec 2016, bug fixes, doc changes continue ...
PostgreSQL Declarative partitioning
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 6
CREATE TABLE part_tab (c1 int, c2 int, …) PARTITION BY RANGE (c1);
Creating partitioned table
part_tab (c1 int, c2 int, ...)
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 7
CREATE TABLE part_tab (c1 int, c2 int, …) PARTITION BY RANGE (c1);
CREATE TABLE part1 PARTITION OF part_tab FOR VALUES FROM (0) TO (100);
CREATE TABLE part2 PARTITION OF part_tab FOR VALUES FROM (100) TO (200);
Creating partitioned table
part_tab (c1 int, c2 int, ...)
Part1
0 to 100
Part2
100 to 200
Tablespaces
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 8
ALTER TABLE part_tab ATTACH PARTITION ext_part FOR VALUES FROM (400) to (500);
ATTACH partition
part_tab (c1 int, c2 int, ...)
Part1
0 to 100
Part2
100 to 200
ext_part
400 to 500
ext_part (c1 int, c2 int, ...)
CHECK c1 >= 400 AND c1 < 500
Bulk load
data.csv
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 9
ALTER TABLE part_tab DETACH PARTITION ext_part;
DETACH partition
part_tab (c1 int, c2 int, ...)
Part1
0 to 100
Part2
100 to 200
ext_part (c1 int, c2 int, ...)
CHECK c1 >= 400 AND c1 < 500
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 10
●
Same columns as parent table
●
Partition specific constraints, defaults, indexes,
storage parameters
●
Tablespace separate from that of parent
– “hot” and “cold” partitions
●
VACUUM, ANALYZE, CLUSTER can be run
separately
– Utilities don't block the whole table
– Work where it's required
Partitions are tables
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 11
CREATE TABLE part_tab (c1 int, c2 int, …) PARTITION BY RANGE (c1);
...
CREATE FOREIGN TABLE part3 PARTITION OF part_tab FOR VALUES FROM (300) TO
(400) SERVER xyz_server;
CREATE FOREIGN TABLE part4 PARTITION OF part_tab FOR VALUES FROM (400) TO
(500) SERVER abc_server;
Foreign partitions
part_tab (c1 int, c2 int, ...)
Part1
0 to 100
Part2
100 to 200
Part3
300 to 400
fpart3 (c1 int, c2 int, ...)
c1 >= 300 AND c1 < 400
xyz_server
xyz_fdw
Part4
400 to 500
fpart3 (c1 int, c2 int, ...)
c1 >= 400 AND c1 < 500
abc_server
abc_fdw
© Copyright EnterpriseDB Corporation, 2015. All Rights Reserved. 12
Query optimizations
partition pruning
partition-wise join
partition-wise aggregation
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 13
Query optimization: partition pruning
SELECT * FROM t1 WHERE c1 = 350;
Partition 1
FOR VALUES
FROM (0) TO (100)
Partitioned table
t1 (c1 int, c2 int, …)
Partition 4
FOR VALUES
FROM (300) TO (400)
Partition 3
FOR VALUES
FROM (200) TO (300)
Partition 2
FOR VALUES
FROM (100) TO (200)
SELECT * FROM t1
WHERE c1 BETWEEN 150 AND 250;
Constraintexclusion
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 14
Query optimization: partition-wise join
Partition 1
FOR VALUES
(0) TO (100)
Partitioned table
t1 (c1 int, ...)
Partition 3
FOR VALUES
(200) TO (300)
Partition 2
FOR VALUES
(100) TO (200)
Partition 1
FOR VALUES
(0) TO (100)
Partition 3
FOR VALUES
(200) TO (300)
Partition 2
FOR VALUES
(100) TO (200)
Partition 1
FOR VALUES
(0) TO (100)
Partitioned table
t2 (c1 int, ...)
Partition 3
FOR VALUES
(200) TO (300)
Partition 2
FOR VALUES
(100) TO (200)
t1 JOIN t2
ON t1.c1 = t2.c1
Partitioned join
Partition 3
FOR VALUES
(200) TO (300)
Partition 1
FOR VALUES
(0) TO (100)
Partition 3
FOR VALUES
(200) TO (300)
Partition 2
FOR VALUES
(100) TO (200)
Partition 3
FOR VALUES
(200) TO (300)
Partition 1
FOR VALUES
(0) TO (100)
Partition 3
FOR VALUES
(200) TO (300)
Partition 2
FOR VALUES
(100) TO (200)
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 15
Query optimization: partition-wise
aggregation
Partitioned table
t1 (c1 int, ...)
Partition 1
Partition 3
Partition 2
Partition 1
Partitioned table
t2 (c1 int, ...)
Partition 3
Partition 2
t1 JOIN t2
ON t1.c1 = t2.c1
Partition 1
Partition 3
Partition 2
Partition 1
Partition 3
Partition 2
Agg/Group
Agg/Group
Agg/Group
Agg/Group
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 16
• Bad partitioning is worse than no partitioning
• Query optimization
– Partition key is the key to success
– Columns in conditions
– include it in the query
• Storage management
– Columns that decide the storage
– Usually timestamp of the row
– Easy to add and drop partitions
• Keep an eye on current limitations
– Expected to reduce with next few releases
Choosing partitioning scheme
© Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 17
• We have just begun …
• No triggers on partitioned table
– Need to create those for each of the partitions
• No SPLIT, MERGE, EXCHANGE partition
• No global indexes
– No primary key, unique constraints
• Foreign partitions
– INSERTs via parent table not supported
– No ACID support for transactions involving multiple foreign servers
Limitations
Partition and conquer large data in PostgreSQL 10

More Related Content

PDF
Query optimization techniques for partitioned tables.
PDF
Common Table Expressions (CTE) & Window Functions in MySQL 8.0
PDF
MySQL 8.0: Common Table Expressions
PDF
Histogram Support in MySQL 8.0
PPT
Oracle tips and tricks
PPT
Stack It And Unpack It
PDF
MySQL 8.0: Common Table Expressions
ODP
Multi-Master Replication with Slony
Query optimization techniques for partitioned tables.
Common Table Expressions (CTE) & Window Functions in MySQL 8.0
MySQL 8.0: Common Table Expressions
Histogram Support in MySQL 8.0
Oracle tips and tricks
Stack It And Unpack It
MySQL 8.0: Common Table Expressions
Multi-Master Replication with Slony

What's hot (19)

ODP
Scaling PostgreSQL With GridSQL
PDF
Developers' mDay 2017. - Bogdan Kecman Oracle
PDF
How to analyze and tune sql queries for better performance
PDF
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
PDF
Fun with click house window functions webinar slides 2021-08-19
PDF
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
PDF
Common Table Expressions in MariaDB 10.2
PDF
Spatial query on vanilla databases
PPTX
Faster transactions & analytics with the new SQL2016 In-memory technologies
PDF
Common Table Expressions in MariaDB 10.2 (Percona Live Amsterdam 2016)
PDF
SQL window functions for MySQL
PDF
Efficient spatial queries on vanilla databases
PDF
Scaling PostreSQL with Stado
PDF
Migration from mysql to elasticsearch
PDF
Using histograms to get better performance
PDF
Table partitioning in PostgreSQL + Rails
PPTX
Cluto presentation
ODP
Basic Query Tuning Primer - Pg West 2009
PPTX
Lazy beats Smart and Fast
Scaling PostgreSQL With GridSQL
Developers' mDay 2017. - Bogdan Kecman Oracle
How to analyze and tune sql queries for better performance
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
Fun with click house window functions webinar slides 2021-08-19
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Common Table Expressions in MariaDB 10.2
Spatial query on vanilla databases
Faster transactions & analytics with the new SQL2016 In-memory technologies
Common Table Expressions in MariaDB 10.2 (Percona Live Amsterdam 2016)
SQL window functions for MySQL
Efficient spatial queries on vanilla databases
Scaling PostreSQL with Stado
Migration from mysql to elasticsearch
Using histograms to get better performance
Table partitioning in PostgreSQL + Rails
Cluto presentation
Basic Query Tuning Primer - Pg West 2009
Lazy beats Smart and Fast
Ad

Viewers also liked (19)

PDF
Atomicity for transactions involving foreign server in PostgreSQL
PDF
Postgres_9.0 vs MySQL_5.5
PDF
EnterpriseDB Postgres Survey Results - 2013
 
PDF
NoSQL on ACID - Meet Unstructured Postgres
 
PDF
Top 10 Tips for an Effective Postgres Deployment
 
PPTX
PGEncryption_Tutorial
PDF
Aikakausmediat somessa / kesäkuu 2016
PPT
Харчування у профілактиці серцево-судинних захворювань
PDF
Afaceri interactive de robert kiyosaki
PDF
Getting Started with PostGIS
 
PDF
PostgreSQL Internals (1) for PostgreSQL 9.6 (English)
PPS
Hechos de los Apóstoles
PDF
Migrating from Oracle to Postgres
 
PPT
Family members game
PDF
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
PDF
Puppet Camp Singapore 2015 - 19th Nov 2015 Presentation (1)
PDF
SP DIT Bonding Day - 05062015
PDF
PUGS Meetup Presentation - 11062015
PPTX
Security Automation Approach #1: Workflow
Atomicity for transactions involving foreign server in PostgreSQL
Postgres_9.0 vs MySQL_5.5
EnterpriseDB Postgres Survey Results - 2013
 
NoSQL on ACID - Meet Unstructured Postgres
 
Top 10 Tips for an Effective Postgres Deployment
 
PGEncryption_Tutorial
Aikakausmediat somessa / kesäkuu 2016
Харчування у профілактиці серцево-судинних захворювань
Afaceri interactive de robert kiyosaki
Getting Started with PostGIS
 
PostgreSQL Internals (1) for PostgreSQL 9.6 (English)
Hechos de los Apóstoles
Migrating from Oracle to Postgres
 
Family members game
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
Puppet Camp Singapore 2015 - 19th Nov 2015 Presentation (1)
SP DIT Bonding Day - 05062015
PUGS Meetup Presentation - 11062015
Security Automation Approach #1: Workflow
Ad

Similar to Partition and conquer large data in PostgreSQL 10 (20)

PDF
The Truth About Partitioning
 
PDF
Practical Partitioning in Production with Postgres
PDF
Practical Partitioning in Production with Postgres
 
PDF
PostgreSQL - Decoding Partitions
PPTX
Sql server lesson7
PDF
PostgreSQL Table Partitioning / Sharding
PDF
Partitioning tables and indexing them
PDF
MySQL partitions tutorial
PDF
PostgreSQL 13 is Coming - Find Out What's New!
 
PPTX
Partitioning kendralittle
PPTX
New and Improved Features in PostgreSQL 13
 
PDF
Optimizing Queries over Partitioned Tables in MPP Systems
 
PPT
Informix partitioning interval_rolling_window_table
PPTX
Partitioning 101
PPTX
Postgres db performance improvements
PDF
Table Partitioning: Secret Weapon for Big Data Problems
PDF
Introducing Postgres Plus Advanced Server 9.4
 
PDF
Table Partitioning in SQL Server: A Magic Solution for Better Performance? (P...
PPTX
Hypothetical Partitioning for PostgreSQL
ODP
Chetan postgresql partitioning
The Truth About Partitioning
 
Practical Partitioning in Production with Postgres
Practical Partitioning in Production with Postgres
 
PostgreSQL - Decoding Partitions
Sql server lesson7
PostgreSQL Table Partitioning / Sharding
Partitioning tables and indexing them
MySQL partitions tutorial
PostgreSQL 13 is Coming - Find Out What's New!
 
Partitioning kendralittle
New and Improved Features in PostgreSQL 13
 
Optimizing Queries over Partitioned Tables in MPP Systems
 
Informix partitioning interval_rolling_window_table
Partitioning 101
Postgres db performance improvements
Table Partitioning: Secret Weapon for Big Data Problems
Introducing Postgres Plus Advanced Server 9.4
 
Table Partitioning in SQL Server: A Magic Solution for Better Performance? (P...
Hypothetical Partitioning for PostgreSQL
Chetan postgresql partitioning

Recently uploaded (20)

PPTX
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
PPTX
mbdjdhjjodule 5-1 rhfhhfjtjjhafbrhfnfbbfnb
PPTX
IB Computer Science - Internal Assessment.pptx
PPTX
climate analysis of Dhaka ,Banglades.pptx
PDF
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
PDF
Mega Projects Data Mega Projects Data
PPTX
Acceptance and paychological effects of mandatory extra coach I classes.pptx
PPTX
01_intro xxxxxxxxxxfffffffffffaaaaaaaaaaafg
PPTX
AI Strategy room jwfjksfksfjsjsjsjsjfsjfsj
PPTX
MODULE 8 - DISASTER risk PREPAREDNESS.pptx
PPTX
STUDY DESIGN details- Lt Col Maksud (21).pptx
PPTX
ALIMENTARY AND BILIARY CONDITIONS 3-1.pptx
PPTX
Business Acumen Training GuidePresentation.pptx
PPTX
Computer network topology notes for revision
PPTX
advance b rammar.pptxfdgdfgdfsgdfgsdgfdfgdfgsdfgdfgdfg
PPTX
oil_refinery_comprehensive_20250804084928 (1).pptx
PPT
ISS -ESG Data flows What is ESG and HowHow
PPTX
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
PPTX
Database Infoormation System (DBIS).pptx
PPTX
Qualitative Qantitative and Mixed Methods.pptx
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
mbdjdhjjodule 5-1 rhfhhfjtjjhafbrhfnfbbfnb
IB Computer Science - Internal Assessment.pptx
climate analysis of Dhaka ,Banglades.pptx
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
Mega Projects Data Mega Projects Data
Acceptance and paychological effects of mandatory extra coach I classes.pptx
01_intro xxxxxxxxxxfffffffffffaaaaaaaaaaafg
AI Strategy room jwfjksfksfjsjsjsjsjfsjfsj
MODULE 8 - DISASTER risk PREPAREDNESS.pptx
STUDY DESIGN details- Lt Col Maksud (21).pptx
ALIMENTARY AND BILIARY CONDITIONS 3-1.pptx
Business Acumen Training GuidePresentation.pptx
Computer network topology notes for revision
advance b rammar.pptxfdgdfgdfsgdfgsdgfdfgdfgsdfgdfgdfg
oil_refinery_comprehensive_20250804084928 (1).pptx
ISS -ESG Data flows What is ESG and HowHow
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
Database Infoormation System (DBIS).pptx
Qualitative Qantitative and Mixed Methods.pptx

Partition and conquer large data in PostgreSQL 10

  • 1. © Copyright EnterpriseDB Corporation, 2015. All Rights Reserved. 1 Partition and Conquer large data in PostgreSQL 10 • Ashutosh Bapat | 2017.02.03 @ PGConf India
  • 2. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 2 • Manageability – Smaller data is easier to manage – Partition-wise utility commands – Easy bulk load and deletes • Query/DML Performance – Partition elimination (pruning) – Partition-wise joins, aggregate – Distribute DMLs across partitions • Data storages based on partition properties – “hot” and “cold” partitions – Foreign partitions Why to partition tables?
  • 3. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 3 • Maintenance – No triggers, rules or constraints to maintain – Adding/deleting partition does not require more than a single command • Faster queries and DMLs – No trigger execution overhead ● DMLs are 10-20 times faster – Simpler partition bounds representation – Faster partition pruning – Partition-wise join, aggregation Why declarative partitioning? (instead of inheritance based partitioning)
  • 4. © Copyright EnterpriseDB Corporation, 2015. All Rights Reserved. 4 Declarative partitioning in PostgreSQL 10
  • 5. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 5 ● Partitioning methods: List, range, (WIP. hash) ● Partition key: Single or multiple columns, expressions ● Sub-partitioning – Partitioned partitions – Mixed sub-partitioning ● Development efforts – Several previous attempts by many people – Amit Langote proposed first patch in August 2015 – Got committed in Dec 2016, bug fixes, doc changes continue ... PostgreSQL Declarative partitioning
  • 6. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 6 CREATE TABLE part_tab (c1 int, c2 int, …) PARTITION BY RANGE (c1); Creating partitioned table part_tab (c1 int, c2 int, ...)
  • 7. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 7 CREATE TABLE part_tab (c1 int, c2 int, …) PARTITION BY RANGE (c1); CREATE TABLE part1 PARTITION OF part_tab FOR VALUES FROM (0) TO (100); CREATE TABLE part2 PARTITION OF part_tab FOR VALUES FROM (100) TO (200); Creating partitioned table part_tab (c1 int, c2 int, ...) Part1 0 to 100 Part2 100 to 200 Tablespaces
  • 8. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 8 ALTER TABLE part_tab ATTACH PARTITION ext_part FOR VALUES FROM (400) to (500); ATTACH partition part_tab (c1 int, c2 int, ...) Part1 0 to 100 Part2 100 to 200 ext_part 400 to 500 ext_part (c1 int, c2 int, ...) CHECK c1 >= 400 AND c1 < 500 Bulk load data.csv
  • 9. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 9 ALTER TABLE part_tab DETACH PARTITION ext_part; DETACH partition part_tab (c1 int, c2 int, ...) Part1 0 to 100 Part2 100 to 200 ext_part (c1 int, c2 int, ...) CHECK c1 >= 400 AND c1 < 500
  • 10. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 10 ● Same columns as parent table ● Partition specific constraints, defaults, indexes, storage parameters ● Tablespace separate from that of parent – “hot” and “cold” partitions ● VACUUM, ANALYZE, CLUSTER can be run separately – Utilities don't block the whole table – Work where it's required Partitions are tables
  • 11. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 11 CREATE TABLE part_tab (c1 int, c2 int, …) PARTITION BY RANGE (c1); ... CREATE FOREIGN TABLE part3 PARTITION OF part_tab FOR VALUES FROM (300) TO (400) SERVER xyz_server; CREATE FOREIGN TABLE part4 PARTITION OF part_tab FOR VALUES FROM (400) TO (500) SERVER abc_server; Foreign partitions part_tab (c1 int, c2 int, ...) Part1 0 to 100 Part2 100 to 200 Part3 300 to 400 fpart3 (c1 int, c2 int, ...) c1 >= 300 AND c1 < 400 xyz_server xyz_fdw Part4 400 to 500 fpart3 (c1 int, c2 int, ...) c1 >= 400 AND c1 < 500 abc_server abc_fdw
  • 12. © Copyright EnterpriseDB Corporation, 2015. All Rights Reserved. 12 Query optimizations partition pruning partition-wise join partition-wise aggregation
  • 13. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 13 Query optimization: partition pruning SELECT * FROM t1 WHERE c1 = 350; Partition 1 FOR VALUES FROM (0) TO (100) Partitioned table t1 (c1 int, c2 int, …) Partition 4 FOR VALUES FROM (300) TO (400) Partition 3 FOR VALUES FROM (200) TO (300) Partition 2 FOR VALUES FROM (100) TO (200) SELECT * FROM t1 WHERE c1 BETWEEN 150 AND 250; Constraintexclusion
  • 14. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 14 Query optimization: partition-wise join Partition 1 FOR VALUES (0) TO (100) Partitioned table t1 (c1 int, ...) Partition 3 FOR VALUES (200) TO (300) Partition 2 FOR VALUES (100) TO (200) Partition 1 FOR VALUES (0) TO (100) Partition 3 FOR VALUES (200) TO (300) Partition 2 FOR VALUES (100) TO (200) Partition 1 FOR VALUES (0) TO (100) Partitioned table t2 (c1 int, ...) Partition 3 FOR VALUES (200) TO (300) Partition 2 FOR VALUES (100) TO (200) t1 JOIN t2 ON t1.c1 = t2.c1 Partitioned join Partition 3 FOR VALUES (200) TO (300) Partition 1 FOR VALUES (0) TO (100) Partition 3 FOR VALUES (200) TO (300) Partition 2 FOR VALUES (100) TO (200) Partition 3 FOR VALUES (200) TO (300) Partition 1 FOR VALUES (0) TO (100) Partition 3 FOR VALUES (200) TO (300) Partition 2 FOR VALUES (100) TO (200)
  • 15. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 15 Query optimization: partition-wise aggregation Partitioned table t1 (c1 int, ...) Partition 1 Partition 3 Partition 2 Partition 1 Partitioned table t2 (c1 int, ...) Partition 3 Partition 2 t1 JOIN t2 ON t1.c1 = t2.c1 Partition 1 Partition 3 Partition 2 Partition 1 Partition 3 Partition 2 Agg/Group Agg/Group Agg/Group Agg/Group
  • 16. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 16 • Bad partitioning is worse than no partitioning • Query optimization – Partition key is the key to success – Columns in conditions – include it in the query • Storage management – Columns that decide the storage – Usually timestamp of the row – Easy to add and drop partitions • Keep an eye on current limitations – Expected to reduce with next few releases Choosing partitioning scheme
  • 17. © Copyright EnterpriseDB Corporation, 2017. All Rights Reserved. 17 • We have just begun … • No triggers on partitioned table – Need to create those for each of the partitions • No SPLIT, MERGE, EXCHANGE partition • No global indexes – No primary key, unique constraints • Foreign partitions – INSERTs via parent table not supported – No ACID support for transactions involving multiple foreign servers Limitations