Functions to manage partitions in PostgreSQL with minimal impact for applications
MIT License
These functions are designed to create and maintain partitions in PostgreSQL with a minimal impact on the applicaton. The priority is to not impact the application. When multiple options are available the weakest lock possible is being used, when a heavy lock is required we use a timeout to prevent long lasting locks.
Every function in this project starts with a detailed comment on what the function does and how to use it.
We strongly encourage you to contribute to our repository. Find out more in our contribution guidelines
All function have been tested on postgres 13.
All function will be installed in the DBA schema. If you don't have this schema yet, create it by running sql/schema/schema.sql.
You can add the individual functions directly on the database from psql
with the \i
command. Use psql
to login on your database and run
\i <full path to the function>.<filename>.sql
N.B. Some functions use other functions and the script partition_maintenance.sql
requires a set of tables to be created.
To create all the functions and the tables required to configure maintenance apply the following scripts in order from the root directory of the project sql/schema/schema.sql sql/tables/tables.sql sql/functions/create_all_functions.sql
To test all functions run the following scripts from the project root folder test/tables.sql test/run_functions.sql test/configuration.sql test/cleanup.sql
The functions can be called as any other postgres function
select dba.<function_name>(arg1, arg2, ..., argN);
The functions in this project can
Besides all the functions the project also contains the script partition_maintenance.sql
. This scripts requires two tables being created
The scripts performs the following tasks based on the configuration in the table dba.partition_configuration
.
See the documentation within sql/tables/tables.sql for the configuration details.
If you have a feature request, or spotted a bug or a technical problem, create a GitHub issue.
MIT license. For more information, see the LICENSE file.