How to implement automatic partitioning in PostgreSQL 15?

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

Step 1: Enable the necessary extensions

  • First, make sure you have the necessary extensions enabled in your PostgreSQL installation. You’ll need to enable the pg_partman and pg_partman_bgw extensions. You can do this by running the following commands as a superuser:

CREATE EXTENSION pg_partman;
CREATE EXTENSION pg_partman_bgw;

Step 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);

Step 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.

Step 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();

Step 5: Verify and monitor

  • You can verify that the automatic partitioning is working correctly by checking the created partitions using the following SQL queries:

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

You can also 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 497 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.