

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# ANALYZE
<a name="r_ANALYZE"></a>

쿼리 플래너가 사용할 테이블 통계를 업데이트합니다.

## 필수 권한
<a name="r_ANALYZE-privileges"></a>

ANALYZE에 필요한 권한은 다음과 같습니다.
+ 수퍼유저
+ ANALYZE 권한이 있는 사용자
+ 관계 소유자
+ 테이블이 공유되는 데이터베이스 소유자

## 구문
<a name="r_ANALYZE-synopsis"></a>

```
ANALYZE [ VERBOSE ]
[ [ table_name [ ( column_name [, ...] ) ] ]
[ PREDICATE COLUMNS | ALL  COLUMNS ]
```

## 파라미터
<a name="r_ANALYZE-parameters"></a>

상세 표시   
ANALYZE 작업의 진행률 정보 메시지를 반환하는 절입니다. 이 옵션은 테이블을 지정하지 않을 때 유용합니다.

 *table\$1name*   
임시 테이블을 포함한 특정 테이블을 분석할 수 있습니다. 테이블은 테이블의 스키마 이름으로 정규화할 수 있습니다. 선택적으로 단일 테이블을 분석하도록 table\$1name을 지정할 수 있습니다. 단일 ANALYZE *table\$1name* 문으로 *table\$1name*을 여러 개 지정할 수 없습니다. *table\$1name* 값을 지정하지 않으면 시스템 카탈로그의 영구 테이블을 포함하여 현재 연결된 데이터베이스의 모든 테이블이 분석됩니다. Amazon Redshift는 마지막 ANALYZE 이후 변경된 행의 비율이 분석 임계값보다 낮은 경우 테이블 분석을 건너뜁니다. 자세한 내용은 [분석 임계값](#r_ANALYZE-threshold) 섹션을 참조하세요.  
Amazon Redshift 시스템 테이블(STL 및 STV 테이블)을 분석할 필요는 없습니다.

 *column\$1name*   
*table\$1name*을 지정하는 경우 테이블에 있는 하나 이상의 열을 지정할 수도 있습니다(괄호 안의 열로 구분된 목록으로). 열 목록을 지정하면 나열된 열만 분석됩니다.

 PREDICATE COLUMNS \$1 ALL COLUMNS   
ANALYZE에 조건자 열만 포함시킬지 나타내는 절입니다. 이전 쿼리에서 조건자로 사용되었거나 조건자로 사용될 수 있는 열만 분석하려면 PREDICATE COLUMNS를 지정합니다. 모든 열을 분석하려면 ALL COLUMNS를 지정합니다. 기본값은 ALL COLUMNS입니다.  
열이 조건자 열 집합에 포함되기 위해서는 다음 중 한 가지만 만족하면 됩니다.  
+ 열이 쿼리에서 filter, join condition 또는 group by 절의 일부로 사용되었습니다.
+ 분산 키인 열
+ 정렬 키에 포함되는 열
예를 들어 테이블에 대한 쿼리를 아직 실행하지 않아서 조건자 열로 표시되는 열이 하나도 없는 경우에는 PREDICATE COLUMNS로 지정하더라도 모든 열이 분석됩니다. 이 경우 Amazon Redshift는 '*table-name*'에 대한 조건자 열을 찾을 수 없음과 같은 메시지로 응답할 수 있습니다. 모든 열을 분석하고 있습니다. 조건자 열에 대한 자세한 내용은 [테이블 분석](t_Analyzing_tables.md) 섹션을 참조하세요.

## 사용 노트
<a name="r_ANALYZE-usage-notes"></a>

Amazon Redshift는 다음 명령으로 생성하는 테이블에서 ANALYZE를 자동으로 실행합니다.
+ CREATE TABLE AS
+ CREATE TEMP TABLE AS 
+ SELECT INTO

 외부 테이블은 분석할 수 없습니다.

이 테이블들이 처음 생성될 때는 테이블에서 ANALYZE 명령을 실행할 필요가 없습니다. 테이블을 수정하는 경우, 다른 테이블과 같은 방법으로 분석해야 합니다.

### 분석 임계값
<a name="r_ANALYZE-threshold"></a>

처리 시간을 단축하고 전체 시스템 성능을 개선하기 위해 Amazon Redshift는 마지막 ANALYZE 명령 실행 이후로 변경된 행의 비율이 [analyze\$1threshold\$1percent](r_analyze_threshold_percent.md) 파라미터에 의해 지정된 분석 임계값보다 낮은 경우 테이블 ANALYZE를 건너뜁니다. 기본적으로 `analyze_threshold_percent`는 10입니다. 현재 세션에 대한 `analyze_threshold_percent`를 변경하려면 [SET](r_SET.md) 명령을 실행합니다. 다음 예에서는 `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\$1ANALYZE](r_STL_ANALYZE.md) 시스템 테이블을 쿼리하세요.

테이블 분석에 대한 자세한 내용은 [테이블 분석](t_Analyzing_tables.md) 섹션을 참조하세요.

## 예제
<a name="r_ANALYZE-examples"></a>

TICKIT 데이터베이스에 있는 모든 테이블을 분석하고 진행률 정보를 반환합니다.

```
analyze verbose;
```

LISTING 테이블만 분석합니다.

```
analyze listing;
```

VENUE 테이블에서 VENUEID 및 VENUENAME 열을 분석합니다.

```
analyze venue(venueid, venuename);
```

VENUE 테이블에서 조건자 열만 분석합니다.

```
analyze venue predicate columns;
```