保存データのサイズを削減するための列圧縮 - Amazon Redshift

保存データのサイズを削減するための列圧縮

圧縮は、データの保存時にそのサイズを小さくする列レベルのオペレーションです。圧縮によってストレージスペースが節約され、ストレージから読み込まれるデータのサイズが小さくなり、ディスク I/O の量が減少するので、クエリパフォーマンスが向上します。

ENCODE AUTO は、テーブルのデフォルトです。テーブルが ENCODE AUTO に設定されると、Amazon Redshift は、テーブル内のすべての列の圧縮エンコードを自動的に管理します。詳細については、「CREATE TABLE」および「ALTER TABLE」を参照してください。

ただし、テーブル内のいずれかの列に圧縮エンコードを指定すると、テーブルは ENCODE AUTO に設定されなくなります。Amazon Redshift は、テーブルにあるすべての列の圧縮エンコードを自動的に管理しないようになりました。

テーブルを作成するときに、テーブルの列に圧縮タイプまたはエンコードを手動で適用できます。または、COPY コマンドを使用すると、自動的に圧縮を分析および適用できます。詳細については、「COPY による圧縮エンコードの選択」を参照してください。自動圧縮の適用の詳細については、「自動圧縮ありでテーブルをロードする」を参照してください。

注記

COPY コマンドを使用して自動圧縮を適用することを強くお勧めします。

新しいテーブルが別のテーブルと同じデータ特性を共有している場合は、圧縮エンコードを手動で適用することを選択できます。または、自動圧縮時に適用される圧縮エンコードがデータにとって最適ではないことがテストで判明した場合は、ユーザーが管理することもできます。圧縮エンコードを手動で適用する場合は、すでに入力されているテーブルに対して ANALYZE COMPRESSION コマンドを再実行し、その結果を使用して圧縮エンコードを選択することができます。

圧縮を手動で適用するには、CREATE TABLE ステートメントの一部として個々の列に対して圧縮エンコードを指定します。構文は次のとおりです。

CREATE TABLE table_name (column_name data_type ENCODE encoding-type)[, ...]

ここで、encoding-type には次のセクションのキーワード表から選択します。

例えば、次のステートメントは 2 列のテーブル PRODUCT を作成します。データがテーブルにロードされるときに、PRODUCT_ID 列は圧縮されませんが、PRODUCT_NAME 列はバイトディクショナリエンコード (BYTEDICT) を使用して圧縮されます。

create table product( product_id int encode raw, product_name char(20) encode bytedict);

ALTER TABLE コマンドを使用して列をテーブルに追加する際には、列のエンコードを指定できます。

ALTER TABLE table-name ADD [ COLUMN ] column_name column_type ENCODE encoding-type