Bảng trong Redshift

Giới thiệu về Redshift

Jason Myers

Principal Engineer

Tạo bảng

CREATE TABLE IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    'fk_monitoringlocation' INTEGER,
    'organization_id' VARCHAR(31),
    'organizationformalname' VARCHAR(68),
    'organization' VARCHAR(16)
);
Giới thiệu về Redshift

Phân phối dữ liệu

Cụm Redshift

  • Phân phối trên các compute node
  • Dùng Redshift internal row id, DISTKEY hoặc PRIMARY KEY
  • Nhiều kiểu phân phối
Giới thiệu về Redshift

Các kiểu phân phối

Name Description Usage
ALL Toàn bộ bảng trên mọi node Bảng tra cứu nhỏ dùng thường xuyên trong join
KEY Phân phối theo dữ liệu trong cột DISTKEY Khi tổng hợp hoặc join theo DISTKEY
EVEN Phân phối vòng lượt theo hàng giữa các node Bảng lớn không có key
AUTO Dùng ALL cho bảng nhỏ. Khi lớn nếu có DISTKEY phù hợp sẽ dùng Key, nếu không thì EVEN mặc định
Giới thiệu về 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)
)
-- Thiết lập khóa phân phối dữ liệu 
-- là organization_id
DISTKEY(organization_id);
CREATE TABLE IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    'fk_monitoringlocation' INTEGER,
    -- Thiết lập organization_id 
    -- làm khóa phân phối dữ liệu 
    'organization_id' VARCHAR(31) DISTKEY,
    'organizationformalname' VARCHAR(68),
    'organization' VARCHAR(16)
);
Giới thiệu về Redshift

Thiết lập kiểu phân phối

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)
-- Thiết lập kiểu phân phối là key
DISTSTYLE KEY;
Giới thiệu về 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
-- Thiết lập sort key 
-- cho fk_monitoringlocation
SORTKEY(fk_monitoringlocation);
  • Kiểm soát thứ tự lưu trên đĩa
  • Tăng hiệu quả predicate-pushdown
  • Có thể có nhiều khóa
Giới thiệu về Redshift

Định nghĩa nhiều SORTKEY

CREATE TABLE IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    'fk_monitoringlocation' INTEGER,
    'organization_id' VARCHAR(31),
    'organizationformalname' VARCHAR(68),
    'organization' VARCHAR(16)
)
-- Thiết lập fk_monitoringlocation, organization_id là compound sort keys
COMPOUND SORTKEY(fk_monitoringlocation, organization_id);
Giới thiệu về Redshift

Xem trạng thái DISTKEY và SORTKEY của cột

-- Xem dist và sortkey
-- của một cột
SELECT column_name, 
       distkey, 
       sortkey
  FROM SVV_REDSHIFT_COLUMNS
 -- Chỉ trong schema spectrumdb
 WHERE schema_name = 'spectrumdb'
   -- Cho bảng ecommerce_sales
   AND table_name = 'ecommerce_sales';
  • Kết quả

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

    • t là True - f là False
  • Cột SORTKEY
    • # là vị trí trong sort key, 0 là không thuộc sortkey
Giới thiệu về Redshift

Xem kiểu phân phối

  • SVV_TABLE_INFO
  • Thông tin bảng ảnh hưởng hiệu năng truy vấn
    • kiểu phân phối
    • độ lệch phân phối
    • kích thước bảng
    • sortkeys
    • độ lệch sortkey
table          | encoded | diststyle       | sortkey1     | skew_sortkey1 | skew_rows
===============|=========|=================|==============|===============|===========
ecommerce_sales| N       | KEY(year_qtr)   | year_qtr     |               |          
date           | N       | ALL             | dateid       |          1.00 |
Giới thiệu về Redshift

Xem kiểu phân phối (tiếp)

SELECT table
       diststyle 
  FROM SVV_TABLE_INFO
 WHERE schema like 'spectrumdb';
table           | diststyle 
================|============== 
ecommerce_sales | KEY(year_qtr)
Giới thiệu về Redshift

Ayo berlatih!

Giới thiệu về Redshift

Preparing Video For Download...