ANALYZE COMPRESSION
분석 대상 테이블에 대해 제안되는 압축 인코딩으로 압축 분석을 수행하고 보고서를 생성합니다. 각각의 열에 대해, 보고서에는 원시 인코딩에 비해 디스크 공간의 잠재적 감소 추정치가 포함됩니다.
구문
ANALYZE COMPRESSION [ [ table_name ] [ ( column_name [, ...] ) ] ] [COMPROWS numrows]
파라미터
- table_name
-
임시 테이블을 포함한 특정 테이블에 대한 압축을 분석할 수 있습니다. 테이블은 테이블의 스키마 이름으로 정규화할 수 있습니다. 선택적으로 단일 테이블을 분석하도록 table_name을 지정할 수 있습니다. table_name을 지정하지 않으면 현재 연결된 데이터베이스에 있는 모든 테이블이 분석됩니다. 단일 ANALYZE COMPRESSION 문으로 table_name을 두 개 이상 지정할 수 없습니다.
- column_name
-
table_name을 지정하는 경우 테이블에 있는 하나 이상의 열을 지정할 수도 있습니다(괄호 안의 열로 구분된 목록으로).
- COMPROWS
-
압축 분석을 위한 샘플 크기로 사용할 행의 개수입니다. 분석은 각 데이터 조각의 행에서 실행됩니다. 예를 들어, COMPROWS 1000000(1,000,000)을 지정하고 시스템에 총 4개의 조각이 있는 경우 조각당 250,000개의 행만 읽히고 분석됩니다. COMPROWS가 지정되지 않은 경우 샘플 크기는 기본적으로 조각당 100,000개입니다. 기본값인 조각당 100,000개의 행보다 낮은 COMPROWS 값은 자동으로 기본값으로 업그레이드됩니다. 하지만 테이블에 있는 데이터의 양이 유의미한 샘플을 생성하기에 부족한 경우 압축 분석에서는 권장 사항을 제시하지 않습니다. COMPROWS 숫자가 테이블의 행 개수보다 큰 값이면 ANALYZE COMPRESSION 명령이 계속 진행하고 사용 가능한 모든 행에 대한 압축 분석을 실행합니다. 테이블이 지정되지 않은 경우 COMPROWS를 사용하면 오류가 발생합니다.
- 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