すのふら

すのふら

日々の備忘録

RedshiftのVACUUMが実行されていないテーブルがあった

VACUUMで俺の無知が炸裂したのでメモしておく。

Redshiftのデータ更新は追記型のため、Deleteしても見た目上は消えていてもディスク上にデータが残りっぱなしになっているので、その不要な領域を削除・再ソートしてあげる必要がある。

そのためにテーブルをVACUUMしてあげる必要があるんだが、ソート率が3%くらいの比較的ソートされていると言っていいテーブルが、ソートされてなくてあれ何でされていないんだろう?となった。

想定だと以下のようなSQLを実行すると、データベースのテーブルに関する概要情報を表示すシステムテーブル「svv_table_info」のunsortedが0になっているはずだけど、何故か0にならない。
SVV_TABLE_INFO - Amazon Redshift

select unsorted from svv_table_info where "table" = '[テーブル名]'


あれ何でだろうと調べた結果、VACUUMされる条件がソート率が95%以下の場合だったから。
上記のパターンだと3%だったので、処理されないので0にならない。

95 パーセント以上がすでにソートされているテーブルのソートフェーズをスキップします

VACUUM - Amazon Redshift