Partitioning
Requirement for partitioning increases when tasks and maintenance task cost increases
Considerations
- partitioning is part of table definition and are significantly harder to change
 - partitioning when done wrong, it can make the performance worse or can make database unstable
 
Rules based on
- table size
 - response time
 - table bloat - vacuum process
 - access patterns
 
How to partition
- taget columns to separate more accessed data How to find access patterns
 - generate logs
 
Partitioning Methods
- List Partition
 - Range Partition
 - Hash Partition
 - Composite Partition
 
Types of Paritioning
- Declarative Partitioning - Minimal Maintenance
 - Inheritance Partitioning - Difficult to setup, but flexible
 
Range Partitioning
CREATE TABLE customers (columns) PARTITION BY range(age);
CREATE TABLE cust_young PARTITION OF customers FOR values FROM (MINVALUE) to (25);
CREATE TABLE cust_medium PARTITION OF customers FOR values FROM (25) to (75);
CREATE TABLE cust_old PARTITION OF customers FOR values FROM (75) to (MAXVALUE);
Migration
Migration Strategies
- Traditional Migration
 - Blue green migration
 - Logical Replication