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

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`);

実行結果