SEARCH_OPTIMIZATION_HISTORY
SEARCH_OPTIMIZATION_HISTORY
SEARCH_OPTIMIZATION_HISTORY 테이블 함수는 지정된 날짜 범위 내에서 지정된 테이블에 대해 검색 최적화 서비스(search optimization service)가 유지 관리하는 인덱스의 유지 관리 기록을 조회하는 데 사용해요. 이 함수가 반환하는 정보에는 인덱스, 기본 테이블, 그리고 유지 관리 작업이 발생할 때마다 소비된 크레딧이 포함돼요.
Enterprise Edition 기능: 이 기능은 Enterprise Edition(또는 그 이상)을 요구해요. 업그레이드에 대해 문의하려면 Snowflake 지원팀에 연락하세요.
참고: 이 함수는 일반적으로 더 완전한 데이터 집합을 제공하고 더 긴 날짜 범위를 지원하는 ACCOUNT_USAGE.SEARCH_OPTIMIZATION_HISTORY 뷰를 위해 폐기(deprecated)되었어요.
INDEX_ID, INDEX_NAME, INDEX_TYPE, BASE_TABLE_ID, BASE_TABLE_NAME 열은 SEARCH_OPTIMIZATION_HISTORY 뷰가 "새 열 및 열 변경 (Pending)"(New columns and column changes)을 활성화할 때 TABLE_NAME을 대체해요. TABLE_NAME을 조회하는 스크립트가 있다면 새 열 이름을 사용하도록 업데이트하세요.
출처: 문서
본문
문법 (Syntax)
SEARCH_OPTIMIZATION_HISTORY(
[ DATE_RANGE_START => <constant_expr> ]
[ , DATE_RANGE_END => <constant_expr> ]
[ , TABLE_NAME => '<string>' ] )
인자 (Arguments)
모든 인자는 선택적이에요.
- DATE_RANGE_START => constant_expr , DATE_RANGE_END => constant_expr — 기록을 표시할 날짜/시간 범위예요. 예를 들어 시작 날짜를 2019-04-03, 끝 날짜를 2019-04-05로 지정하면 4월 3일, 4월 4일, 4월 5일의 데이터를 얻어요. (양 끝점이 포함돼요.) 시작 날짜와 끝 날짜를 모두 지정하지 않으면 기본값은 최근 12시간이에요. 끝 날짜를 지정하지 않고 시작 날짜만 지정하면 자정의 CURRENT_DATE가 범위의 끝으로 사용돼요. 시작 날짜를 지정하지 않고 끝 날짜만 지정하면 DATE_RANGE_END 시작 12시간 전부터 범위가 시작돼요.
- TABLE_NAME => string — 테이블 이름이에요. 지정하면 지정된 테이블의 기록만 표시해요. 이름에 스키마 이름과 데이터베이스 이름을 포함할 수 있어요. 이름을 지정하지 않으면 지정된 시간 범위 내에서 유지 관리가 발생한 검색 최적화 서비스 인덱스를 가진 각 테이블의 데이터가 결과에 포함돼요.
사용 메모 (Usage notes)
- ACCOUNTADMIN 역할 또는 MONITOR USAGE 글로벌 특권을 명시적으로 부여받은 역할에 대해서만 결과를 반환해요. > 참고: MONITOR USAGE 특권을 가진 역할은 객체별 크레딧 사용량을 볼 수 있지만 객체 이름은 볼 수 없어요. 이 함수가 객체 이름을 반환하려면 역할에 객체에 대한 SELECT도 부여되어야 해요. 역할이 객체 이름을 볼 수 있는 충분한 특권이 없으면 객체 이름이 "unknown_#" 같은 대체 이름으로 표시될 수 있어요. 여기서 "#"는 하나 이상의 숫자를 나타내요.
- 정보 스키마(Information Schema) 테이블 함수를 호출할 때 세션에 INFORMATION_SCHEMA 스키마가 사용 중이거나 함수 이름이 정규화되어야 해요. 자세한 내용은 Snowflake Information Schema를 참조하세요.
- 기록은 1시간 단위로 표시돼요.
출력 (Output)
이 함수는 다음 열을 반환해요:
| 열 이름 (Column Name) | 데이터 타입 (Data Type) | 설명 (Description) |
|---|---|---|
| START_TIME | TIMESTAMP_LTZ | 지정된 시간 범위의 시작 |
| END_TIME | TIMESTAMP_LTZ | 지정된 시간 범위의 끝 |
| CREDITS_USED | TEXT | START_TIME과 END_TIME 구간 동안 검색 최적화 서비스 인덱스 유지 관리에 대해 청구된 크레딧 수 |
| INDEX_ID | NUMBER | 인덱스의 내부/시스템 생성 식별자. TABLE_ID를 대체해요. |
| INDEX_NAME | TEXT | 인덱스의 이름. TABLE_NAME을 대체해요. 검색 최적화 인덱스의 경우 <base_table_id> 형식의 SEARCH OPTIMIZATION ON: 시스템 생성 별칭이에요. 검색 최적화 보조 인덱스의 경우 고객이 정의한 인덱스 이름이에요. |
| INDEX_TYPE | TEXT | 검색 최적화 서비스가 유지 관리하는 인덱스의 유형. 가능한 값은 Search Optimization Index와 Secondary Index예요. Secondary Index는 하이브리드 테이블 보조 인덱스가 아니에요. |
| BASE_TABLE_ID | NUMBER | 기본 테이블의 내부/시스템 생성 식별자 |
| BASE_TABLE_NAME | TEXT | 기본 테이블의 이름 |
예제 (Examples)
계정의 1시간 범위에 대한 기록을 검색해요:
select *
from table(information_schema.search_optimization_history(
date_range_start=>'2019-05-22 19:00:00.000',
date_range_end=>'2019-05-22 20:00:00.000'));
다음은 샘플 출력이에요:
+-------------------------------+-------------------------------+--------------+---------+------------------------------+---------------------------+---------------+-----------------+
| START_TIME | END_TIME | CREDITS_USED | INDEX_ID | INDEX_NAME | INDEX_TYPE | BASE_TABLE_ID | BASE_TABLE_NAME |
|-------------------------------+-------------------------------+--------------+---------+------------------------------+---------------------------+---------------+-----------------|
| 2019-05-22 19:00:00.000 -0700 | 2019-05-22 20:00:00.000 -0700 | 0.223276651 | 42 | SEARCH OPTIMIZATION ON: 1200 | Search Optimization Index | 1200 | TEST_TABLE_1 |
+-------------------------------+-------------------------------+--------------+---------+------------------------------+---------------------------+---------------+-----------------+
계정의 최근 12시간 기록을 검색해요:
select *
from table(information_schema.search_optimization_history(
date_range_start=>dateadd(H, -12, current_timestamp)));
지정된 테이블의 지난주 기록을 검색해요:
select *
from table(information_schema.search_optimization_history(
date_range_start=>dateadd(D, -7, current_date),
date_range_end=>current_date,
table_name=>'mydb.myschema.my_table')
);
계정의 모든 테이블에 대한 지난주 유지 관리 기록을 검색해요:
select *
from table(information_schema.search_optimization_history(
date_range_start=>dateadd(D, -7, current_date),
date_range_end=>current_date)
);