Redshift 입문
Jason Myers
Principal Engineer
CREATE TABLE IDAHO_SITE_ID
(
'pk_siteid' INTEGER PRIMARY KEY,
'fk_monitoringlocation' INTEGER,
'organization_id' VARCHAR(31),
'organizationformalname' VARCHAR(68),
'organization' VARCHAR(16)
);

DISTKEY, 또는 PRIMARY KEY 사용| Name | Description | Usage |
|---|---|---|
| ALL | 모든 노드에 전체 테이블 복제 | 조인에 자주 쓰는 작은 조회 테이블 |
| KEY | DISTKEY 열 기준으로 분산 | DISTKEY로 집계/조인할 때 |
| EVEN | 행 단위로 균등 분산 | 키가 없는 대용량 테이블 |
| AUTO | 작은 테이블은 ALL, 적절한 DISTKEY가 있으면 성장 시 KEY, 없으면 EVEN | 기본값 |
CREATE TABLE IDAHO_SITE_ID
(
'pk_siteid' INTEGER PRIMARY KEY,
'fk_monitoringlocation' INTEGER,
'organization_id' VARCHAR(31),
'organizationformalname' VARCHAR(68),
'organization' VARCHAR(16)
)
-- 데이터 배포 키를
-- organization_id로 설정
DISTKEY(organization_id);
CREATE TABLE IDAHO_SITE_ID
(
'pk_siteid' INTEGER PRIMARY KEY,
'fk_monitoringlocation' INTEGER,
-- organization_id를 데이터
-- 배포 키로 설정
'organization_id' VARCHAR(31) DISTKEY,
'organizationformalname' VARCHAR(68),
'organization' VARCHAR(16)
);
CREATE TABLE IDAHO_SITE_ID
(
'pk_siteid' INTEGER PRIMARY KEY,
'fk_monitoringlocation' INTEGER,
'organization_id' VARCHAR(31),
'organizationformalname' VARCHAR(68),
'organization' VARCHAR(16)
)
DISTKEY(organization_id)
-- 배포 스타일을 KEY로 설정
DISTSTYLE KEY;
CREATE TABLE IDAHO_SITE_ID
(
'pk_siteid' INTEGER PRIMARY KEY,
'fk_monitoringlocation' INTEGER,
'organization_id' VARCHAR(31),
'organizationformalname' VARCHAR(68),
'organization' VARCHAR(16)
)
DISTKEY(organization_id)
DISTSTYLE KEY
-- 데이터 정렬 키를
-- fk_monitoringlocation으로 설정
SORTKEY(fk_monitoringlocation);
CREATE TABLE IDAHO_SITE_ID
(
'pk_siteid' INTEGER PRIMARY KEY,
'fk_monitoringlocation' INTEGER,
'organization_id' VARCHAR(31),
'organizationformalname' VARCHAR(68),
'organization' VARCHAR(16)
)
-- fk_monitoringlocation, organization_id를 복합 정렬 키로 설정
COMPOUND SORTKEY(fk_monitoringlocation, organization_id);
-- 열의 dist 및 sortkey 상태 보기
SELECT column_name,
distkey,
sortkey
FROM SVV_REDSHIFT_COLUMNS
-- spectrumdb 스키마에서만
WHERE schema_name = 'spectrumdb'
-- ecommerce_sales 테이블에 대해
AND table_name = 'ecommerce_sales';
결과
column | distkey | sortkey
============|=========|========
year_qtr | t | 1
total_sales | f | 2
ecom_sales | f | 0
Distkey 열
SVV_TABLE_INFOtable | encoded | diststyle | sortkey1 | skew_sortkey1 | skew_rows
===============|=========|=================|==============|===============|===========
ecommerce_sales| N | KEY(year_qtr) | year_qtr | |
date | N | ALL | dateid | 1.00 |
SELECT table
diststyle
FROM SVV_TABLE_INFO
WHERE schema like 'spectrumdb';
table | diststyle
================|==============
ecommerce_sales | KEY(year_qtr)
Redshift 입문