View a markdown version of this page

시스템 테이블 쿼리 - Amazon Redshift

Amazon Redshift는 2026년 6월 30일 이후에 Python UDF 사용을 더 이상 지원하지 않습니다. 해당 조치는 단계적으로 시행될 예정입니다. Python 수명 종료 및 마이그레이션 옵션에 대한 자세한 내용은 2025년 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';