SlideShare a Scribd company logo
Copyright©2019 NTT corp. All Rights Reserved.
Partitioning in Postgres
How Far We’ve Come
Amit Langote
NTT OSS Center
PGConf.ASIA 2019, Bali
Slides URL: https://amitlan.github.io/files/pgconf-asia-2019.pdf
Copyright©2019 NTT corp. All Rights Reserved.
2

About the speaker
• Live and work in Tokyo.
• Contribute to community Postgres, have written feature patches, bug fixes, review
other people’s code.
• Contributed to features like declarative partitioning, command progress reporting,
among others. In recent releases, worked primarily on improving the performance
and the scalability of partitioning.
Copyright©2019 NTT corp. All Rights Reserved.
3

Outline
• Partitioning concepts
• Partitioning in Postgres: the “old” way
• The coming of declarative partitioning
• Postgres 10 and 11: foundations
• Postgres 12: performance
Copyright©2019 NTT corp. All Rights Reserved.
4

Outline
• Partitioning concepts
• Partitioning in Postgres: the “old” way
• The coming of declarative partitioning
• Postgres 10 and 11: foundations
• Postgres 12: performance
Copyright©2019 NTT corp. All Rights Reserved.
5

Data growth
• Non-trivial applications accumulate and access data, usually with the help of a
database system. As an example, consider an application that allows users to
browse and rent rooms in different cities.
cities rooms bookingsusers
• Even with a rigorously vetted data model and normalization, data corresponding to
certain modeled entities may grow pretty quickly, likely due to organic growth in
application usage, which makes the operations on those data slower
Copyright©2019 NTT corp. All Rights Reserved.
6

Data growth
• Assuming relational model, this means tables for certain pieces of data growing too
big for the current configuration of the database. So for example, looking up a user
or updating a booking will start becoming slower, because the database has to
process ever growing amount of unrelated data.
users
rooms
cities
bookings
Copyright©2019 NTT corp. All Rights Reserved.
7

Handling data growth
• Up to a point, administrators can get away by increasing the configured resources
and/or migrating to faster hardware or by tuning the database.
• Database software could itself be improved to handle bigger tables more efficiently
with better algorithms and code-level optimizations.
users
rooms
cities
bookings
Copyright©2019 NTT corp. All Rights Reserved.
8

Handling data growth: Partitioning
• Another way of dealing with the resource-hungry data entities is to break them into
smaller pieces
• What is logically one entity in the application is manipulated as multiple,
individually-addressable objects in the database system. In our example, entities
users and bookings could each live as multiple tables in the database, with each
table storing an application-defined subset of the data.
users
‘A’ – ‘I’
users
‘J’ – ‘R’
users
‘S’ – ‘Z’
bookings
‘A’ – ‘I’
bookings
‘J’ – ‘R’
bookings
‘S’ – ‘Z’
Copyright©2019 NTT corp. All Rights Reserved.
9

Partitioning
• Note that the database is still going to have to store the same amount of data as
before, but the individual operations on those data can refer to only the partitions of
interest. For example, to look up a user whose name starts with ‘A’, the application
may issue the operation to only the relevant partition.
users
‘A’ – ‘I’
users
‘J’ – ‘R’
users
‘S’ – ‘Z’
bookings
‘A’ – ‘I’
bookings
‘J’ – ‘R’
bookings
‘S’ – ‘Z’
• In one approach, the partitioning is defined and implemented entirely in the
application code. Database only has to deal with multiple smaller tables.
Copyright©2019 NTT corp. All Rights Reserved.
10

Partitioning
• In another approach, partitioning is local to the database, whereby the application
references the logical entities which the database maps to their partitions. For
example, an update to the booking of a user whose name starts with ‘A’ is converted
by the database into an update of the relevant bookings partition.
users
‘A’ – ‘I’
users
‘J’ – ‘R’
users
‘S’ – ‘Z’
bookings
‘A’ – ‘I’
bookings
‘J’ – ‘R’
bookings
‘S’ – ‘Z’
users
bookings
• In this approach, the partitioning is defined by the application code and mostly
implemented in the database.
Copyright©2019 NTT corp. All Rights Reserved.
11

Partitioning
Other benefits of partitioning include, among others:
• Efficient archiving.
• Parallel processing
bookings
‘A’ – ‘I’
2016
bookings
‘A’ – ‘I’
2017
bookings
‘A’ – ‘I’
2018
bookings
‘A’ – ‘I’
bookings
‘A’ – ‘I’
2019
bookings
bookings
‘A’ – ‘I’
bookings
‘J’ – ‘R’
bookings
‘S’ – ‘Z’
Thread 1 Thread 2 Thread 3
Copyright©2019 NTT corp. All Rights Reserved.
12

Intrinsic partitioning
• Some natively clustered database systems also contain a concept of partitioning that
is wholly database-controlled.
• Such database systems are typically implemented in layers. For example, the layer
that implements data model is separate from the layer that implements storage.
Data model (tables, joins, foreign keys, etc.)
Storage (compression, replication, partitioning, etc.)
• The storage layer does try so that the partitioning is optimal for the application’s
workload, but it’s mostly automatic, that is not in the application’s control.
• The application directly interacts with only the data model layer
Copyright©2019 NTT corp. All Rights Reserved.
13

Outline
• Partitioning concepts
• Partitioning in Postgres: the “old” way
• The coming of declarative partitioning
• Postgres 10 and 11: foundations
• Postgres 12: performance
Copyright©2019 NTT corp. All Rights Reserved.
Partitioning in Postgres: the “old” way
• Postgres has supported in-database partitioning for a long time, even though the
optimizations for it came around much later (14 years ago).
• Traditional implementation of partitioning borrows from table inheritance, which
allows grouping related tables by inheriting from the same parent table/class.
• Operations on the generic parent table are internally applied to the more specific
child tables, even though the application may operate directly on the child tables.
users
students professors support_staff
14

Copyright©2019 NTT corp. All Rights Reserved.
Partitioning in Postgres: the “old” way
• The ability to group related tables under one name is very useful for the
requirements of partitioning, namely refer to multiple tables by one name.
• The child tables are partitions, which contain the actual data, whereas the parent
table is just a placeholder for the application code.
• The application issues operations on the parent table which Postgres internally
applies to the child tables.
users
users
‘A’ – ‘I’
users
‘J’ – ‘R’
users
‘S’ – ‘Z’
15

Copyright©2019 NTT corp. All Rights Reserved.
Partitioning in Postgres: the “old” way
• Moreover, Postgres can avoid processing irrelevant child tables with some additional
setup.
• To do so, application writer needs to describe, using a CHECK constraint defined on
each child table, the subset of the total data that the table contains. If the query’s
restrictions contradict the table’s CHECK constraint it won’t be scanned.
• This feature is called constraint exclusion and is present in Postgres since v8.1.
CHECK (tolower(first(name)) >= ‘A’
AND
tolower(first(name)) <= ‘I’)
CHECK (tolower(first(name)) >= ‘J’
AND
tolower(first(name)) <= ‘R’)
CHECK (tolower(first(name)) >= ‘S’
AND
tolower(first(name)) <= ‘Z’)
users
users
‘A’ – ‘I’
users
‘J’ – ‘R’
users
‘S’ – ‘Z’
16

Copyright©2019 NTT corp. All Rights Reserved.
Partitioning in Postgres: the “old” way
• While Postgres translates SELECT, UPDATE, and DELETE performed on the parent to
child tables, it doesn’t translate INSERT. Table inheritance proper doesn’t need such a
feature, because the child tables are typically directly manipulated in the application
code.
• A workaround for that is to write the application code to insert into child tables
directly or to use database triggers for INSERT redirection – define a trigger on the
parent table that catches any INSERTs done on it and the executed code performs
the INSERT on the correct child table by inspecting the input data.
17

Copyright©2019 NTT corp. All Rights Reserved.
Partitioning in Postgres: the “old” way
users
users
‘A’ – ‘I’
users
‘J’ – ‘R’
users
‘S’ – ‘Z’
CREATE TRIGGER users_insert_redirect
BEFORE INSERT ON users
FOR EACH ROW
EXECUTE PROCEDURE
users_insert_redirect()
18

Copyright©2019 NTT corp. All Rights Reserved.
• The child tables can also be foreign tables (starting in v9.5 released in 2016), so it
allows the partitions to span multiple machines, allowing for a primitive form of
scale-out.
19 

Partitioning in Postgres: the “old” way
users
users
‘A’ – ‘I’
users
‘J’ – ‘R’
users
‘S’ – ‘Z’
FDW FDW FDW
host1.network host2.network host3.network
Copyright©2019 NTT corp. All Rights Reserved.
Partitioning in Postgres: the “old” way
The “old” way gets the job done, but is inefficient in various ways:
• Poor usability, because the application writer still has to bear most of the
responsibility for making sure that partitioning is set up correctly
• Poor performance, especially as the number of partitions increases, because the
architecture of Postgres for processing queries is not really optimized for having to
consider many tables in the handling of a given query
20

Copyright©2019 NTT corp. All Rights Reserved.
21

Outline
• Partitioning concepts
• Partitioning in Postgres: the “old” way
• The coming of declarative partitioning
• Postgres 10 and 11: foundations
• Postgres 12: performance
Copyright©2019 NTT corp. All Rights Reserved.
Declarative partitioning
• It’s the same old multiple-tables-under-one-name architecture, but with a new
syntax to define partitions.
• Users still bear the responsibility for deciding what partitions to create and also for
creating them using the new commands (CREATE TABLE + partition clause), but
Postgres takes care of the rest
CHECK (tolower(first(name)) >= ‘A’
AND
tolower(first(name)) <= ‘I’)
CHECK (tolower(first(name)) >= ‘J’
AND
tolower(first(name)) <= ‘R’)
CHECK (tolower(first(name)) >= ‘S’
AND
tolower(first(name)) <= ‘Z’)
users
users
‘A’ – ‘I’
users
‘J’ – ‘R’
users
‘S’ – ‘Z’
22

Copyright©2019 NTT corp. All Rights Reserved.
Declarative partitioning
users
users
‘A’ – ‘I’
users
‘J’ – ‘R’
users
‘S’ – ‘Z’
CREATE TRIGGER users_insert_redirect
BEFORE INSERT ON users
FOR EACH ROW
EXECUTE PROCEDURE
users_insert_redirect()
• There’s no need for the trigger too.
23

Copyright©2019 NTT corp. All Rights Reserved.
Declarative partitioning
• That’s really all there is to the “declarative” qualifier – the new syntax and the
out-of-the-box enforcement of partitioning.
• Most new features around declarative partitions have more to do with easier
administration of partitions than improving the basic architecture of partitioning.
• The bright side is that Postgres is able to capture some partitioning-specific
information about tables thanks to the new syntax, which is stored in
partitioning-specific system catalog tables. That information allows Postgres to
better optimize queries over declarative partitions compared to “old”-style
partitions.
24

Copyright©2019 NTT corp. All Rights Reserved.
Declarative partitioning
• The number of partitions that can be reasonably handled is also bigger now, though
not because we completely solved the earlier mentioned architectural problems of
Postgres that prevents it from handling many tables well, but because the newly
enabled optimizations allow those problems to be papered over, for now at least.
• There is some effort focused on solving the fundamental architectural problems,
now more than ever.
25

Copyright©2019 NTT corp. All Rights Reserved.
26

Outline
• Partitioning concepts
• Partitioning in Postgres: the “old” way
• The coming of declarative partitioning
• Postgres 10 and 11: foundations
• Postgres 12: performance
Copyright©2019 NTT corp. All Rights Reserved.
• Postgres 10 introduced declarative partitioning, with the basics:
– The syntax for RANGE and LIST partitioning
– Automatic partition constraint enforcement
– INSERT and COPY (except for foreign table partitions)
• Things that can be done aren’t new compared to “old”-style partitioning, but the
setup consists of much less chores, as described.
• Bulk INSERT operation (including COPY) is at least an order of magnitude faster than
with a plpgsql trigger.
• Not all rainbows… With the introduction of a new table type (“partitioned tables”),
supporting the definition of various database objects on those tables would require
some careful consideration, so it wasn’t implemented in Postgres 10. Users get an
unsupported feature errors instead.
27 

Postgres 10
Copyright©2019 NTT corp. All Rights Reserved.
• Examples of such unintuitive limitations are the inability to define indexes,
index-based constraints, foreign key constraints, row-level triggers, etc. on
partitioned tables. Users are not prevented from defining these objects directly on
partitions, but that’s extra work.
• Other limitations stem from the expectations that people have developed after
working for many years with the “old”-style partitioning and having to solve a few
issues by themselves, like:
– Transparent handling of cross-partition UPDATE operations
– Automatic creation of partitions for new keys or a “default” partition that would
capture keys for which there is no partition defined
• People would write triggers and database-external scripts to handle those issues as
they’d see fit, but the expectation is that at least some of those things are handled
inside the database.
28 

Postgres 10
Copyright©2019 NTT corp. All Rights Reserved.
• A pretty significant release for partitioning
• Most of the restrictions on partitioned table DDL are lifted:
– Indexes can be defined
– UNIQUE constraints can be defined, provided the UNIQUE key includes the
partition key
– Foreign keys can be defined, although foreign keys cannot point to partitioned
tables
– Row-level triggers can be defined
• For each of the above, like how CHECK and NOT NULL constraints work, the object
defined on a partitioned table is also defined on all of the existing partitions, where it
is actually enforced. The partitioned table’s copy is simply a template for the future
partitions.
29 

Postgres 11
Copyright©2019 NTT corp. All Rights Reserved.
• There are new partitioning features too, such as:
– HASH partitions
– DEFAULT partition (boundless partition)
– Transparent handling of cross-partition UPDATE
– INSERT/COPY to foreign table partitions
• The following new techniques are now applied when processing queries involving
partitions.
– Partition pruning (superseding constraint exclusion)
– Application of partition pruning during execution (in addition to during planning)
– Partitionwise join (when joining co-partitioned tables, join individual partitions)
– Partitionwise aggregate (perform aggregates on individual partitions)
30 

Postgres 11
Copyright©2019 NTT corp. All Rights Reserved.
• Overall, the usability of the “new” partitioning has far surpassed that of the
“old”-style partitioning with the release of Postgres 11, with new features that would
be hard or outright impossible to emulate with the latter.
• However, as noted earlier, the basic architecture that’s being used hasn’t changed
much, which puts the upper limit on the number of partitions that can be used
somewhere around low 100s, because any given query would need to touch them
all.
• This results in an unacceptable performance profile, especially for workloads that
contain single-record queries on partitioned tables, which are ideally handled by
touching only the partition that contains the record.
31 

Postgres 11
Copyright©2019 NTT corp. All Rights Reserved.
32

Outline
• Partitioning concepts
• Partitioning in Postgres: the “old” way
• The coming of declarative partitioning
• Postgres 10 and 11: foundations
• Postgres 12: performance
Copyright©2019 NTT corp. All Rights Reserved.
• Although a lot of effort was focused on refactoring the partitioning code base to
reduce partitioning overheads in processing common queries, a bunch of new
features have landed:
– Foreign keys can now reference partitioned tables
– Partition bound syntax now allows specifying arbitrary expressions, in addition
to just literal values that the earlier syntax allowed
– More intuitive handling of tablespace assigned to partitioned tables
– psql commands for better listing of partitions
– Collection of functions to introspect partition hierarchy
33 

Postgres 12
Copyright©2019 NTT corp. All Rights Reserved.
• ATTACH PARTITION command no longer blocks queries, which makes adding new
partitions a less disruptive operation than before, a huge operational plus.
• Performance has been improved significantly by rewriting various pieces of code to
process only the partitions that are touched by a query. So where previously,
single-record queries would run in the amount of time that is proportional to the
number of partitions, that is no longer the case.
• COPY couldn’t use certain low-level optimizations like per-partition row-buffering
for partitioned tables, which has been fixed. That boosts COPY’s performance
significantly for the common set of loading patterns.
• Planner can now avoid doing explicit sorts for queries that need ordered data from
certain partitioned tables, mainly range partitioned tables.
34 

Postgres 12
Copyright©2019 NTT corp. All Rights Reserved.
• It wouldn’t be totally inappropriate to say that say that Postgres has decent support
for partitioning at this point. ☺
• Many people have recently wished to see partition creation itself be automated,
which seems like an area that the next set of usability improvements might come
from.
• One more avenue for future improvements is to offer better support for partitioning
in scale-out clusters, from both usability and performance standpoints.
35 

Postgres 12
Copyright©2019 NTT corp. All Rights Reserved.
• Auto-creation of partitions
• Global indexes on partitioned tables
• Teach planner to consider partitioned indexes
• Optimizing for non-single-record queries
36 

Future enhancements
Copyright©2019 NTT corp. All Rights Reserved.
In this talk, the following topics were covered:
• Partitioning concepts
• The “old” Postgres partitioning
• Declarative partitioning
• Progress of development of declarative partitioning
• Future enhancements
37 

Summary
Copyright©2019 NTT corp. All Rights Reserved.
• For listening to this talk ☺
• To Postgres contributors for writing code, reviewing code, reporting feedback/bugs
related to partitioning ☺
• Questions?
38 

Thank you!

More Related Content

What's hot

How-To: Zero Downtime Migrations from Oracle to a Cloud-Native PostgreSQL
How-To: Zero Downtime Migrations from Oracle to a Cloud-Native PostgreSQLHow-To: Zero Downtime Migrations from Oracle to a Cloud-Native PostgreSQL
How-To: Zero Downtime Migrations from Oracle to a Cloud-Native PostgreSQL
YugabyteDB
 
How to Design for Database High Availability
How to Design for Database High AvailabilityHow to Design for Database High Availability
How to Design for Database High Availability
EDB
 
Greenplum Roadmap
Greenplum RoadmapGreenplum Roadmap
Greenplum Roadmap
VMware Tanzu Korea
 
Present & Future of Greenplum Database A massively parallel Postgres Database...
Present & Future of Greenplum Database A massively parallel Postgres Database...Present & Future of Greenplum Database A massively parallel Postgres Database...
Present & Future of Greenplum Database A massively parallel Postgres Database...
VMware Tanzu
 
OLTP+OLAP=HTAP
 OLTP+OLAP=HTAP OLTP+OLAP=HTAP
OLTP+OLAP=HTAP
EDB
 
Agile Data Science on Greenplum Using Airflow - Greenplum Summit 2019
Agile Data Science on Greenplum Using Airflow - Greenplum Summit 2019Agile Data Science on Greenplum Using Airflow - Greenplum Summit 2019
Agile Data Science on Greenplum Using Airflow - Greenplum Summit 2019
VMware Tanzu
 
PostgreSQL 13 is Coming - Find Out What's New!
PostgreSQL 13 is Coming - Find Out What's New!PostgreSQL 13 is Coming - Find Out What's New!
PostgreSQL 13 is Coming - Find Out What's New!
EDB
 
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォームPivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Masayuki Matsushita
 
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
Taro L. Saito
 
Greenplum-Spark November 2018
Greenplum-Spark November 2018Greenplum-Spark November 2018
Greenplum-Spark November 2018
KongYew Chan, MBA
 
Replacing Oracle with EDB Postgres
Replacing Oracle with EDB PostgresReplacing Oracle with EDB Postgres
Replacing Oracle with EDB Postgres
EDB
 
Greenplum Database Overview
Greenplum Database Overview Greenplum Database Overview
Greenplum Database Overview
EMC
 
Online Upgrade Using Logical Replication
 Online Upgrade Using Logical Replication Online Upgrade Using Logical Replication
Online Upgrade Using Logical Replication
EDB
 
Greenplum Architecture
Greenplum ArchitectureGreenplum Architecture
Greenplum Architecture
Alexey Grishchenko
 
New and Improved Features in PostgreSQL 13
New and Improved Features in PostgreSQL 13New and Improved Features in PostgreSQL 13
New and Improved Features in PostgreSQL 13
EDB
 
Greenplum for Kubernetes - Greenplum Summit 2019
Greenplum for Kubernetes - Greenplum Summit 2019Greenplum for Kubernetes - Greenplum Summit 2019
Greenplum for Kubernetes - Greenplum Summit 2019
VMware Tanzu
 
Installing Postgres on Linux
Installing Postgres on LinuxInstalling Postgres on Linux
Installing Postgres on Linux
EDB
 
Machine Learning, Graph, Text and Geospatial on Postgres and Greenplum - Gree...
Machine Learning, Graph, Text and Geospatial on Postgres and Greenplum - Gree...Machine Learning, Graph, Text and Geospatial on Postgres and Greenplum - Gree...
Machine Learning, Graph, Text and Geospatial on Postgres and Greenplum - Gree...
VMware Tanzu
 
Running Stateful Apps on Kubernetes
Running Stateful Apps on KubernetesRunning Stateful Apps on Kubernetes
Running Stateful Apps on Kubernetes
Yugabyte
 
Postgres Deployment Automation with Terraform and Ansible
 Postgres Deployment Automation with Terraform and Ansible Postgres Deployment Automation with Terraform and Ansible
Postgres Deployment Automation with Terraform and Ansible
EDB
 

What's hot (20)

How-To: Zero Downtime Migrations from Oracle to a Cloud-Native PostgreSQL
How-To: Zero Downtime Migrations from Oracle to a Cloud-Native PostgreSQLHow-To: Zero Downtime Migrations from Oracle to a Cloud-Native PostgreSQL
How-To: Zero Downtime Migrations from Oracle to a Cloud-Native PostgreSQL
 
How to Design for Database High Availability
How to Design for Database High AvailabilityHow to Design for Database High Availability
How to Design for Database High Availability
 
Greenplum Roadmap
Greenplum RoadmapGreenplum Roadmap
Greenplum Roadmap
 
Present & Future of Greenplum Database A massively parallel Postgres Database...
Present & Future of Greenplum Database A massively parallel Postgres Database...Present & Future of Greenplum Database A massively parallel Postgres Database...
Present & Future of Greenplum Database A massively parallel Postgres Database...
 
OLTP+OLAP=HTAP
 OLTP+OLAP=HTAP OLTP+OLAP=HTAP
OLTP+OLAP=HTAP
 
Agile Data Science on Greenplum Using Airflow - Greenplum Summit 2019
Agile Data Science on Greenplum Using Airflow - Greenplum Summit 2019Agile Data Science on Greenplum Using Airflow - Greenplum Summit 2019
Agile Data Science on Greenplum Using Airflow - Greenplum Summit 2019
 
PostgreSQL 13 is Coming - Find Out What's New!
PostgreSQL 13 is Coming - Find Out What's New!PostgreSQL 13 is Coming - Find Out What's New!
PostgreSQL 13 is Coming - Find Out What's New!
 
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォームPivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
 
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
 
Greenplum-Spark November 2018
Greenplum-Spark November 2018Greenplum-Spark November 2018
Greenplum-Spark November 2018
 
Replacing Oracle with EDB Postgres
Replacing Oracle with EDB PostgresReplacing Oracle with EDB Postgres
Replacing Oracle with EDB Postgres
 
Greenplum Database Overview
Greenplum Database Overview Greenplum Database Overview
Greenplum Database Overview
 
Online Upgrade Using Logical Replication
 Online Upgrade Using Logical Replication Online Upgrade Using Logical Replication
Online Upgrade Using Logical Replication
 
Greenplum Architecture
Greenplum ArchitectureGreenplum Architecture
Greenplum Architecture
 
New and Improved Features in PostgreSQL 13
New and Improved Features in PostgreSQL 13New and Improved Features in PostgreSQL 13
New and Improved Features in PostgreSQL 13
 
Greenplum for Kubernetes - Greenplum Summit 2019
Greenplum for Kubernetes - Greenplum Summit 2019Greenplum for Kubernetes - Greenplum Summit 2019
Greenplum for Kubernetes - Greenplum Summit 2019
 
Installing Postgres on Linux
Installing Postgres on LinuxInstalling Postgres on Linux
Installing Postgres on Linux
 
Machine Learning, Graph, Text and Geospatial on Postgres and Greenplum - Gree...
Machine Learning, Graph, Text and Geospatial on Postgres and Greenplum - Gree...Machine Learning, Graph, Text and Geospatial on Postgres and Greenplum - Gree...
Machine Learning, Graph, Text and Geospatial on Postgres and Greenplum - Gree...
 
Running Stateful Apps on Kubernetes
Running Stateful Apps on KubernetesRunning Stateful Apps on Kubernetes
Running Stateful Apps on Kubernetes
 
Postgres Deployment Automation with Terraform and Ansible
 Postgres Deployment Automation with Terraform and Ansible Postgres Deployment Automation with Terraform and Ansible
Postgres Deployment Automation with Terraform and Ansible
 

Similar to PGConf.ASIA 2019 Bali - Partitioning in PostgreSQL - Amit Langote

Best Practices for Monitoring Postgres
Best Practices for Monitoring Postgres Best Practices for Monitoring Postgres
Best Practices for Monitoring Postgres
EDB
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper Dive
Justin Reock
 
IRJET- Top-K Query Processing using Top Order Preserving Encryption (TOPE)
IRJET- Top-K Query Processing using Top Order Preserving Encryption (TOPE)IRJET- Top-K Query Processing using Top Order Preserving Encryption (TOPE)
IRJET- Top-K Query Processing using Top Order Preserving Encryption (TOPE)
IRJET Journal
 
AWS Earth and Space 2018 - Element 84 Processing and Streaming GOES-16 Data...
AWS Earth and Space 2018 -   Element 84 Processing and Streaming GOES-16 Data...AWS Earth and Space 2018 -   Element 84 Processing and Streaming GOES-16 Data...
AWS Earth and Space 2018 - Element 84 Processing and Streaming GOES-16 Data...
Dan Pilone
 
Aerospike Data Modeling - Meetup Dec 2019
Aerospike Data Modeling - Meetup Dec 2019Aerospike Data Modeling - Meetup Dec 2019
Aerospike Data Modeling - Meetup Dec 2019
Aerospike
 
Theresa Melvin, HP Enterprise - IOT/AI/ML at Hyperscale - how to go faster wi...
Theresa Melvin, HP Enterprise - IOT/AI/ML at Hyperscale - how to go faster wi...Theresa Melvin, HP Enterprise - IOT/AI/ML at Hyperscale - how to go faster wi...
Theresa Melvin, HP Enterprise - IOT/AI/ML at Hyperscale - how to go faster wi...
Aerospike
 
Python & Serverless: Refactor your monolith piece by piece
Python & Serverless: Refactor your monolith piece by piecePython & Serverless: Refactor your monolith piece by piece
Python & Serverless: Refactor your monolith piece by piece
Giuseppe Vallarelli
 
Accel series 2020_winter-en
Accel series 2020_winter-enAccel series 2020_winter-en
Accel series 2020_winter-en
NTTDATA INTRAMART
 
SBI Securities Case Study
SBI Securities Case StudySBI Securities Case Study
SBI Securities Case Study
VMware Tanzu
 
IRJET- ALPYNE - A Grid Computing Framework
IRJET- ALPYNE - A Grid Computing FrameworkIRJET- ALPYNE - A Grid Computing Framework
IRJET- ALPYNE - A Grid Computing Framework
IRJET Journal
 
IDERA Live | The Ever Growing Science of Database Migrations
IDERA Live | The Ever Growing Science of Database MigrationsIDERA Live | The Ever Growing Science of Database Migrations
IDERA Live | The Ever Growing Science of Database Migrations
IDERA Software
 
Nasscom Presentation Microservices Database Architecture By Tudip
Nasscom Presentation  Microservices Database Architecture By TudipNasscom Presentation  Microservices Database Architecture By Tudip
Nasscom Presentation Microservices Database Architecture By Tudip
Arti Kadu
 
DIGITAL TOLL TAX SYSTEM
DIGITAL TOLL TAX SYSTEMDIGITAL TOLL TAX SYSTEM
DIGITAL TOLL TAX SYSTEM
AmitSaha123
 
Managing Postgres at Scale With Postgres Enterprise Manager
Managing Postgres at Scale With Postgres Enterprise ManagerManaging Postgres at Scale With Postgres Enterprise Manager
Managing Postgres at Scale With Postgres Enterprise Manager
EDB
 
Graph-Based Identity Resolution at Scale
Graph-Based Identity Resolution at ScaleGraph-Based Identity Resolution at Scale
Graph-Based Identity Resolution at Scale
TigerGraph
 
Hazelcast Jet - January 08, 2018
Hazelcast Jet - January 08, 2018Hazelcast Jet - January 08, 2018
Hazelcast Jet - January 08, 2018
Rahul Gupta
 
How Lucene Powers the LinkedIn Segmentation and Targeting Platform
How Lucene Powers the LinkedIn Segmentation and Targeting PlatformHow Lucene Powers the LinkedIn Segmentation and Targeting Platform
How Lucene Powers the LinkedIn Segmentation and Targeting Platform
lucenerevolution
 
Advanced angular
Advanced angularAdvanced angular
Advanced angular
Sumit Kumar Rakshit
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science Platform
Decision Science Community
 
Gartner pace and bi-modal models
Gartner pace and bi-modal modelsGartner pace and bi-modal models
Gartner pace and bi-modal models
Ric Lukasiewicz
 

Similar to PGConf.ASIA 2019 Bali - Partitioning in PostgreSQL - Amit Langote (20)

Best Practices for Monitoring Postgres
Best Practices for Monitoring Postgres Best Practices for Monitoring Postgres
Best Practices for Monitoring Postgres
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper Dive
 
IRJET- Top-K Query Processing using Top Order Preserving Encryption (TOPE)
IRJET- Top-K Query Processing using Top Order Preserving Encryption (TOPE)IRJET- Top-K Query Processing using Top Order Preserving Encryption (TOPE)
IRJET- Top-K Query Processing using Top Order Preserving Encryption (TOPE)
 
AWS Earth and Space 2018 - Element 84 Processing and Streaming GOES-16 Data...
AWS Earth and Space 2018 -   Element 84 Processing and Streaming GOES-16 Data...AWS Earth and Space 2018 -   Element 84 Processing and Streaming GOES-16 Data...
AWS Earth and Space 2018 - Element 84 Processing and Streaming GOES-16 Data...
 
Aerospike Data Modeling - Meetup Dec 2019
Aerospike Data Modeling - Meetup Dec 2019Aerospike Data Modeling - Meetup Dec 2019
Aerospike Data Modeling - Meetup Dec 2019
 
Theresa Melvin, HP Enterprise - IOT/AI/ML at Hyperscale - how to go faster wi...
Theresa Melvin, HP Enterprise - IOT/AI/ML at Hyperscale - how to go faster wi...Theresa Melvin, HP Enterprise - IOT/AI/ML at Hyperscale - how to go faster wi...
Theresa Melvin, HP Enterprise - IOT/AI/ML at Hyperscale - how to go faster wi...
 
Python & Serverless: Refactor your monolith piece by piece
Python & Serverless: Refactor your monolith piece by piecePython & Serverless: Refactor your monolith piece by piece
Python & Serverless: Refactor your monolith piece by piece
 
Accel series 2020_winter-en
Accel series 2020_winter-enAccel series 2020_winter-en
Accel series 2020_winter-en
 
SBI Securities Case Study
SBI Securities Case StudySBI Securities Case Study
SBI Securities Case Study
 
IRJET- ALPYNE - A Grid Computing Framework
IRJET- ALPYNE - A Grid Computing FrameworkIRJET- ALPYNE - A Grid Computing Framework
IRJET- ALPYNE - A Grid Computing Framework
 
IDERA Live | The Ever Growing Science of Database Migrations
IDERA Live | The Ever Growing Science of Database MigrationsIDERA Live | The Ever Growing Science of Database Migrations
IDERA Live | The Ever Growing Science of Database Migrations
 
Nasscom Presentation Microservices Database Architecture By Tudip
Nasscom Presentation  Microservices Database Architecture By TudipNasscom Presentation  Microservices Database Architecture By Tudip
Nasscom Presentation Microservices Database Architecture By Tudip
 
DIGITAL TOLL TAX SYSTEM
DIGITAL TOLL TAX SYSTEMDIGITAL TOLL TAX SYSTEM
DIGITAL TOLL TAX SYSTEM
 
Managing Postgres at Scale With Postgres Enterprise Manager
Managing Postgres at Scale With Postgres Enterprise ManagerManaging Postgres at Scale With Postgres Enterprise Manager
Managing Postgres at Scale With Postgres Enterprise Manager
 
Graph-Based Identity Resolution at Scale
Graph-Based Identity Resolution at ScaleGraph-Based Identity Resolution at Scale
Graph-Based Identity Resolution at Scale
 
Hazelcast Jet - January 08, 2018
Hazelcast Jet - January 08, 2018Hazelcast Jet - January 08, 2018
Hazelcast Jet - January 08, 2018
 
How Lucene Powers the LinkedIn Segmentation and Targeting Platform
How Lucene Powers the LinkedIn Segmentation and Targeting PlatformHow Lucene Powers the LinkedIn Segmentation and Targeting Platform
How Lucene Powers the LinkedIn Segmentation and Targeting Platform
 
Advanced angular
Advanced angularAdvanced angular
Advanced angular
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science Platform
 
Gartner pace and bi-modal models
Gartner pace and bi-modal modelsGartner pace and bi-modal models
Gartner pace and bi-modal models
 

More from Equnix Business Solutions

Yang perlu kita ketahui Untuk memahami aspek utama IT dalam bisnis_.pdf
Yang perlu kita ketahui Untuk memahami aspek utama IT dalam bisnis_.pdfYang perlu kita ketahui Untuk memahami aspek utama IT dalam bisnis_.pdf
Yang perlu kita ketahui Untuk memahami aspek utama IT dalam bisnis_.pdf
Equnix Business Solutions
 
Kebocoran Data_ Tindakan Hacker atau Kriminal_ Bagaimana kita mengantisipasi...
Kebocoran Data_  Tindakan Hacker atau Kriminal_ Bagaimana kita mengantisipasi...Kebocoran Data_  Tindakan Hacker atau Kriminal_ Bagaimana kita mengantisipasi...
Kebocoran Data_ Tindakan Hacker atau Kriminal_ Bagaimana kita mengantisipasi...
Equnix Business Solutions
 
Kuliah Tamu - Dari Proses Bisnis Menuju Struktur Data.pdf
Kuliah Tamu - Dari Proses Bisnis Menuju Struktur Data.pdfKuliah Tamu - Dari Proses Bisnis Menuju Struktur Data.pdf
Kuliah Tamu - Dari Proses Bisnis Menuju Struktur Data.pdf
Equnix Business Solutions
 
EWTT22_ Apakah Open Source Cocok digunakan dalam Korporasi_.pdf
EWTT22_ Apakah Open Source Cocok digunakan dalam Korporasi_.pdfEWTT22_ Apakah Open Source Cocok digunakan dalam Korporasi_.pdf
EWTT22_ Apakah Open Source Cocok digunakan dalam Korporasi_.pdf
Equnix Business Solutions
 
Oracle to PostgreSQL, Challenges to Opportunity.pdf
Oracle to PostgreSQL, Challenges to Opportunity.pdfOracle to PostgreSQL, Challenges to Opportunity.pdf
Oracle to PostgreSQL, Challenges to Opportunity.pdf
Equnix Business Solutions
 
[EWTT2022] Strategi Implementasi Database dalam Microservice Architecture.pdf
[EWTT2022] Strategi Implementasi Database dalam Microservice Architecture.pdf[EWTT2022] Strategi Implementasi Database dalam Microservice Architecture.pdf
[EWTT2022] Strategi Implementasi Database dalam Microservice Architecture.pdf
Equnix Business Solutions
 
PostgreSQL as Enterprise Solution v1.1.pdf
PostgreSQL as Enterprise Solution v1.1.pdfPostgreSQL as Enterprise Solution v1.1.pdf
PostgreSQL as Enterprise Solution v1.1.pdf
Equnix Business Solutions
 
Webinar2021 - Does HA Can Help You Balance Your Load-.pdf
Webinar2021 - Does HA Can Help You Balance Your Load-.pdfWebinar2021 - Does HA Can Help You Balance Your Load-.pdf
Webinar2021 - Does HA Can Help You Balance Your Load-.pdf
Equnix Business Solutions
 
Webinar2021 - In-Memory Database, is it really faster-.pdf
Webinar2021 - In-Memory Database, is it really faster-.pdfWebinar2021 - In-Memory Database, is it really faster-.pdf
Webinar2021 - In-Memory Database, is it really faster-.pdf
Equnix Business Solutions
 
EQUNIX - PPT 11DB-Postgres™.pdf
EQUNIX - PPT 11DB-Postgres™.pdfEQUNIX - PPT 11DB-Postgres™.pdf
EQUNIX - PPT 11DB-Postgres™.pdf
Equnix Business Solutions
 
equpos - General Presentation v20230420.pptx
equpos - General Presentation v20230420.pptxequpos - General Presentation v20230420.pptx
equpos - General Presentation v20230420.pptx
Equnix Business Solutions
 
Equnix Appliance- Jawaban terbaik untuk kebutuhan komputasi yang mumpuni.pdf
Equnix Appliance- Jawaban terbaik untuk kebutuhan komputasi yang mumpuni.pdfEqunix Appliance- Jawaban terbaik untuk kebutuhan komputasi yang mumpuni.pdf
Equnix Appliance- Jawaban terbaik untuk kebutuhan komputasi yang mumpuni.pdf
Equnix Business Solutions
 
OSPX - Professional PostgreSQL Certification Scheme v20201111.pdf
OSPX - Professional PostgreSQL Certification Scheme v20201111.pdfOSPX - Professional PostgreSQL Certification Scheme v20201111.pdf
OSPX - Professional PostgreSQL Certification Scheme v20201111.pdf
Equnix Business Solutions
 
Equnix Company Profile v20230329.pdf
Equnix Company Profile v20230329.pdfEqunix Company Profile v20230329.pdf
Equnix Company Profile v20230329.pdf
Equnix Business Solutions
 
PGConf.ASIA 2019 - The Future of TDEforPG - Taiki Kondo
PGConf.ASIA 2019 - The Future of TDEforPG - Taiki KondoPGConf.ASIA 2019 - The Future of TDEforPG - Taiki Kondo
PGConf.ASIA 2019 - The Future of TDEforPG - Taiki Kondo
Equnix Business Solutions
 
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky HaryadiPGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
Equnix Business Solutions
 
PGConf.ASIA 2019 Bali - Mission Critical Production High Availability Postgre...
PGConf.ASIA 2019 Bali - Mission Critical Production High Availability Postgre...PGConf.ASIA 2019 Bali - Mission Critical Production High Availability Postgre...
PGConf.ASIA 2019 Bali - Mission Critical Production High Availability Postgre...
Equnix Business Solutions
 
PGConf.ASIA 2019 Bali - Keynote Speech 2 - Ivan Pachenko
PGConf.ASIA 2019 Bali - Keynote Speech 2 - Ivan PachenkoPGConf.ASIA 2019 Bali - Keynote Speech 2 - Ivan Pachenko
PGConf.ASIA 2019 Bali - Keynote Speech 2 - Ivan Pachenko
Equnix Business Solutions
 
PGConf.ASIA 2019 Bali - Keynote Speech 1 - Bruce Momjian
PGConf.ASIA 2019 Bali - Keynote Speech 1 - Bruce MomjianPGConf.ASIA 2019 Bali - Keynote Speech 1 - Bruce Momjian
PGConf.ASIA 2019 Bali - Keynote Speech 1 - Bruce Momjian
Equnix Business Solutions
 
PGConf.ASIA 2019 Bali - Modern PostgreSQL Monitoring & Diagnostics - Mahadeva...
PGConf.ASIA 2019 Bali - Modern PostgreSQL Monitoring & Diagnostics - Mahadeva...PGConf.ASIA 2019 Bali - Modern PostgreSQL Monitoring & Diagnostics - Mahadeva...
PGConf.ASIA 2019 Bali - Modern PostgreSQL Monitoring & Diagnostics - Mahadeva...
Equnix Business Solutions
 

More from Equnix Business Solutions (20)

Yang perlu kita ketahui Untuk memahami aspek utama IT dalam bisnis_.pdf
Yang perlu kita ketahui Untuk memahami aspek utama IT dalam bisnis_.pdfYang perlu kita ketahui Untuk memahami aspek utama IT dalam bisnis_.pdf
Yang perlu kita ketahui Untuk memahami aspek utama IT dalam bisnis_.pdf
 
Kebocoran Data_ Tindakan Hacker atau Kriminal_ Bagaimana kita mengantisipasi...
Kebocoran Data_  Tindakan Hacker atau Kriminal_ Bagaimana kita mengantisipasi...Kebocoran Data_  Tindakan Hacker atau Kriminal_ Bagaimana kita mengantisipasi...
Kebocoran Data_ Tindakan Hacker atau Kriminal_ Bagaimana kita mengantisipasi...
 
Kuliah Tamu - Dari Proses Bisnis Menuju Struktur Data.pdf
Kuliah Tamu - Dari Proses Bisnis Menuju Struktur Data.pdfKuliah Tamu - Dari Proses Bisnis Menuju Struktur Data.pdf
Kuliah Tamu - Dari Proses Bisnis Menuju Struktur Data.pdf
 
EWTT22_ Apakah Open Source Cocok digunakan dalam Korporasi_.pdf
EWTT22_ Apakah Open Source Cocok digunakan dalam Korporasi_.pdfEWTT22_ Apakah Open Source Cocok digunakan dalam Korporasi_.pdf
EWTT22_ Apakah Open Source Cocok digunakan dalam Korporasi_.pdf
 
Oracle to PostgreSQL, Challenges to Opportunity.pdf
Oracle to PostgreSQL, Challenges to Opportunity.pdfOracle to PostgreSQL, Challenges to Opportunity.pdf
Oracle to PostgreSQL, Challenges to Opportunity.pdf
 
[EWTT2022] Strategi Implementasi Database dalam Microservice Architecture.pdf
[EWTT2022] Strategi Implementasi Database dalam Microservice Architecture.pdf[EWTT2022] Strategi Implementasi Database dalam Microservice Architecture.pdf
[EWTT2022] Strategi Implementasi Database dalam Microservice Architecture.pdf
 
PostgreSQL as Enterprise Solution v1.1.pdf
PostgreSQL as Enterprise Solution v1.1.pdfPostgreSQL as Enterprise Solution v1.1.pdf
PostgreSQL as Enterprise Solution v1.1.pdf
 
Webinar2021 - Does HA Can Help You Balance Your Load-.pdf
Webinar2021 - Does HA Can Help You Balance Your Load-.pdfWebinar2021 - Does HA Can Help You Balance Your Load-.pdf
Webinar2021 - Does HA Can Help You Balance Your Load-.pdf
 
Webinar2021 - In-Memory Database, is it really faster-.pdf
Webinar2021 - In-Memory Database, is it really faster-.pdfWebinar2021 - In-Memory Database, is it really faster-.pdf
Webinar2021 - In-Memory Database, is it really faster-.pdf
 
EQUNIX - PPT 11DB-Postgres™.pdf
EQUNIX - PPT 11DB-Postgres™.pdfEQUNIX - PPT 11DB-Postgres™.pdf
EQUNIX - PPT 11DB-Postgres™.pdf
 
equpos - General Presentation v20230420.pptx
equpos - General Presentation v20230420.pptxequpos - General Presentation v20230420.pptx
equpos - General Presentation v20230420.pptx
 
Equnix Appliance- Jawaban terbaik untuk kebutuhan komputasi yang mumpuni.pdf
Equnix Appliance- Jawaban terbaik untuk kebutuhan komputasi yang mumpuni.pdfEqunix Appliance- Jawaban terbaik untuk kebutuhan komputasi yang mumpuni.pdf
Equnix Appliance- Jawaban terbaik untuk kebutuhan komputasi yang mumpuni.pdf
 
OSPX - Professional PostgreSQL Certification Scheme v20201111.pdf
OSPX - Professional PostgreSQL Certification Scheme v20201111.pdfOSPX - Professional PostgreSQL Certification Scheme v20201111.pdf
OSPX - Professional PostgreSQL Certification Scheme v20201111.pdf
 
Equnix Company Profile v20230329.pdf
Equnix Company Profile v20230329.pdfEqunix Company Profile v20230329.pdf
Equnix Company Profile v20230329.pdf
 
PGConf.ASIA 2019 - The Future of TDEforPG - Taiki Kondo
PGConf.ASIA 2019 - The Future of TDEforPG - Taiki KondoPGConf.ASIA 2019 - The Future of TDEforPG - Taiki Kondo
PGConf.ASIA 2019 - The Future of TDEforPG - Taiki Kondo
 
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky HaryadiPGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
PGConf.ASIA 2019 - High Availability, 10 Seconds Failover - Lucky Haryadi
 
PGConf.ASIA 2019 Bali - Mission Critical Production High Availability Postgre...
PGConf.ASIA 2019 Bali - Mission Critical Production High Availability Postgre...PGConf.ASIA 2019 Bali - Mission Critical Production High Availability Postgre...
PGConf.ASIA 2019 Bali - Mission Critical Production High Availability Postgre...
 
PGConf.ASIA 2019 Bali - Keynote Speech 2 - Ivan Pachenko
PGConf.ASIA 2019 Bali - Keynote Speech 2 - Ivan PachenkoPGConf.ASIA 2019 Bali - Keynote Speech 2 - Ivan Pachenko
PGConf.ASIA 2019 Bali - Keynote Speech 2 - Ivan Pachenko
 
PGConf.ASIA 2019 Bali - Keynote Speech 1 - Bruce Momjian
PGConf.ASIA 2019 Bali - Keynote Speech 1 - Bruce MomjianPGConf.ASIA 2019 Bali - Keynote Speech 1 - Bruce Momjian
PGConf.ASIA 2019 Bali - Keynote Speech 1 - Bruce Momjian
 
PGConf.ASIA 2019 Bali - Modern PostgreSQL Monitoring & Diagnostics - Mahadeva...
PGConf.ASIA 2019 Bali - Modern PostgreSQL Monitoring & Diagnostics - Mahadeva...PGConf.ASIA 2019 Bali - Modern PostgreSQL Monitoring & Diagnostics - Mahadeva...
PGConf.ASIA 2019 Bali - Modern PostgreSQL Monitoring & Diagnostics - Mahadeva...
 

Recently uploaded

Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 

Recently uploaded (20)

Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 

PGConf.ASIA 2019 Bali - Partitioning in PostgreSQL - Amit Langote

  • 1. Copyright©2019 NTT corp. All Rights Reserved. Partitioning in Postgres How Far We’ve Come Amit Langote NTT OSS Center PGConf.ASIA 2019, Bali Slides URL: https://amitlan.github.io/files/pgconf-asia-2019.pdf
  • 2. Copyright©2019 NTT corp. All Rights Reserved. 2
 About the speaker • Live and work in Tokyo. • Contribute to community Postgres, have written feature patches, bug fixes, review other people’s code. • Contributed to features like declarative partitioning, command progress reporting, among others. In recent releases, worked primarily on improving the performance and the scalability of partitioning.
  • 3. Copyright©2019 NTT corp. All Rights Reserved. 3
 Outline • Partitioning concepts • Partitioning in Postgres: the “old” way • The coming of declarative partitioning • Postgres 10 and 11: foundations • Postgres 12: performance
  • 4. Copyright©2019 NTT corp. All Rights Reserved. 4
 Outline • Partitioning concepts • Partitioning in Postgres: the “old” way • The coming of declarative partitioning • Postgres 10 and 11: foundations • Postgres 12: performance
  • 5. Copyright©2019 NTT corp. All Rights Reserved. 5
 Data growth • Non-trivial applications accumulate and access data, usually with the help of a database system. As an example, consider an application that allows users to browse and rent rooms in different cities. cities rooms bookingsusers • Even with a rigorously vetted data model and normalization, data corresponding to certain modeled entities may grow pretty quickly, likely due to organic growth in application usage, which makes the operations on those data slower
  • 6. Copyright©2019 NTT corp. All Rights Reserved. 6
 Data growth • Assuming relational model, this means tables for certain pieces of data growing too big for the current configuration of the database. So for example, looking up a user or updating a booking will start becoming slower, because the database has to process ever growing amount of unrelated data. users rooms cities bookings
  • 7. Copyright©2019 NTT corp. All Rights Reserved. 7
 Handling data growth • Up to a point, administrators can get away by increasing the configured resources and/or migrating to faster hardware or by tuning the database. • Database software could itself be improved to handle bigger tables more efficiently with better algorithms and code-level optimizations. users rooms cities bookings
  • 8. Copyright©2019 NTT corp. All Rights Reserved. 8
 Handling data growth: Partitioning • Another way of dealing with the resource-hungry data entities is to break them into smaller pieces • What is logically one entity in the application is manipulated as multiple, individually-addressable objects in the database system. In our example, entities users and bookings could each live as multiple tables in the database, with each table storing an application-defined subset of the data. users ‘A’ – ‘I’ users ‘J’ – ‘R’ users ‘S’ – ‘Z’ bookings ‘A’ – ‘I’ bookings ‘J’ – ‘R’ bookings ‘S’ – ‘Z’
  • 9. Copyright©2019 NTT corp. All Rights Reserved. 9
 Partitioning • Note that the database is still going to have to store the same amount of data as before, but the individual operations on those data can refer to only the partitions of interest. For example, to look up a user whose name starts with ‘A’, the application may issue the operation to only the relevant partition. users ‘A’ – ‘I’ users ‘J’ – ‘R’ users ‘S’ – ‘Z’ bookings ‘A’ – ‘I’ bookings ‘J’ – ‘R’ bookings ‘S’ – ‘Z’ • In one approach, the partitioning is defined and implemented entirely in the application code. Database only has to deal with multiple smaller tables.
  • 10. Copyright©2019 NTT corp. All Rights Reserved. 10
 Partitioning • In another approach, partitioning is local to the database, whereby the application references the logical entities which the database maps to their partitions. For example, an update to the booking of a user whose name starts with ‘A’ is converted by the database into an update of the relevant bookings partition. users ‘A’ – ‘I’ users ‘J’ – ‘R’ users ‘S’ – ‘Z’ bookings ‘A’ – ‘I’ bookings ‘J’ – ‘R’ bookings ‘S’ – ‘Z’ users bookings • In this approach, the partitioning is defined by the application code and mostly implemented in the database.
  • 11. Copyright©2019 NTT corp. All Rights Reserved. 11
 Partitioning Other benefits of partitioning include, among others: • Efficient archiving. • Parallel processing bookings ‘A’ – ‘I’ 2016 bookings ‘A’ – ‘I’ 2017 bookings ‘A’ – ‘I’ 2018 bookings ‘A’ – ‘I’ bookings ‘A’ – ‘I’ 2019 bookings bookings ‘A’ – ‘I’ bookings ‘J’ – ‘R’ bookings ‘S’ – ‘Z’ Thread 1 Thread 2 Thread 3
  • 12. Copyright©2019 NTT corp. All Rights Reserved. 12
 Intrinsic partitioning • Some natively clustered database systems also contain a concept of partitioning that is wholly database-controlled. • Such database systems are typically implemented in layers. For example, the layer that implements data model is separate from the layer that implements storage. Data model (tables, joins, foreign keys, etc.) Storage (compression, replication, partitioning, etc.) • The storage layer does try so that the partitioning is optimal for the application’s workload, but it’s mostly automatic, that is not in the application’s control. • The application directly interacts with only the data model layer
  • 13. Copyright©2019 NTT corp. All Rights Reserved. 13
 Outline • Partitioning concepts • Partitioning in Postgres: the “old” way • The coming of declarative partitioning • Postgres 10 and 11: foundations • Postgres 12: performance
  • 14. Copyright©2019 NTT corp. All Rights Reserved. Partitioning in Postgres: the “old” way • Postgres has supported in-database partitioning for a long time, even though the optimizations for it came around much later (14 years ago). • Traditional implementation of partitioning borrows from table inheritance, which allows grouping related tables by inheriting from the same parent table/class. • Operations on the generic parent table are internally applied to the more specific child tables, even though the application may operate directly on the child tables. users students professors support_staff 14

  • 15. Copyright©2019 NTT corp. All Rights Reserved. Partitioning in Postgres: the “old” way • The ability to group related tables under one name is very useful for the requirements of partitioning, namely refer to multiple tables by one name. • The child tables are partitions, which contain the actual data, whereas the parent table is just a placeholder for the application code. • The application issues operations on the parent table which Postgres internally applies to the child tables. users users ‘A’ – ‘I’ users ‘J’ – ‘R’ users ‘S’ – ‘Z’ 15

  • 16. Copyright©2019 NTT corp. All Rights Reserved. Partitioning in Postgres: the “old” way • Moreover, Postgres can avoid processing irrelevant child tables with some additional setup. • To do so, application writer needs to describe, using a CHECK constraint defined on each child table, the subset of the total data that the table contains. If the query’s restrictions contradict the table’s CHECK constraint it won’t be scanned. • This feature is called constraint exclusion and is present in Postgres since v8.1. CHECK (tolower(first(name)) >= ‘A’ AND tolower(first(name)) <= ‘I’) CHECK (tolower(first(name)) >= ‘J’ AND tolower(first(name)) <= ‘R’) CHECK (tolower(first(name)) >= ‘S’ AND tolower(first(name)) <= ‘Z’) users users ‘A’ – ‘I’ users ‘J’ – ‘R’ users ‘S’ – ‘Z’ 16

  • 17. Copyright©2019 NTT corp. All Rights Reserved. Partitioning in Postgres: the “old” way • While Postgres translates SELECT, UPDATE, and DELETE performed on the parent to child tables, it doesn’t translate INSERT. Table inheritance proper doesn’t need such a feature, because the child tables are typically directly manipulated in the application code. • A workaround for that is to write the application code to insert into child tables directly or to use database triggers for INSERT redirection – define a trigger on the parent table that catches any INSERTs done on it and the executed code performs the INSERT on the correct child table by inspecting the input data. 17

  • 18. Copyright©2019 NTT corp. All Rights Reserved. Partitioning in Postgres: the “old” way users users ‘A’ – ‘I’ users ‘J’ – ‘R’ users ‘S’ – ‘Z’ CREATE TRIGGER users_insert_redirect BEFORE INSERT ON users FOR EACH ROW EXECUTE PROCEDURE users_insert_redirect() 18

  • 19. Copyright©2019 NTT corp. All Rights Reserved. • The child tables can also be foreign tables (starting in v9.5 released in 2016), so it allows the partitions to span multiple machines, allowing for a primitive form of scale-out. 19 
 Partitioning in Postgres: the “old” way users users ‘A’ – ‘I’ users ‘J’ – ‘R’ users ‘S’ – ‘Z’ FDW FDW FDW host1.network host2.network host3.network
  • 20. Copyright©2019 NTT corp. All Rights Reserved. Partitioning in Postgres: the “old” way The “old” way gets the job done, but is inefficient in various ways: • Poor usability, because the application writer still has to bear most of the responsibility for making sure that partitioning is set up correctly • Poor performance, especially as the number of partitions increases, because the architecture of Postgres for processing queries is not really optimized for having to consider many tables in the handling of a given query 20

  • 21. Copyright©2019 NTT corp. All Rights Reserved. 21
 Outline • Partitioning concepts • Partitioning in Postgres: the “old” way • The coming of declarative partitioning • Postgres 10 and 11: foundations • Postgres 12: performance
  • 22. Copyright©2019 NTT corp. All Rights Reserved. Declarative partitioning • It’s the same old multiple-tables-under-one-name architecture, but with a new syntax to define partitions. • Users still bear the responsibility for deciding what partitions to create and also for creating them using the new commands (CREATE TABLE + partition clause), but Postgres takes care of the rest CHECK (tolower(first(name)) >= ‘A’ AND tolower(first(name)) <= ‘I’) CHECK (tolower(first(name)) >= ‘J’ AND tolower(first(name)) <= ‘R’) CHECK (tolower(first(name)) >= ‘S’ AND tolower(first(name)) <= ‘Z’) users users ‘A’ – ‘I’ users ‘J’ – ‘R’ users ‘S’ – ‘Z’ 22

  • 23. Copyright©2019 NTT corp. All Rights Reserved. Declarative partitioning users users ‘A’ – ‘I’ users ‘J’ – ‘R’ users ‘S’ – ‘Z’ CREATE TRIGGER users_insert_redirect BEFORE INSERT ON users FOR EACH ROW EXECUTE PROCEDURE users_insert_redirect() • There’s no need for the trigger too. 23

  • 24. Copyright©2019 NTT corp. All Rights Reserved. Declarative partitioning • That’s really all there is to the “declarative” qualifier – the new syntax and the out-of-the-box enforcement of partitioning. • Most new features around declarative partitions have more to do with easier administration of partitions than improving the basic architecture of partitioning. • The bright side is that Postgres is able to capture some partitioning-specific information about tables thanks to the new syntax, which is stored in partitioning-specific system catalog tables. That information allows Postgres to better optimize queries over declarative partitions compared to “old”-style partitions. 24

  • 25. Copyright©2019 NTT corp. All Rights Reserved. Declarative partitioning • The number of partitions that can be reasonably handled is also bigger now, though not because we completely solved the earlier mentioned architectural problems of Postgres that prevents it from handling many tables well, but because the newly enabled optimizations allow those problems to be papered over, for now at least. • There is some effort focused on solving the fundamental architectural problems, now more than ever. 25

  • 26. Copyright©2019 NTT corp. All Rights Reserved. 26
 Outline • Partitioning concepts • Partitioning in Postgres: the “old” way • The coming of declarative partitioning • Postgres 10 and 11: foundations • Postgres 12: performance
  • 27. Copyright©2019 NTT corp. All Rights Reserved. • Postgres 10 introduced declarative partitioning, with the basics: – The syntax for RANGE and LIST partitioning – Automatic partition constraint enforcement – INSERT and COPY (except for foreign table partitions) • Things that can be done aren’t new compared to “old”-style partitioning, but the setup consists of much less chores, as described. • Bulk INSERT operation (including COPY) is at least an order of magnitude faster than with a plpgsql trigger. • Not all rainbows… With the introduction of a new table type (“partitioned tables”), supporting the definition of various database objects on those tables would require some careful consideration, so it wasn’t implemented in Postgres 10. Users get an unsupported feature errors instead. 27 
 Postgres 10
  • 28. Copyright©2019 NTT corp. All Rights Reserved. • Examples of such unintuitive limitations are the inability to define indexes, index-based constraints, foreign key constraints, row-level triggers, etc. on partitioned tables. Users are not prevented from defining these objects directly on partitions, but that’s extra work. • Other limitations stem from the expectations that people have developed after working for many years with the “old”-style partitioning and having to solve a few issues by themselves, like: – Transparent handling of cross-partition UPDATE operations – Automatic creation of partitions for new keys or a “default” partition that would capture keys for which there is no partition defined • People would write triggers and database-external scripts to handle those issues as they’d see fit, but the expectation is that at least some of those things are handled inside the database. 28 
 Postgres 10
  • 29. Copyright©2019 NTT corp. All Rights Reserved. • A pretty significant release for partitioning • Most of the restrictions on partitioned table DDL are lifted: – Indexes can be defined – UNIQUE constraints can be defined, provided the UNIQUE key includes the partition key – Foreign keys can be defined, although foreign keys cannot point to partitioned tables – Row-level triggers can be defined • For each of the above, like how CHECK and NOT NULL constraints work, the object defined on a partitioned table is also defined on all of the existing partitions, where it is actually enforced. The partitioned table’s copy is simply a template for the future partitions. 29 
 Postgres 11
  • 30. Copyright©2019 NTT corp. All Rights Reserved. • There are new partitioning features too, such as: – HASH partitions – DEFAULT partition (boundless partition) – Transparent handling of cross-partition UPDATE – INSERT/COPY to foreign table partitions • The following new techniques are now applied when processing queries involving partitions. – Partition pruning (superseding constraint exclusion) – Application of partition pruning during execution (in addition to during planning) – Partitionwise join (when joining co-partitioned tables, join individual partitions) – Partitionwise aggregate (perform aggregates on individual partitions) 30 
 Postgres 11
  • 31. Copyright©2019 NTT corp. All Rights Reserved. • Overall, the usability of the “new” partitioning has far surpassed that of the “old”-style partitioning with the release of Postgres 11, with new features that would be hard or outright impossible to emulate with the latter. • However, as noted earlier, the basic architecture that’s being used hasn’t changed much, which puts the upper limit on the number of partitions that can be used somewhere around low 100s, because any given query would need to touch them all. • This results in an unacceptable performance profile, especially for workloads that contain single-record queries on partitioned tables, which are ideally handled by touching only the partition that contains the record. 31 
 Postgres 11
  • 32. Copyright©2019 NTT corp. All Rights Reserved. 32
 Outline • Partitioning concepts • Partitioning in Postgres: the “old” way • The coming of declarative partitioning • Postgres 10 and 11: foundations • Postgres 12: performance
  • 33. Copyright©2019 NTT corp. All Rights Reserved. • Although a lot of effort was focused on refactoring the partitioning code base to reduce partitioning overheads in processing common queries, a bunch of new features have landed: – Foreign keys can now reference partitioned tables – Partition bound syntax now allows specifying arbitrary expressions, in addition to just literal values that the earlier syntax allowed – More intuitive handling of tablespace assigned to partitioned tables – psql commands for better listing of partitions – Collection of functions to introspect partition hierarchy 33 
 Postgres 12
  • 34. Copyright©2019 NTT corp. All Rights Reserved. • ATTACH PARTITION command no longer blocks queries, which makes adding new partitions a less disruptive operation than before, a huge operational plus. • Performance has been improved significantly by rewriting various pieces of code to process only the partitions that are touched by a query. So where previously, single-record queries would run in the amount of time that is proportional to the number of partitions, that is no longer the case. • COPY couldn’t use certain low-level optimizations like per-partition row-buffering for partitioned tables, which has been fixed. That boosts COPY’s performance significantly for the common set of loading patterns. • Planner can now avoid doing explicit sorts for queries that need ordered data from certain partitioned tables, mainly range partitioned tables. 34 
 Postgres 12
  • 35. Copyright©2019 NTT corp. All Rights Reserved. • It wouldn’t be totally inappropriate to say that say that Postgres has decent support for partitioning at this point. ☺ • Many people have recently wished to see partition creation itself be automated, which seems like an area that the next set of usability improvements might come from. • One more avenue for future improvements is to offer better support for partitioning in scale-out clusters, from both usability and performance standpoints. 35 
 Postgres 12
  • 36. Copyright©2019 NTT corp. All Rights Reserved. • Auto-creation of partitions • Global indexes on partitioned tables • Teach planner to consider partitioned indexes • Optimizing for non-single-record queries 36 
 Future enhancements
  • 37. Copyright©2019 NTT corp. All Rights Reserved. In this talk, the following topics were covered: • Partitioning concepts • The “old” Postgres partitioning • Declarative partitioning • Progress of development of declarative partitioning • Future enhancements 37 
 Summary
  • 38. Copyright©2019 NTT corp. All Rights Reserved. • For listening to this talk ☺ • To Postgres contributors for writing code, reviewing code, reporting feedback/bugs related to partitioning ☺ • Questions? 38 
 Thank you!