이 페이지에서는 PostgreSQL용 AlloyDB에서 제공하는 열 엔진을 간략하게 설명하고 사용 방법을 보여줍니다.
AlloyDB 열 기반 엔진은 다음 구성요소를 제공하여 스캔, 조인, 집계의 SQL 쿼리 처리 속도를 높입니다.
선택한 열의 테이블 및 materialized-view 데이터가 열 중심 형식으로 재구성된 열 스토어입니다.
쿼리에서 열 스토어 사용을 지원하는 열 형식 쿼리 계획자 및 실행 엔진입니다.
열 엔진은 기본 인스턴스, 읽기 풀 인스턴스 또는 둘 다에서 사용할 수 있습니다. 자동 열 정렬을 사용하여 워크로드를 분석하고 열 스토어에 최적의 성능 향상을 제공하는 열을 자동으로 채울 수도 있습니다.
특정 쿼리에서 열 기반 엔진을 사용하려면 조인 및 스캔과 같은 해당 쿼리 프래그먼트의 모든 열이 열 스토어에 있어야 합니다.
기본적으로 열 엔진은 인스턴스 메모리의 30% 를 사용하도록 설정됩니다. 워크로드, 메모리 사용량, 읽기 풀이 구성되어 있는지에 따라 기본 인스턴스의 열 엔진 메모리 할당을 줄이고 읽기 풀 인스턴스에 더 많은 메모리를 할당할 수 있습니다. 열 엔진별 메모리 사용량을 보고 모니터링하려면 열 스토어 메모리 사용량 보기를 참고하세요. 열 스토어에서 사용하는 메모리 크기를 수정하려면 열 스토어 크기 구성을 참고하세요. 인스턴스에 권장되는 열 기반 엔진 메모리 크기를 찾으려면 열 스토어 메모리 크기 추천을 참고하세요.
열 기반 엔진의 이점을 활용하는 쿼리 유형
특정 쿼리는 열 기반 엔진의 이점을 누릴 수 있습니다. 다음은 열 엔진의 이점을 가장 많이 누리는 작업 및 쿼리 패턴 목록입니다.
테이블 스캔
WHERE
절과 같은 선택적 필터가 있습니다.- 더 큰 테이블 또는 구체화된 뷰의 열을 소수만 사용합니다.
LIKE
,SUBSTR
, `TRIM과 같은 표현식을 사용합니다.
집계 함수
SUM
,MIN
,MAX
,AVG
,COUNT
표현식만 사용합니다.- 열 스캔 쿼리의 시작 부분에 있습니다.
- 그룹화되지 않았거나 열별로 그룹화되어 있습니다.
ORDER-BY
및SORT
:ORDER-BY
또는SORT
가 열 엔진에서 액세스한 열의 스캔 결과에 있는 경우에만 사용LIMIT
: 연산자가 열 스캔 쿼리의 시작 부분에 있고SORT
또는GROUP BY
연산자 앞에 있는 경우에만 적용됩니다.사용된 키가 열이고 조인 한정자가 사용되지 않는 경우에만
INNER HASH JOIN
조인이 열 스캔의 쿼리 시작 부분에 있는 경우에만 선택적 조인
열 형식 엔진과 가장 잘 호환되는 쿼리, 쿼리에서 열 형식 엔진이 사용되었는지 여부, 사용 방법에 관한 자세한 내용은 EXPLAIN
를 사용하여 열 형식 엔진 사용 확인을 참고하세요.
열 형식 엔진 사용 방법
AlloyDB 인스턴스에서 열 기반 엔진을 사용하려면 다음과 같은 대략적인 단계를 따르세요.
인스턴스에서 엔진을 사용 설정합니다.
엔진을 사용 설정하는 작업은 일회성이며 다시 시작해야 합니다.
열 저장소에 열을 추가합니다.
열 스토어에 열을 추가하려면 다음 방법 중 하나를 사용하세요.
워크로드를 분석하고 열을 자동으로 추가하는 자동 열 정렬 사용
인스턴스의 데이터베이스에 있는 워크로드에 대한 지식을 바탕으로 열을 수동으로 추가합니다.
g_columnar_relations
뷰를 사용하여 열 스토어에 있는 항목을 추적할 수 있으며, 열이 추가된 후에는EXPLAIN
문을 사용하여 SQL 쿼리에서 열 엔진의 사용을 확인할 수 있습니다.
열 형식 엔진을 사용하는 방법에 관한 자세한 내용은 열 형식 엔진 구성을 참고하세요.
열 스토어에 추가할 수 있는 데이터
열 스토어에 열을 추가할 때 사용할 수 있는 데이터 유형과 데이터 소스에는 몇 가지 제한사항이 있습니다.
지원되는 데이터 유형
열 엔진은 다음과 같은 기본 제공 데이터 유형이 있는 열만 지원합니다.
array
bigint
boolean
bytea
char
date
decimal
double precision
enum
float4
float8
integer
json
jsonb
numeric
real
serial
short
smallint
text
timestamp
timestamptz
uuid
varchar
열 엔진은 지원되지 않는 데이터 유형이 있는 열을 열 스토어에 수동으로 추가하려는 시도를 무시합니다.
지원되지 않는 데이터 소스
열 엔진은 다음 속성을 데이터 소스로 사용하는 테이블 또는 구체화된 뷰를 지원하지 않습니다.
리프가 아닌 파티션을 나눈 테이블
외부 테이블
행 수가 5,000개 미만인 테이블 또는 뷰
열 기반 엔진 제한사항
- 색인이 있는 열에 대해 분석 쿼리를 실행하는 경우 AlloyDB 최적화 도구가 행 저장소를 사용할 수 있습니다.
- 열 스토어에 수동으로 추가된 열은 자동으로 삭제되지 않습니다. 수동으로 추가된 열을 강제로 삭제하려면 인스턴스에서
google_columnar_engine_drop()
를 사용하세요. - 자동 열 정렬은 쿼리 사용량에 따라 열을 동적으로 추가하고 삭제할 수 있습니다.
- 열 엔진에서 지원하는 데이터 유형은 일부입니다. 지원되는 데이터 유형을 보려면 지원되는 데이터 유형을 참고하세요.
행을 자주 업데이트하면 열 데이터가 무효화됩니다. 열 스토어에서 테이블 또는 구체화된 뷰의 유효성을 검사하려면 업데이트 빈도를 줄이거나 열 엔진 새로고침을 더 자주 예약하면 됩니다.
g_columnar_relations의
invalid_block_count
및total_block_count
열을 비교하여 표 또는 보기가 영향을 받는지 확인할 수 있습니다. 테이블 또는 뷰가 자주 변경되거나 변경되는 양이 많으면invalid_block_count
가 높습니다.