From: | Muhammad Salahuddin Manzoor <salahuddin(dot)m(at)bitnine(dot)net> |
---|---|
To: | srinivasan s <srinioracledba7(at)gmail(dot)com> |
Cc: | pgsql-admin(at)lists(dot)postgresql(dot)org |
Subject: | Re: Need guidance on partioning |
Date: | 2024-05-22 12:49:44 |
Message-ID: | CAKD7CDn8q+vLtzihfbYwg8MDoa76GqD2J00gjC6Astgz1UF9LQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
Dear Srinivasan,
Implementing partitioning in PostgreSQL can significantly improve the
performance of your database
1. Deleting Records Older Than 18 Months
Create the Parent Table: Define your main table as partitioned by range on
the timestamp column.
CREATE TABLE your_table (
id SERIAL PRIMARY KEY,
timestamp TIMESTAMPTZ NOT NULL,
account_id INT,
user_id INT,
-- other columns
) PARTITION BY RANGE (timestamp);
2. Create Partitions: Define partitions for each range, such as monthly or
quarterly. This makes it easier to drop old partitions when they exceed 18
months.
CREATE TABLE your_table_2023_01 PARTITION OF your_table FOR VALUES FROM
('2023-01-01') TO ('2023-02-01');
CREATE TABLE your_table_2023_02 PARTITION OF your_table FOR VALUES FROM
('2023-02-01') TO ('2023-03-01');
-- Repeat for other months
Automate Partition Management: You can use tools like pg_partman or create
scripts to manage partitions, ensuring new partitions are created and old
ones are dropped as needed.
*Salahuddin (살라후딘**)*
On Wed, 22 May 2024 at 17:04, srinivasan s <srinioracledba7(at)gmail(dot)com>
wrote:
> Hello everyone,
>
> I hope you are all doing well.
>
> I am seeking guidance on how to implement partitioning in PostgreSQL.
>
> We have a large table that currently does not have any partitioning, and
> we have two requirements for removing old data from this table. We are
> looking to create a new table with partitioning.
>
> 1. The first requirement is to delete all records from the table that are
> older than 18 months. I believe we can achieve this by using range
> partitioning on the timestamp column.
>
> 2. The second requirement is to remove data from the table when a user
> leaves the organization. We have the account ID and user ID in the same
> table.
>
> Could someone please offer guidance on selecting the appropriate
> partitioning method (range, sub-partition, or composite)?
>
> Additionally, not all queries use the timestamp column in the WHERE
> condition. Is it mandatory to use the partition key in the WHERE condition
> to benefit from partitioning? Can we create a composite index that combines
> the partition key column with other columns used in the WHERE clause? Would
> this be beneficial?
>
> Thank you.
>
>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Muhammad Salahuddin Manzoor | 2024-05-22 12:56:26 | Re: displaying line breaks / increasing row height in pgadmin |
Previous Message | srinivasan s | 2024-05-22 12:21:49 | Re: Need guidance on partioning |