ANALYZE
쿼리 플래너가 사용할 테이블 통계를 업데이트합니다.
필수 권한
ANALYZE에 필요한 권한은 다음과 같습니다.
수퍼유저
ANALYZE 권한이 있는 사용자
관계 소유자
테이블이 공유되는 데이터베이스 소유자
구문
ANALYZE [ VERBOSE ] [ [ table_name [ ( column_name [, ...] ) ] ] [ PREDICATE COLUMNS | ALL COLUMNS ]
파라미터
- 상세 표시
-
ANALYZE 작업의 진행률 정보 메시지를 반환하는 절입니다. 이 옵션은 테이블을 지정하지 않을 때 유용합니다.
- table_name
-
임시 테이블을 포함한 특정 테이블을 분석할 수 있습니다. 테이블은 테이블의 스키마 이름으로 정규화할 수 있습니다. 선택적으로 단일 테이블을 분석하도록 table_name을 지정할 수 있습니다. 단일 ANALYZE table_name 문으로 table_name을 여러 개 지정할 수 없습니다. table_name 값을 지정하지 않으면 시스템 카탈로그의 영구 테이블을 포함하여 현재 연결된 데이터베이스의 모든 테이블이 분석됩니다. Amazon Redshift는 마지막 ANALYZE 이후 변경된 행의 비율이 분석 임계값보다 낮은 경우 테이블 분석을 건너뜁니다. 자세한 내용은 분석 임계값 단원을 참조하십시오.
Amazon Redshift 시스템 테이블(STL 및 STV 테이블)을 분석할 필요는 없습니다.
- column_name
-
table_name을 지정하는 경우 테이블에 있는 하나 이상의 열을 지정할 수도 있습니다(괄호 안의 열로 구분된 목록으로). 열 목록을 지정하면 나열된 열만 분석됩니다.
- PREDICATE COLUMNS | ALL COLUMNS
-
ANALYZE에 조건자 열만 포함시킬지 나타내는 절입니다. 이전 쿼리에서 조건자로 사용되었거나 조건자로 사용될 수 있는 열만 분석하려면 PREDICATE COLUMNS를 지정합니다. 모든 열을 분석하려면 ALL COLUMNS를 지정합니다. 기본값은 ALL COLUMNS입니다.
열이 조건자 열 집합에 포함되기 위해서는 다음 중 한 가지만 만족하면 됩니다.
-
열이 쿼리에서 filter, join condition 또는 group by 절의 일부로 사용되었습니다.
-
분산 키인 열
-
정렬 키에 포함되는 열
예를 들어 테이블에 대한 쿼리를 아직 실행하지 않아서 조건자 열로 표시되는 열이 하나도 없는 경우에는 PREDICATE COLUMNS로 지정하더라도 모든 열이 분석됩니다. 이 경우 Amazon Redshift는
'
. 조건자 열에 대한 자세한 내용은 테이블 분석 섹션을 참조하세요.table-name
'에 대한 조건자 열을 찾을 수 없음과 같은 메시지로 응답할 수 있습니다. 모든 열을 분석하고 있습니다 -
사용 노트
Amazon Redshift는 다음 명령으로 생성하는 테이블에서 ANALYZE를 자동으로 실행합니다.
-
CREATE TABLE AS
-
CREATE TEMP TABLE AS
-
SELECT INTO
외부 테이블은 분석할 수 없습니다.
이 테이블들이 처음 생성될 때는 테이블에서 ANALYZE 명령을 실행할 필요가 없습니다. 테이블을 수정하는 경우, 다른 테이블과 같은 방법으로 분석해야 합니다.
분석 임계값
처리 시간을 단축하고 전체 시스템 성능을 개선하기 위해 Amazon Redshift는 마지막 ANALYZE 명령 실행 이후로 변경된 행의 비율이 analyze_threshold_percent 파라미터에 의해 지정된 분석 임계값보다 낮은 경우 테이블 ANALYZE를 건너뜁니다. 기본적으로 analyze_threshold_percent
는 10입니다. 현재 세션에 대한 analyze_threshold_percent
를 변경하려면 SET 명령을 실행합니다. 다음 예에서는 analyze_threshold_percent
를 20퍼센트로 변경합니다.
set analyze_threshold_percent to 20;
소수의 행만 변경되었을 때 테이블을 분석하려면 analyze_threshold_percent
를 임의의 작은 수로 설정하십시오. 예를 들어 analyze_threshold_percent
를 0.01로 설정하면 10,000개 이상의 행이 변경된 경우 100,000,000개의 행이 있는 테이블을 건너뛰지 않습니다.
set analyze_threshold_percent to 0.01;
테이블이 분석 임계값을 충족하지 못해 ANALYZE가 테이블을 건너뛰는 경우 Amazon Redshift는 다음 메시지를 반환합니다.
ANALYZE SKIP
변경된 행이 없더라도 모든 테이블을 분석하려면 analyze_threshold_percent
를 0으로 설정하십시오.
ANALYZE 작업의 결과를 보려면 STL_ANALYZE 시스템 테이블을 쿼리하십시오.
테이블 분석에 대한 자세한 내용은 테이블 분석 섹션을 참조하세요.
예시
TICKIT 데이터베이스에 있는 모든 테이블을 분석하고 진행률 정보를 반환합니다.
analyze verbose;
LISTING 테이블만 분석합니다.
analyze listing;
VENUE 테이블에서 VENUEID 및 VENUENAME 열을 분석합니다.
analyze venue(venueid, venuename);
VENUE 테이블에서 조건자 열만 분석합니다.
analyze venue predicate columns;