pgslice
Postgres partitioning as easy as pie
Install
Run
gem install pgslice
Steps
- Specify your database credentials
export PGSLICE_URL=postgres://localhost/myapp_development
- Create an intermediate table
pgslice prep <table> <column> <period>
Period can be `day` or `month`.
This creates a table named `<table>_intermediate` with the appropriate trigger for partitioning.
- Add partitions
pgslice add_partitions <table> --intermediate --past 3 --future 3
This creates child tables that inherit from the intermediate table.
Use the `--past` and `--future` options to control the number of partitions.
- Optional, for tables with data - Fill the partitions in batches with data from the original table
pgslice fill <table>
Use the `--batch-size` and `--sleep` options to control the speed.
- Swap the intermediate table with the original table
pgslice swap <table>
The original table is renamed `<table>_retired` and the intermediate table is renamed `<table>`.
- Fill the rest
pgslice fill <table> --swapped
- Archive and drop the original table
Adding Partitions
pgslice add_partitions <table> --future 3
Additional Commands
To undo prep and delete partitions, use:
pgslice unprep <table>
To undo swap, use:
pgslice unswap <table>
Upgrading
Run:
gem install pgslice
To use master, run:
gem install specific_install
gem specific_install ankane/pgslice
Contributing
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features