Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 블로그 게시물
시스템 테이블 쿼리
드라이버 메타데이터 API 또는 SHOW 명령이 요구 사항을 충족하지 않는 경우 PostgreSQL 카탈로그 테이블(pg_*), 정보 스키마(information_schema) 또는 SVV_TABLE_INFO 같은 Amazon Redshift 시스템 뷰를 직접 쿼리할 수 있습니다.
이 접근 방식은 Amazon Redshift Query Editor V2 또는 psql 같은 대화형 SQL 쿼리에서 실행하는 임시 탐색, 디버깅 또는 관리 작업에 유용합니다. 그러나 시스템 카탈로그 구조는 Amazon Redshift 릴리스에서 변경될 수 있습니다. 프로덕션 애플리케이션 통합을 위한 메타데이터 인터페이스로 직접 시스템 테이블 쿼리를 사용하지 않는 것이 좋습니다.
시스템 테이블을 쿼리할 때는 다음 모범 사례를 따르세요.
-
데이터베이스, 스키마 및 테이블을 지정합니다. 최상의 성능을 위해 쿼리 필터에 데이터베이스 이름, 스키마 이름 및 테이블 이름을 포함합니다. 범위를 좁히면 Amazon Redshift가 스캔하고 반환하는 데 필요한 메타데이터의 양이 줄어듭니다.
-
등식 또는 LIKE 필터를 사용합니다.
WHERE절에서 등식(=) 또는LIKE조건자를 사용하여 결과 범위를 좁힙니다. 대규모 카탈로그 뷰에 대해 필터링되지 않은 쿼리를 피합니다. 객체가 많은 클러스터에서는 속도가 느릴 수 있습니다. -
필터 조건자의 함수를 피합니다. 시스템 테이블 쿼리를 필터링할 때
WHERE절에서LOWER()또는 문자열 연결과 같은 함수를 사용하지 마세요. 그러면 효율적인 메타데이터 조회가 방해되고 쿼리 성능이 크게 저하될 수 있습니다.
안티 패턴과 권장 쿼리의 예
-- Avoid: SELECT * FROM svv_all_columns; -- Recommended: SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public' AND table_name = 'sales';
-- Avoid: SELECT * FROM svv_all_columns WHERE LOWER(schema_name) = 'public'; -- Recommended: SELECT * FROM svv_all_columns WHERE schema_name = 'public' AND table_name LIKE 'sales%';
-- Avoid: SELECT * FROM svv_all_columns WHERE database_name || '.' || schema_name || '.' || table_name = 'dev.public.sales'; -- Recommended: SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public' AND table_name = 'sales';
-- Avoid: SELECT * FROM svv_all_columns WHERE CONCAT(database_name, '.', schema_name) = 'dev.public'; -- Recommended: SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public';