パーティショニングとは

テーブルを、指定した単位(一般的には「年」などの時間)で分割することをパーティショニングといいます。
Verticaのパーティションはテーブル単位で列に対して定義します。パーティションを定義するとWHERE句を使用した検索の際に不要なパーティションはアクセス対象から除外されるため、パフォーマンスの向上が見込めます。

また、不要になったパーティションを一括で高速に削除(DROP PARTITION)できるといったメリットもあります。

例) 年(year)でパーティショニングを実施する場合のイメージ

パーティショニングの概要

なお、最適化されたプロジェクションでパーティショニングを実施した場合は、各パーティション単位で最適化(ソート、圧縮)が行われます。

パーティショニングの設定方法

パーティショニングはCREATE TABLE時に、PARTITION BY EXTRACT(パーティション単位 FROM 列名)で定義できます。

例) table1_partテーブルに対して日付列(date型)のyear(年)でパーティショニングを行う場合


パーティショニングの確認方法

定義したパーティションの情報はpartitionsテーブルで確認できます。

例)table1テーブルに2013~2015年のデータが入っている場合

[partitions]

列名内容
PARTITION_KEYパーティションのキーとなる値
PROJECTION_NAMEプロジェクション名
ROS_SIZE_BYTESROS(ディスク)に格納されているデータサイズ
ROS_ROW_COUNTROS(ディスク)に格納されているデータ件数
NODE_NAMEノード名


参考情報


階層的なパーティション管理(Vertica9.0新機能)
http://vertica-tech.ashisuto.co.jp/hierarchical_partitioning/

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。