メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

ランレングスエンコード

ランレングスエンコードは、連続して繰り返される値を、値と連続発生数 (実行の長さ) から成るトークンに置き換えます。ディスク上の列値のブロックごとに、一意の値の個別のディクショナリが作成されます (Amazon Redshift ディスクブロックは 1 MB を占有します)。このエンコードは、データ値が連続して頻繁に繰り返されるテーブル (たとえば、テーブルがこれらの値でソートされる場合) に最も適しています。

たとえば、大きなディメンションテーブルの列に、予測どおりに小さなドメイン (10 個未満の可能値を持つ COLOR 列など) がある場合、データがソートされなくても、これらの値はテーブル全体にわたって長いシーケンスになる可能性が高くなります。

ソートキーとして指定された列に、ランレングスエンコードを適用することは推奨されません。範囲が制限されたスキャンは、ブロックに同様の数の行が含まれる場合にパフォーマンスが向上します。ソートキー列が、同じクエリ内の他の列よりもかなり高度に圧縮される場合、範囲が制限されたスキャンはパフォーマンスが低下する可能性があります。

次の表は、COLOR 列の例を使用して、ランレングスエンコードがどのように機能するかを示しています。

元のデータ値 元のサイズ (バイト) 圧縮値 (トークン) 圧縮サイズ (バイト)
Blue 4 {2,Blue} 5
Blue 4 0
Green 5 {3,Green} 6
Green 5 0
Green 5 0
Blue 4 {1,Blue} 5
黄色 6 {4,Yellow} 7
黄色 6 0
黄色 6 0
黄色 6 0
合計 51 23