【AWS】Amazon Redshift ~ VACUUM ~

■ はじめに

https://dk521123.hatenablog.com/entry/2021/09/04/172021

において
「3)インターリーブソートキー(Interleaved SortKey)」
の「デメリット」より
~~~~~~~~~~~
* インターリーブソートキーの性能を維持するためには
 定期的に VACUUM REINDEX を実行する必要がある
~~~~~~~~~~~

Redshift の VACUUM を調べてみると、
PostgreSQLとは違う部分があったのでメモする。

目次

【1】VACUUM
【2】構文
 1)サンプル
【3】VACUUM の種類
 1)VACUUM FULL
 2)VACUUM DELETE ONLY
 3)VACUUM SORT ONLY
 4)VACUUM REINDEX

【1】VACUUM

* パフォーマンス向上・維持されるための手段で
 行を再ソートや削除された行の領域を再利用することを行う

補足:PostgreSQL の VACUUM 操作との違い
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_VACUUM_command.html

より抜粋
~~~~~~~~~~~~~~~~
Amazon Redshift の VACUUM コマンドの構文と動作は、
PostgreSQL の VACUUM 操作とは大幅に異なります。

たとえば、Amazon Redshift でのデフォルトの VACUUM 操作は
VACUUM FULL です。
これは、ディスク領域を再利用し、すべての行を再ソートします。
これに対して、PostgreSQL のデフォルトの VACUUM 操作は、
単純に領域を再利用し、再び使用できるようにするだけです。
~~~~~~~~~~~~~~~~

【2】構文

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_VACUUM_command.html

VACUUM [ FULL | SORT ONLY | DELETE ONLY | REINDEX ] 
[ [ table_name ] [ TO threshold PERCENT ] [ BOOST ] ]

1)サンプル

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_VACUUM_command.html

より

# SALES テーブルで、常に容量の再利用と行の再ソートを実行
vacuum sales to 100 percent;

# ISTING テーブルのインデックスを再作成した後、バキューム処理を実行
vacuum reindex listing;

【3】VACUUM の種類

* 公式サイトの以下のページを参照。

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/t_Reclaiming_storage_space202.html#vacuum-types

1)VACUUM FULL

* 以下の2点を行う。
 [1] 行を再ソート
 [2] 削除された行の領域を再利用する
* VACUUM でも VACUUM FULL と同じ

2)VACUUM DELETE ONLY

* ソートをスキップする以外、VACUUM FULLと同じ
* Amazon Redshift はバックグラウンドで自動的に実行される

3)VACUUM SORT ONLY

* ソートを行う([1]のみを行う)

4)VACUUM REINDEX

* インターリーブソートキー(※)を使用するテーブルに使用

※ インターリーブソートキーについては、
 以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2021/09/04/172021

使用上の注意

* VACUUM REINDEX は VACUUM FULL よりも大幅に時間がかかる
=> データ全体を分析する時間だけでなく、
 インターリーブされたデータのマージに
 全データブロックへのアクセスすることが含まれるため
=> 以下を読んでみるといいかも。

公式サイト:インデックスを再生成するかどうかの決定
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_vacuum-decide-whether-to-reindex.html

関連記事

Amazon Redshift ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/22/002139
Amazon Redshift ~ 他DB・サービスとの違い ~
https://dk521123.hatenablog.com/entry/2021/08/29/000000
Amazon Redshift ~ DistStyle / DistKey / SortKey ~
https://dk521123.hatenablog.com/entry/2021/09/04/172021
よく使う pdqlコマンド
https://dk521123.hatenablog.com/entry/2020/01/10/224818