MariaDB パーティションを使用する

MariaDBで、パーティションを使用する手順を記述してます。ここでは、実際にテーブルを作成してパティーションを作成するまでの手順を記述してます。
環境
- OS CentOS Stream release 9
- MariaDB 10.10.2
- phpMyAdmin 5.2.0
手順
以下の構成で作成した「sample」テーブルに対して、年度ごとにパーティションしてみます。
CREATE TABLE `sample` (
`id` INT AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`created_at` DATETIME NOT NULL,
PRIMARY KEY (`id`, `created_at`)
);
データは、ストアドで作成してます。作成方法は、ストアドで連続した日付データを作成するから確認できます。
SELECT * FROM sample;
実行結果

まずは、現在のテーブルのパーティションの状態を確認してみます。
SELECT TABLE_SCHEMA,
TABLE_NAME,
PARTITION_NAME,
PARTITION_ORDINAL_POSITION,
TABLE_ROWS
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME='sample';
実行結果を見ると、パーティションが作成されていないことがわかります。

パーティション作成
年度ごとにパーティションを作成してみます。
ALTER TABLE `sample`
PARTITION BY RANGE COLUMNS(`created_at`) (
PARTITION pat2020 VALUES LESS THAN ('2020-01-01 00:00:00'),
PARTITION pat2021 VALUES LESS THAN ('2021-01-01 00:00:00'),
PARTITION pat2022 VALUES LESS THAN ('2022-01-01 00:00:00'),
PARTITION pat2023 VALUES LESS THAN ('2023-01-01 00:00:00'),
PARTITION patmax VALUES LESS THAN MAXVALUE
)
確認してみます。
※少し時間がたってから確認します。
SELECT TABLE_SCHEMA,
TABLE_NAME,
PARTITION_NAME,
PARTITION_ORDINAL_POSITION,
TABLE_ROWS
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME='sample';
パーティションが作成されていることが確認できます。

パーティションを作成すると、以下のようにパーティションを指定してクエリを実行することが可能です。
SELECT COUNT(*) from sample
PARTITION (`pat2021`);
実行結果

-
前の記事
Rust ベクタ(可変配列)の前方から指定した数だけ除いた値を取得する 2023.02.20
-
次の記事
Redis スコアの和集合を取得する 2023.02.20
コメントを書く