๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ๊ณผ ๊ด€๋ฆฌ์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•œ ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…”๋‹์€ ํ•„์ˆ˜ ์š”๊ตฌ ๊ธฐ๋Šฅ์ด๋‹ค.ย  ์ดย ๊ธฐ๋Šฅ์€ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปฌ๋Ÿผ ๊ฐ’์— ์˜ํ•ด ํŒŒํ‹ฐ์…˜์ด๋ผ๊ณ  ํ•˜๋Š” ๋ณต์ˆ˜์˜ ์˜ค๋ธŒ์ ํŠธ๋กœ ๋ถ„ํ• ํ•œ๋‹ค.ย  ํŒŒํ‹ฐ์…”๋‹์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ์กฐํšŒ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋Œ€์šฉ๋Ÿ‰ ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋Œ€์‹ ์—ย  ๋ชฉํ‘œ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ผ๋ถ€ ํŒŒํ‹ฐ์…˜๋งŒ ๊ฒ€์ƒ‰ํ•˜๋ฏ€๋กœ์จ, ๋ฐ์ดํ„ฐ IO์ฒ˜๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.ย  ๊ฒ€์ƒ‰์—์„œ ์ œ์™ธ๋˜๋Š” ํŒŒํ‹ฐ์…˜์ด ๋งŽ์„์ˆ˜๋ก ํŒŒํ‹ฐ์…”๋‹์˜ ํšจ๊ณผ๋Š” ์ปค์ง„๋‹ค.ย 

ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…”๋‹์˜ ์ ์šฉ์œผ๋กœ ๋‹ค์–‘ํ•œ ์žฅ์  ๋ฐ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๋ณด๊ด€ ์ฃผ๊ธฐ ๊ด€๋ฆฌ –ย ๋ฐ์ดํ„ฐ ๋ณด๊ด€ ์ฃผ๊ธฐ์— ๋งž๋„๋ก ํšจ์œจ์  ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ํŒŒํ‹ฐ์…˜ ๋œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ๋กค์ธ(Roll-in)ํ•˜๋ฉด ์ƒˆ ํ–‰์„ ์‰ฝ๊ฒŒ ํŒŒํ‹ฐ์…˜ ๋œ ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ํ•˜์—ฌ ํ…Œ์ด๋ธ”์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๊ณ  ํŒŒํ‹ฐ์…˜ ๋œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ๋กค์•„์›ƒ(Roll-out) ํ•˜๋ฉด ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” ๋ณ„๋„ ํ…Œ์ด๋ธ”๋กœ ๋ถ„๋ฆฌ ๊ฐ€๋Šฅ
  • ๋Œ€ํ˜• ํ…Œ์ด๋ธ” ๊ด€๋ฆฌ ์šฉ์ด –ย ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด ๊ด€๋ฆฌ ํƒœ์Šคํฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ…Œ์ด๋ธ” ์ˆ˜์ค€ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ํƒœ์Šคํฌ์—๋Š” ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…˜์˜ ๋ฐฑ์—… ๋ฐ ๋ฆฌ์Šคํ† ์–ด, ๊ฐœ๋ณ„ ํŒŒํ‹ฐ์…˜ ์žฌ๊ตฌ์„ฑ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.
  • ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๊ฐœ์„  –ย  ์ฟผ๋ฆฌ์˜ ์ˆ ์–ด๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…˜์„ ์ œ๊ฑฐํ•  ์ˆ˜ย  ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…˜ ์ œ๊ฑฐ(elimination)๋ผ๊ณ  ํ•˜๋Š” ์ด ๊ธฐ๋Šฅ์€ ์—ฌ๋Ÿฌ ์˜์‚ฌ ๊ฒฐ์ • ์ง€์› ์ฟผ๋ฆฌ์— ๋„์›€์ด ๋œ๋‹ค.

 

๋ถ„ํ•  ์š”๊ฑด์— ๋”ฐ๋ผย Range, List, Hash ๊ธฐ๋ฒ•์œผ๋กœย ํŒŒํ‹ฐ์…˜ ํ…Œ์ด๋ธ”์„ย ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.ย 

1. Range ํŒŒํ‹ฐ์…”๋‹

Range ํŒŒํ‹ฐ์…˜์€ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปฌ๋Ÿผ ๊ฐ’์— ๋”ฐ๋ผ ๋ฒ”์œ„ ํŒŒํ‹ฐ์…˜์ด๋ผ๊ณ  ํ•˜๋Š” ๋ณต์ˆ˜์˜ ์˜ค๋ธŒ์ ํŠธ๋กœ ๋ถ„์‚ฐํ•œ๋‹ค. ๊ฐ ์˜ค๋ธŒ์ ํŠธ๋Š” ๋™์ผํ•œ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค ํ˜น์€ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค์— ์ €์žฅ๋  ์ˆ˜ ์žˆ๋‹ค.ย 

  • ์ปฌ๋Ÿผ ๊ฐ’ ๋ฒ”์œ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ–‰์„ ๋ถ„ํ• ํ•˜๋Š” ํ˜•ํƒœ
  • Range Partition์—์„œ Table์€ ๋‹จ์ง€ ๋…ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ์ด๋ฉฐ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅ์€ Partition์œผ๋กœ ๋‚˜๋ˆ„์–ด Tablespace์— ์ €์žฅ
  • PARTITION BY RANGE(์ปฌ๋Ÿผ๋ชฉ๋ก): ๋ฒ”์œ„๋ฅผ ๋‚˜๋ˆŒ ๊ธฐ์ค€ ์ปฌ๋Ÿผ ๋ชฉ๋ก ๋ช…์‹œ

 

CREATE TABLE "TPCHย ย ย  "."CUSTOMER_RANGE"ย  (
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_CUSTKEY" INTEGER NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_NAME" VARCHAR(25 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_ADDRESS" VARCHAR(40 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_NATIONKEY" INTEGER NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_PHONE" CHAR(15 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_ACCTBAL" DECIMAL(15,2) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_MKTSEGMENT" CHAR(10 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_COMMENT" VARCHAR(117 OCTETS) NOT NULL )
(PARTITION BY RANGE (C_MKTSEGMENT)
(PART P1 STARTING 'AUTOMOBILE' ENDING 'AUTOMOBILE' IN TBSP1,
PART P2 STARTING 'BUILDING' ENDING 'BUILDING' IN TBSP2,
PART P3 STARTING 'FURNITURE' ENDING 'FURNITURE' IN TBSP3,
PART P4 STARTING 'HOUSEHOLD' ENDING 'HOUSEHOLD' IN TBSP4,
PART P5 STARTING 'MACHINERY' ENDING 'MACHINERY' IN TBSP5)
COMPRESS YES ADAPTIVE;

 

2. List ํŒŒํ‹ฐ์…”๋‹

List ํŒŒํ‹ฐ์…˜์€ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๊ฐ€ ํŠน์ • ์ปฌ๋Ÿผ ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ ๊ฐ’์— ๋”ฐ๋ผ ํŒŒํ‹ฐ์…˜์ด๋ผ๊ณ  ํ•˜๋Š” ๋ณต์ˆ˜์˜ ์˜ค๋ธŒ์ ํŠธ๋กœ ๋ถ„์‚ฐํ•œ๋‹ค. ๊ฐ ์˜ค๋ธŒ์ ํŠธ๋Š” ๋™์ผํ•œ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค ํ˜น์€ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค์— ์ €์žฅ๋  ์ˆ˜ ์žˆ๋‹ค.

โ€ขColumn์˜ ํŠน์ • ๊ฐ’์œผ๋กœ Partitioning์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•
โ€ขํ‚ค ๊ฐ’์˜ list๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ์ด ํ‚ค ๊ฐ’์˜ ๋ฆฌ์ŠคํŠธ์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด์ง
โ€ข์žฅ์  – ์—ฐ๊ด€๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ, ์ˆœ์„œ์— ๋งž์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ grouping ์„ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„
โ€ข๊ฐ’๋ณ„๋กœ ๋ถ„ํฌ๋„๊ฐ€ ๋น„์Šทํ•˜๋ฉฐ, ๋งŽ์€ SQL์—์„œ ํ•ด๋‹น Column์˜ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์šฉ

 

 

 

 

 

CREATE TABLE "TPCHย ย ย  "."CUSTOMER_LIST"ย  (
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_CUSTKEY" INTEGER NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_NAME" VARCHAR(25 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_ADDRESS" VARCHAR(40 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_NATIONKEY" INTEGER NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_PHONE" CHAR(15 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_ACCTBAL" DECIMAL(15,2) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_MKTSEGMENT" CHAR(10 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_COMMENT" VARCHAR(117 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_MKTSEGMENT_LIST" GENERATED ALWAYS AS
(CASE
WHEN C_MKTSEGMENT = 'AUTOMOBILE' THEN 1
WHEN C_MKTSEGMENT = 'BUILDING' THEN 2
WHEN C_MKTSEGMENT = 'FURNITURE' THEN 3
WHEN C_MKTSEGMENT = 'HOUSEHOLD' THEN 4
WHEN C_MKTSEGMENT = 'MACHINERY'ย  THEN 5
) IMPLICITLY HIDDEN
) PARTITION BY RANGE (C_MKTSEGMENT_LIST)
(STARTING 1 ENDING 5 EVERY 1)
IN TBSP1, TBSP2, TBSP3,TBSP4,TBSP5 COMPRESS YES ADAPTIVEย  ;

 

3. Hash ํŒŒํ‹ฐ์…”๋‹

Hash ํŒŒํ‹ฐ์…˜์€ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๊ฐ€ ํŠน์ • ์ปฌ๋Ÿผ ๊ฐ’์— ๋”ฐ๋ผ ํ•ด์‰ฌ ํŒŒํ‹ฐ์…˜์ด๋ผ๊ณ  ํ•˜๋Š” ๋ณต์ˆ˜์˜ ์˜ค๋ธŒ์ ํŠธ์— ๋ถ„์‚ฐ๋œ๋‹ค. ๊ฐ ์˜ค๋ธŒ์ ํŠธ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ๊ฐ์˜ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค์— ์ €์žฅ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฟผ๋ฆฌ๋Š” ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ๋œ๋‹ค.

  • Partitioning column์˜ Partitioning Key ๊ฐ’์— Hash ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜์—ฌ Data๋ฅผ ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ถ„ํ• 
  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ท ๋“ฑํ•œ ๋ถ„ํฌ๋กœ ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์œผ๋กœ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ ๊ฐœ์„ 

 

 

 

 

 

 

CREATE TABLE "TPCHย ย ย  "."CUSTOMER_HASH"ย  (
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_CUSTKEY" INTEGER NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_NAME" VARCHAR(25 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_ADDRESS" VARCHAR(40 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_NATIONKEY" INTEGER NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_PHONE" CHAR(15 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_ACCTBAL" DECIMAL(15,2) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_MKTSEGMENT" CHAR(10 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_COMMENT" VARCHAR(117 OCTETS) NOT NULL ,
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  "C_CUSTKEY_HASH" SMALLINT NOT NULL IMPLICITLY HIDDEN GENERATED ALWAYS AS (MOD(HASH4(CHAR(C_CUSTKEY)),2)) )
PARTITION BY RANGE (C_CUSTKEY_HASH)
(
ย  PART p1 STARTING(-2) ENDING(-2) IN tbsp1 ,
ย  PART p2 STARTING(-1) ENDING(-1) IN tbsp2 ,
ย  PART p3 STARTING(0)ย  ENDING(0)ย  IN tbsp3 ,
ย  PART p4 STARTING(1)ย  ENDING(1)ย  IN tbsp4 ,
ย  PART p5 STARTING(2)ย  ENDING(2)ย  IN tbsp5
) COMPRESS YES ADAPTIVE ;


์ด์ƒ์œผ๋กœ Db2์—์„œ ๋Œ€์šฉ๋Ÿ‰ ํ…Œ์ด๋ธ”์˜ ๊ด€๋ฆฌ์™€ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”ย  ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…”๋‹ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜๋‹ค.ย  ย ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…”๋‹ ์š”๊ฑด์—ย  ๋”ฐ๋ผ Range,List, Hash์ค‘ ์„ ํƒ ์ ์šฉํ•ด๋ณด์ž.