Redshift'te Tablolar

Redshift’e Giriş

Jason Myers

Principal Engineer

Tablo Oluşturma

CREATE TABLE IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    'fk_monitoringlocation' INTEGER,
    'organization_id' VARCHAR(31),
    'organizationformalname' VARCHAR(68),
    'organization' VARCHAR(16)
);
Redshift’e Giriş

Veriyi dağıtma

Redshift Kümesi

  • İşlem düğümleri arasında dağıtılır
  • Redshift dahili satır kimliği, DISTKEY veya PRIMARY KEY kullanır
  • Birkaç dağıtım stili vardır
Redshift’e Giriş

Dağıtım stilleri

Name Description Usage
ALL Tablonun tamamı her düğümde Join'lerde sıkça gereken küçük look-up fact tabloları
KEY DISTKEY sütunundaki veriye göre dağıtım DISTKEY ile özetleme ya da join
EVEN Satır bazında sırayla düğümlere dağıtım Anahtarı olmayan büyük tablolar
AUTO Küçük tablolar için ALL. Uygun DISTKEY varsa büyüdükçe KEY, yoksa EVEN varsayılan
Redshift’e Giriş

DISTKEY

CREATE TABLE IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    'fk_monitoringlocation' INTEGER,
    'organization_id' VARCHAR(31),
    'organizationformalname' VARCHAR(68),
    'organization' VARCHAR(16)
)
-- Veri dağıtım anahtarını 
-- organization_id olarak ayarlar
DISTKEY(organization_id);
CREATE TABLE IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    'fk_monitoringlocation' INTEGER,
    -- Veri dağıtım anahtarını 
    -- organization_id olarak ayarlar 
    'organization_id' VARCHAR(31) DISTKEY,
    'organizationformalname' VARCHAR(68),
    'organization' VARCHAR(16)
);
Redshift’e Giriş

Dağıtım stilini ayarlama

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)
-- Dağıtım stilini key olarak ayarlar
DISTSTYLE KEY;
Redshift’e Giriş

SORTKEY

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
-- Veri sıralama anahtarını 
-- fk_monitoringlocation olarak ayarlar
SORTKEY(fk_monitoringlocation);
  • Diskteki depolama sırasını kontrol eder
  • Predicate-pushdown gücünü artırır
  • Birden fazla olabilir
Redshift’e Giriş

Birden çok SORTKEY tanımlama

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 alanlarını bileşik sort key yapar
COMPOUND SORTKEY(fk_monitoringlocation, organization_id);
Redshift’e Giriş

Sütun DISTKEY ve SORTKEY durumunu görüntüleme

-- Bir sütunun dist ve sortkey
-- durumunu görüntüleyin
SELECT column_name, 
       distkey, 
       sortkey
  FROM SVV_REDSHIFT_COLUMNS
 -- Yalnızca spectrumdb şemasında
 WHERE schema_name = 'spectrumdb'
   -- ecommerce_sales tablosu için
   AND table_name = 'ecommerce_sales';
  • Sonuçlar

       column   | distkey | sortkey
    ============|=========|========
    year_qtr    | t       | 1
    total_sales | f       | 2
    ecom_sales  | f       | 0
    
  • Distkey Sütunu

    • t True için - f False için
  • SORTKEY Sütunu
    • sort key içindeki konum, 0 sort key değil

Redshift’e Giriş

Dağıtım stilini görüntüleme

  • SVV_TABLE_INFO
  • Sorgu performansını etkileyen tablo ayrıntıları
    • dağıtım stili
    • dağıtım sapması
    • tablo boyutu
    • sortkey'ler
    • sortkey sapması
table          | encoded | diststyle       | sortkey1     | skew_sortkey1 | skew_rows
===============|=========|=================|==============|===============|===========
ecommerce_sales| N       | KEY(year_qtr)   | year_qtr     |               |          
date           | N       | ALL             | dateid       |          1.00 |
Redshift’e Giriş

Dağıtım stilini görüntüleme (devam)

SELECT table
       diststyle 
  FROM SVV_TABLE_INFO
 WHERE schema like 'spectrumdb';
table           | diststyle 
================|============== 
ecommerce_sales | KEY(year_qtr)
Redshift’e Giriş

Hadi pratik yapalım!

Redshift’e Giriş

Preparing Video For Download...