내용으로 건너뛰기

Amazon Redshift에서 열 인코딩을 설계하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Redshift에서 열 인코딩을 설계하고 싶습니다.

간략한 설명

Amazon Redshift에서 열 인코딩을 구성하려면 ENCODE AUTOANALYZE COMPRESSION 명령을 사용하십시오. 자세한 내용은 압축 인코딩을 참조하십시오.

정렬 키 열에 압축을 적용하면 특정 쿼리 유형에 대한 블록 스캔이 추가되므로 쿼리 성능이 저하될 수 있습니다. 테이블의 인코딩 유형을 수동으로 지정하는 경우 정렬 키 열에 RAW 인코딩을 설정하십시오.

자세한 내용은 Amazon Redshift 테이블 설계 모범 사례를 참조하십시오.

해결 방법

ENCODE AUTO를 사용하여 열 압축 극대화

ENCODE AUTO를 사용하여 Amazon Redshift 테이블의 열 압축을 자동으로 최적화합니다. 기본적으로 ENCODE AUTO는 클러스터의 워크로드 패턴을 지속적으로 분석하여 쿼리 성능을 극대화하고 수동 압축 관리의 필요성을 줄여 줍니다.

테이블의 열에 인코딩 유형을 지정하는 경우 ENCODE AUTO를 비활성화하십시오.

테이블에 ENCODE AUTO가 활성화되어 있는지 확인하려면 다음 쿼리를 사용하십시오.

SELECT "table", encoded FROM svv_table_info WHERE "table" = 'table_name';

참고: table_name을 테이블 이름으로 대체하십시오.

ANALYZE COMPRESSION 명령을 실행하여 테이블 분석 검토

압축 분석을 수행하고 테이블의 압축 인코딩을 제안하는 보고서를 생성하려면 ANALYZE COMPRESSION 명령을 실행합니다.

ANALYZE COMPRESSION lineitem;

참고: lineitem을 해당 테이블 이름으로 대체하십시오.

출력 예시:

Table   |     Column      | Encoding | Est_reduction_pct
----------+-----------------+----------+-------------------
 lineitem | l_orderkey      | raw      | 0.00
 lineitem | l_partkey       | az64     | 33.34
 lineitem | l_suppkey       | az64     | 45.46
 lineitem | l_linenumber    | az64     | 87.88
 lineitem | l_quantity      | az64     | 80.00
 lineitem | l_extendedprice | az64     | 60.32
 lineitem | l_discount      | az64     | 90.77
 lineitem | l_tax           | az64     | 90.77
 lineitem | l_returnflag    | zstd     | 80.99
 lineitem | l_linestatus    | zstd     | 86.86
 lineitem | l_shipdate      | az64     | 61.15
 lineitem | l_commitdate    | az64     | 61.26
 lineitem | l_receiptdate   | az64     | 61.15
 lineitem | l_shipinstruct  | zstd     | 96.50
 lineitem | l_shipmode      | bytedict | 88.89
 lineitem | l_comment       | zstd     | 70.36
 lineitem | l_dummy         | zstd     | 99.97
(17 rows)

참고: 보고서의 각 열에는 RAW 인코딩과 비교한 잠재적인 디스크 스페이스 감소 추정치가 포함됩니다.

(선택 사항) 테이블 정의를 보면 ANALYZE COMPRESSION 명령의 출력을 쉽게 이해할 수 있습니다. 다음 명령을 실행합니다.

SHOW TABLE lineitem;

참고: lineitem을 해당 테이블 이름으로 대체하십시오.

출력 예시:

Show Table DDL statement             
-------------------------------------------------
 CREATE TABLE public.lineitem (                 
     l_orderkey integer ENCODE raw,             
     l_partkey integer ENCODE raw,              
     l_suppkey integer ENCODE raw,              
     l_linenumber integer ENCODE raw,           
     l_quantity numeric(15,2) ENCODE raw,       
     l_extendedprice numeric(15,2) ENCODE raw,  
     l_discount numeric(15,2) ENCODE raw,       
     l_tax numeric(15,2) ENCODE raw,            
     l_returnflag character(1) ENCODE raw,      
     l_linestatus character(1) ENCODE raw,      
     l_shipdate date ENCODE raw,                
     l_commitdate date ENCODE raw,              
     l_receiptdate date ENCODE raw,             
     l_shipinstruct character(25) ENCODE raw,   
     l_shipmode character(10) ENCODE raw,       
     l_comment character varying(44) ENCODE raw,
     l_dummy character varying(10) ENCODE raw   
 )                                              
 DISTSTYLE AUTO                                 
 SORTKEY ( l_orderkey );
(1 row)

ANALYZE COMPRESSION은 자문 도구 역할을 하며 테이블의 열 인코딩을 수정하지 않습니다. 제안된 인코딩을 적용하려면 테이블을 다시 생성하거나 ALTER TABLE 명령을 실행합니다.

ALTER TABLE lineitem ALTER COLUMN l_dummy ENCODE example_compression;

참고: lineitem을 테이블 이름으로, l_dummy를 열 이름으로, example_compression을 압축 인코딩으로 대체하십시오.

관련 정보

Amazon Redshift에서 잠금을 감지하고 해제하려면 어떻게 해야 합니까?

저장된 데이터의 크기를 줄이기 위한 열 압축

AWS 공식업데이트됨 일 년 전