projection 생성 시점
Updated:
projection이 생성되는 시점
projection이 생성되는 시점은 아래와 같다.
- 테이블 생성 후 최초 데이터 저장 시점
- 테이블 생성시 프로젝션 속성을 함께 지정하는 경우(에> order by, segmentation-spec, ksafe등)
- 명시적으로 프로젝션을 생성하는 시점
- Database Designer(DBD)에 의해 생성하는 경우
테이블 생성 후 최초 데이터 저장 시점
dbadmin=> create table t1(col1 int, col2 int);
CREATE TABLE
dbadmin=> insert into t1 values(1, 1);
OUTPUT
--------
1
(1 row)
--테이블 생성 확인
dbadmin=> select table_name from tables where table_name = 't1';
table_name
------------
t1
(1 row)
--projection 생성 확인
dbadmin=> select anchor_table_name, projection_name from projections where anchor_table_name = 't1';
anchor_table_name | projection_name
-------------------+-----------------
t1 | t1_b1
t1 | t1_b0
(2 rows)
--테이블 관련 object DDL문 확인
dbadmin=> select export_objects('', 't1');
export_objects
----------------------------------------------------------------
CREATE TABLE public.t1
(
col1 int,
col2 int
);
CREATE PROJECTION public.t1 /*+createtype(L)*/
(
col1,
col2
)
AS
SELECT t1.col1,
t1.col2
FROM public.t1
ORDER BY t1.col1,
t1.col2
SEGMENTED BY hash(t1.col1, t1.col2) ALL NODES KSAFE 1;
SELECT MARK_DESIGN_KSAFE(1);
(1 row)
테이블 생성시 프로젝션 속성을 함께 지정하는 경우(order by, segmentation-spec, ksafe등)
dbadmin=> create table t2(col1 int, col2 int) order by col1 segmented by hash(col1) all nodes ;
CREATE TABLE
--테이블 생성 확인
dbadmin=> select table_name from tables where table_name = 't2';
table_name
------------
t2
(1 row)
--projection 생성 확인
dbadmin=> select anchor_table_name, projection_name from projections where anchor_table_name = 't2';
anchor_table_name | projection_name
-------------------+-----------------
t2 | t2_b1
t2 | t2_b0
(2 rows)
--테이블 관련 object DDL문 확인
dbadmin=> select export_objects('', 't2');
export_objects
----------------------------------------------------------------
CREATE TABLE public.t2
(
col1 int,
col2 int
);
CREATE PROJECTION public.t2 /*+createtype(P)*/
(
col1,
col2
)
AS
SELECT t2.col1,
t2.col2
FROM public.t2
ORDER BY t2.col1
SEGMENTED BY hash(t2.col1) ALL NODES KSAFE 1;
SELECT MARK_DESIGN_KSAFE(1);
(1 row)
명시적으로 프로젝션을 생성하는 시점
dbadmin=> create table t3(col1 int, col2 int) ;
CREATE TABLE
--projection 생성
dbadmin=> create projection t3_super as select t3.col1, t3.col2 from t3 order by t3.col1 segmented by hash(t3.col1) all nodes;
CREATE PROJECTION
--테이블 생성 확인
dbadmin=> select table_name from tables where table_name = 't3';
table_name
------------
t3
(1 row)
--projection 생성 확인
dbadmin=> select anchor_table_name, projection_name from projections where anchor_table_name = 't3';
anchor_table_name | projection_name
-------------------+-----------------
t3 | t3_super_b1
t3 | t3_super_b0
(2 rows)
--테이블 관련 object DDL문 확인
dbadmin=> select export_objects('', 't3');
export_objects
----------------------------------------------------------------
CREATE TABLE public.t3
(
col1 int,
col2 int
);
CREATE PROJECTION public.t3_super
(
col1,
col2
)
AS
SELECT t3.col1,
t3.col2
FROM public.t3
ORDER BY t3.col1
SEGMENTED BY hash(t3.col1) ALL NODES KSAFE 1;
SELECT MARK_DESIGN_KSAFE(1);
(1 row)