Tabulky v Redshiftu

Introduction to Redshift

Jason Myers

Principal Engineer

Vytváření tabulek

CREATE TABLE IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    'fk_monitoringlocation' INTEGER,
    'organization_id' VARCHAR(31),
    'organizationformalname' VARCHAR(68),
    'organization' VARCHAR(16)
);
Introduction to Redshift

Distribuce dat

Cluster Redshift

  • Distribuováno přes výpočetní uzly
  • Používá interní row id Redshiftu, DISTKEY nebo PRIMARY KEY
  • Více stylů distribuce
Introduction to Redshift

Styly distribuce

Název Popis Použití
ALL Celá tabulka na každém uzlu Malé vyhledávací tabulky často používané v joinech
KEY Distribuce podle dat ve sloupci DISTKEY Při agregaci nebo joinu podle DISTKEY
EVEN Distribuce řádků rovnoměrně po uzlech Velké tabulky bez klíčů
AUTO Pro malé tabulky ALL, s růstem KEY (pokud existují vhodné DISTKEY), jinak EVEN výchozí
Introduction to Redshift

DISTKEY

CREATE TABLE IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    'fk_monitoringlocation' INTEGER,
    'organization_id' VARCHAR(31),
    'organizationformalname' VARCHAR(68),
    'organization' VARCHAR(16)
)
-- Sets the data distribution key 
-- to organization_id
DISTKEY(organization_id);
CREATE TABLE IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    'fk_monitoringlocation' INTEGER,
    -- Sets organization_id as the data 
    -- distribution key 
    'organization_id' VARCHAR(31) DISTKEY,
    'organizationformalname' VARCHAR(68),
    'organization' VARCHAR(16)
);
Introduction to Redshift

Nastavení stylu distribuce

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)
-- Sets the distribution style to key
DISTSTYLE KEY;
Introduction to Redshift

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
-- Sets the data sort key 
-- to fk_monitoringlocation
SORTKEY(fk_monitoringlocation);
  • Řídí pořadí ukládání dat na disku
  • Zesiluje efekt predicate-pushdown
  • Lze definovat více klíčů
Introduction to Redshift

Definování více klíčů SORTKEY

CREATE TABLE IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    'fk_monitoringlocation' INTEGER,
    'organization_id' VARCHAR(31),
    'organizationformalname' VARCHAR(68),
    'organization' VARCHAR(16)
)
-- Sets fk_monitoringlocation, organization_id as compound sort keys
COMPOUND SORTKEY(fk_monitoringlocation, organization_id);
Introduction to Redshift

Zobrazení stavu DISTKEY a SORTKEY sloupce

-- View the dist and sortkey
-- status of a column
SELECT column_name, 
       distkey, 
       sortkey
  FROM SVV_REDSHIFT_COLUMNS
 -- Only in the spectrumdb schema
 WHERE schema_name = 'spectrumdb'
   -- For the ecommerce_sales table
   AND table_name = 'ecommerce_sales';
  • Výsledky

       column   | distkey | sortkey
    ============|=========|========
    year_qtr    | t       | 1
    total_sales | f       | 2
    ecom_sales  | f       | 0
    
  • Sloupec Distkey

    • t = True, f = False
  • Sloupec SORTKEY
    • # = pozice v sort key, 0 = není součástí sortkey
Introduction to Redshift

Zobrazení stylu distribuce

  • SVV_TABLE_INFO
  • Detaily tabulky ovlivňující výkon dotazů
    • styl distribuce
    • zkreslení distribuce
    • velikost tabulky
    • sortkeys
    • zkreslení sortkey
table          | encoded | diststyle       | sortkey1     | skew_sortkey1 | skew_rows
===============|=========|=================|==============|===============|===========
ecommerce_sales| N       | KEY(year_qtr)   | year_qtr     |               |          
date           | N       | ALL             | dateid       |          1.00 |
Introduction to Redshift

Zobrazení stylu distribuce – pokračování

SELECT table
       diststyle 
  FROM SVV_TABLE_INFO
 WHERE schema like 'spectrumdb';
table           | diststyle 
================|============== 
ecommerce_sales | KEY(year_qtr)
Introduction to Redshift

Pojďme si procvičit!

Introduction to Redshift

Preparing Video For Download...