ANALYZE COMPRESSION - Amazon Redshift

ANALYZE COMPRESSION

圧縮分析を行い、分析されたテーブルの推奨列エンコードスキームのレポートを生成します。レポートには、列ごとに RAW エンコードと比較したディスク容量の圧縮可能率の推定値が含まれます。

構文

ANALYZE COMPRESSION [ [ table_name ] [ ( column_name [, ...] ) ] ] [COMPROWS numrows]

パラメータ

table_name

一時テーブルを含む、特定のテーブルの圧縮を分析できます。テーブルをそのスキーマ名で修飾することができます。また、table_name を指定して単一のテーブルを分析することもできます。table_name を指定しなかった場合、現在接続されているデータベースがすべて分析されます。1 つの ANALYZE COMPRESSION ステートメントで複数の table_name を指定することはできません。

column_name

table_name を指定する場合、テーブルの 1 つ以上の列を指定することもできます (括弧内に列をカンマ区切りリストとして指定します)。

COMPROWS

圧縮分析のサンプルサイズとして使用される行数。分析は各データスライスの行に対して実行されます。例えば、COMPROWS 1000000 (1,000,000) を指定し、システムに合計 4 つのスライスが含まれている場合、スライスごとに 250,000 行のみが読み取られ、分析されます。COMPROWS を指定しない場合、サンプルサイズはデフォルトでスライスごとに 100,000 になります。COMPROWS の値がスライスごとに 100,000 行のデフォルト値より小さい場合、自動的にデフォルト値にアップグレードされます。ただし、テーブルのデータが不十分であるため有意のサンプルを作成できない場合、圧縮分析では推奨を作成しません。COMPROWS 数がテーブルの行数より大きい場合でも、ANALYZE COMPRESSION コマンドは続行し、利用可能なすべての行に対して圧縮分析を実行します。

numrows

圧縮分析のサンプルサイズとして使用される行数。numrows の許容範囲は 1000~1000000000 (1,000,000,000) の数値です。

使用に関する注意事項

ANALYZE COMPRESSION は排他的テーブルロックを取得し、テーブルに対する同時読み取り書き込みが防止されます。ANALYZE COMPRESSION コマンドは、テーブルがアイドル状態になっている場合にのみ実行してください。

テーブルの内容サンプルに基づいて推奨列エンコードスキームを取得するには、ANALYZE COMPRESSION を実行します。ANALYZE COMPRESSION はアドバイスツールであり、テーブルの列エンコードは変更しません。推奨エンコードは、テーブルを再作成するか、同じスキーマを持つ新しいテーブルを作成することにより適用できます。適切なエンコードスキームを使用して未圧縮テーブルを再作成すると、オンディスクフットプリントを大幅に減らすことができます。このアプローチにより、ディスクスペースを節約でき、I/O 関連ワークロードのクエリパフォーマンスが向上します。

ANALYZE COMPRESSION は、実際の分析フェーズをスキップし、SORTKEY として指定されている任意の列で元のエンコードタイプを直接返します。これは、SORTKEY 列が他の列よりも大幅に圧縮されている場合に、範囲制限されたスキャンのパフォーマンスが低下する可能性があるためです。

次の例は、LISTING テーブルのみの列に対するエンコードおよび推定減少パーセントを示しています。

analyze compression listing; Table | Column | Encoding | Est_reduction_pct ---------+----------------+----------+------------------- listing | listid | az64 | 40.96 listing | sellerid | az64 | 46.92 listing | eventid | az64 | 53.37 listing | dateid | raw | 0.00 listing | numtickets | az64 | 65.66 listing | priceperticket | az64 | 72.94 listing | totalprice | az64 | 68.05 listing | listtime | az64 | 49.74

次の例は、SALES テーブルの QTYSOLD、COMMISSION、SALETIME の各列を分析します。

analyze compression sales(qtysold, commission, saletime); Table | Column | Encoding | Est_reduction_pct -------+------------+----------+------------------- sales | salesid | N/A | 0.00 sales | listid | N/A | 0.00 sales | sellerid | N/A | 0.00 sales | buyerid | N/A | 0.00 sales | eventid | N/A | 0.00 sales | dateid | N/A | 0.00 sales | qtysold | az64 | 83.06 sales | pricepaid | N/A | 0.00 sales | commission | az64 | 71.85 sales | saletime | az64 | 49.63