How to implement automatic partitioning in PostgreSQL 15?

To implement automatic partitioning in PostgreSQL 15, you can follow these steps:

 1: Enable the necessary extensions

  • First, ensure that the required extensions are enabled in your PostgreSQL installation. Specifically, enable both the pg_partman and pg_partman_bgw extensions. To do this, run the following commands as a superuser:

CREATE EXTENSION pg_partman;
CREATE EXTENSION pg_partman_bgw;

 2: Create a partitioned table

  • Next, create a partitioned table using the pg_partman extension. This table will act as the parent table for your partitions. You can define the partition key and any additional columns as per your requirements. Here’s an example:

CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    order_date DATE,
    customer_id INT,
    -- additional columns
)
PARTITION BY RANGE (order_date);

 3: Create partition templates

  • Now, you need to create partition templates for your table. Partition templates define the structure of individual partitions. You can create different templates for different ranges of values. Here’s an example:

SELECT partman.create_parent('public.orders', 'order_date', 'native', 'daily');
SELECT partman.create_interval_partition('public.orders', 'order_date', 'native', 'daily', INTERVAL '1 day', 'future');

The first command creates a template for daily partitions, while the second command creates a template for future partitions.

 4: Set up automatic partition management

  • To enable automatic partitioning, you need to set up partition management jobs using the pg_partman_bgw extension. This extension provides a background worker process that automatically creates and manages partitions based on your defined templates. Here’s an example:

SELECT partman_bgw.register_bgw();

 5: Verify and monitor

  • Finally, verify that automatic partitioning works correctly by checking the created partitions with this SQL query:

SELECT * FROM partman.show_partitions('public.orders');

Additionally, you can monitor the partition management process by querying the partman_bgw.bgw_log table.

That’s it! You have now implemented automatic partitioning in PostgreSQL 15 using the pg_partman and pg_partman_bgw extensions.

For any further assistance or guidance, feel free to contact our PostgreSQL experts at contact@minervadb.com or call us at (844) 588-7287.

About Shiv Iyer 501 Articles
Open Source Database Systems Engineer with a deep understanding of Optimizer Internals, Performance Engineering, Scalability and Data SRE. Shiv currently is the Founder, Investor, Board Member and CEO of multiple Database Systems Infrastructure Operations companies in the Transaction Processing Computing and ColumnStores ecosystem. He is also a frequent speaker in open source software conferences globally.