PostgreSQL13 レンジパーティションを作成する
- 作成日 2021.11.09
- PostgreSQL
- PostgreSQL13
PostgreSQLで、レンジパーティションを作成するまでの手順を記述してます。
環境
- OS CentOS 7.9.2009 (Core)
- PostgreSQL 13.1
テーブル作成
まずはテーブルの作成を行います。ここでは日付をレンジとしてます。
CREATE TABLE sample (
id int not null,
name text not null,
date date not null
)PARTITION BY RANGE (date);
次に、パーティションを作成してます。
CREATE TABLE sample_2019 PARTITION OF sample
FOR VALUES FROM ('2019-01-01') TO ('2020-01-01');
CREATE TABLE sample_2020 PARTITION OF sample
FOR VALUES FROM ('2020-01-01') TO ('2021-01-01');
CREATE TABLE sample_2021 PARTITION OF sample
FOR VALUES FROM ('2021-01-01') TO ('2022-01-01');
「sample」テーブルを確認すると「パーティション」が作成されていることが確認できます。
「sample」テーブルに適当なデータを挿入します。
ここでは
2019年 500レコード
2020年 25000レコード
2021年 474500レコード
の合計50万レコードを使用してます。
パーティション確認
各パーティションごとにデータが入っていることを確認してみます。
select * from sample_2019;
select * from sample_2020;
それぞれ作成したパーティションに、データが入っていることが確認できます。
当然、親テーブルにもデータが入っていることが確認できます。
実行計画確認
実行計画を確認しても、パーティションが使用されていることが確認できます。
explain analyze select * from sample where date between '2019-01-01' and '2019-02-01';
実行結果
範囲外のデータを挿入
範囲外のデータを挿入するとエラーとなり挿入できません。
INSERT INTO sample VALUES (1, 'name','2022-01-01');
-
前の記事
docker-compose postgres利用時にエラー「Error: Database is uninitialized and superuser password is not specified.」が発生した場合の対処法 2021.11.08
-
次の記事
javascript lodashを使って構造型から関数を除いたものを判定する 2021.11.09
コメントを書く