JOIN์€ ์ •๋ง ๋Š๋ฆฐ๊ฐ€ (์—ญ์ •๊ทœํ™”)

2024. 1. 7. 19:45ใ†Database

Q. ์—ญ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?
A. ํ…Œ์ด๋ธ”์ด ์ชผ๊ฐœ์ ธ ์กฐ์ธ ์—ฐ์‚ฐ์ด ์ฟผ๋ฆฌ ๋‚ด ํฌํ•จ๋˜๋ฉด ์„ฑ๋Šฅ์ด ์•ˆ์ข‹์•„์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์กฐํšŒ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—ญ์ •๊ทœํ™”๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ ๋ฉด์ ‘ ์Šคํ„ฐ๋”” ์ค‘, ์—ญ์ •๊ทœํ™”์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๋‹ค๊ฐ€ ๋‚˜์˜จ ๋ฌธ๋‹ต์ด๋‹ค. ์งˆ๋ฌธ์€ ๋‚ด๊ฐ€, ๋‹ต๋ณ€์€ ์Šคํ„ฐ๋””์›์ด ํ•ด์ฃผ์…จ๋Š”๋ฐ ๋งŒ์•ฝ ์„œ๋กœ ์ž…์žฅ์ด ๋ฐ”๋€Œ์—ˆ์–ด๋„ ๋˜‘๊ฐ™์ด ๋Œ€๋‹ตํ–ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. 

Database๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ, ํ˜น์€ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ†ต๋…์ฒ˜๋Ÿผ ๋ฐ›์•„๋“ค์ด๊ฒŒ ๋˜๋Š” ๋ง์ด ๋ฐ”๋กœ ์กฐ์ธ์€ ๋Š๋ฆฌ๋‹ค.์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ตœ๊ทผ์— ๋“ค์–ด์„œ๋Š” Database์— ๋Œ€ํ•ด ๋” ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•  ์ผ๋“ค์ด ์ƒ๊ธฐ๋ฉด์„œ ์ด์— ์˜๋ฌธ์ด ์ƒ๊ฒผ๋‹ค. 

์กฐ์ธ์ด ๋งŒ์•ฝ ์ง„์งœ ๋Š๋ฆฐ๊ฑฐ๋ผ๋ฉด, ์™œ ๊ทธ๋Ÿฐ๊ฑด๋ฐ?

๋ณดํ†ต ์ด๋ ‡๊ฒŒ ๊นŒ์ง€ ๋ฌผ์–ด๋ณด๋ฉด ํ…Œ์ด๋ธ” ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋ด์•ผํ•˜๋‹ˆ๊นŒ.๋ผ๊ณ  ๋‹ต๋ณ€์ด ๋Œ์•„์˜ค๋Š”๋ฐ ์ด๋Ÿฐ ๋Œ€๋‹ต์€ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋‹ต์ด ์•„๋‹ˆ์˜€๋‹ค. ์กฐ๊ธˆ ๋” ๊ธฐ์ˆ ์ ์ด๊ณ  ๋ช…ํ™•ํ•œ ๋‹ต๋ณ€์„ ์›ํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ๋‚˜ ์Šค์Šค๋กœ์—๊ฒŒ ์ด๋ฅผ ๋ฌผ์–ด๋ณด๋ฉด ๋ช…๋ฐฑํ•˜๊ฒŒ ๋‹ต๋ณ€์„ ํ•  ์ˆ˜ ์žˆ๋Š๋ƒ? ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜ ์Šค์Šค๋กœ๋ผ๋„ ์ด์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋Œ€๋‹ต์„ ํ•  ์ˆ˜ ์žˆ์–ด์ง€๊ธฐ ์œ„ํ•ด ์ด ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

 

์กฐ์ธ์€ ๋Š๋ฆฌ๋‹ค์— ๋Œ€ํ•œ ์ถ”๋ก 

DB๊ฐ€ ์กฐ์ธ ๋ฌธ์„ ๋งŒ๋‚ฌ์„ ๋•Œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ๋Š” NL ์กฐ์ธ, ์†ŒํŠธ ๋จธ์ง€ ์กฐ์ธ, ํ•ด์‹œ ์กฐ์ธ ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค. ์„ธ๋ถ€์ ์ธ ์ž‘๋™ ๋ฐฉ์‹์€ ์„ ํ–‰(Driving), ํ›„ํ–‰(Driven) ๊ฐ๊ฐ ํ…Œ์ด๋ธ” ๋‚ด ํ™œ์šฉํ• ๋งŒํ•œ ์ธ๋ฑ์Šค์˜ ์กด์žฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ฒ ์ง€๋งŒ, ์ด๋“ค์€ ๋ชจ๋‘ ์„ ํ–‰ ํ…Œ์ด๋ธ”์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ์„ ๋ฝ‘์•„๋‚ธ ๋‹ค์Œ ์ด๋ฅผ ํ† ๋Œ€๋กœ ํ›„ํ–‰ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•œ๋‹ค๋Š” ํฐ ๊ทธ๋ฆผ์€ ๋™์ผํ•˜๋‹ค. 

์—ฌ๊ธฐ์„œ ํ•œ๊ฐ€์ง€ ์ถ”๋ก ์ด ๊ฐ€๋Šฅํ•ด์ง€๋Š”๋ฐ, ๋‹จ๊ณ„๋ฅผ ๋‚˜๋ˆ ์„œ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์—ฐ์ ์œผ๋กœ ๋…ผ๋ฆฌ์  IO๊ฐ€ ๋งŽ์•„์งˆ ๊ฒƒ์ด๋ผ๋Š” ์ถ”๋ก ์ด๋‹ค. 

๋‹ค๋งŒ ํ•œ๊ฐ€์ง€ ์˜๋ฌธ์ด ๋“œ๋Š” ๊ฒƒ์€ ์ผ๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ํ…Œ์ด๋ธ”์„ ์—ญ์ •๊ทœํ™”ํ•˜๊ฒŒ ๋˜๋ฉด ์ผ ์ชฝ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค ์ชฝ์˜ ํ…Œ์ด๋ธ”์— ํŒจ๋”ฉ๋˜๋Š” ํ˜•ํƒœ๋กœ ํ…Œ์ด๋ธ” ๊ตฌ์„ฑ์ด ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ๋Š” IO ํšŸ์ˆ˜ ์ฆ๊ฐ€์— ๋Œ€ํ•œ ๋ถ€๋‹ด๋ณด๋‹ค๋Š” IO๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์šฉ๋Ÿ‰์ด ๋” ๋ถ€๋‹ด์ด ๋˜์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋“ค์„ ์ง์ ‘ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด, ์‹ค์ œ DB์— ๋‘˜๋กœ ๋‚˜๋ˆˆ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์กฐ์ธ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ๊ณผ ์ด๋ฅผ ์—ญ์ •๊ทœํ™”ํ•œ ์กฐํšŒ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๋‘ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋‹ค. ๊ทธ ํ›„, ๊ฐ๊ฐ 5๋งŒ๊ฐœ, 30๋งŒ๊ฐœ์˜ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฑ„์›Œ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

-- post ํ…Œ์ด๋ธ”
CREATE TABLE post (
  id INT auto_increment,
  user_id INT not null,
  name VARCHAR(20) not null,
  content VARCHAR(300) not null,
  created_at TIMESTAMP not null,
  PRIMARY KEY (id)
);

-- comment ํ…Œ์ด๋ธ”
CREATE TABLE comment (
  id INT auto_increment,
  post_id INT not null,
  content VARCHAR(100) not null,
  created_at TIMESTAMP not null,
  PRIMARY KEY (id),
  CONSTRAINT fk_comment_post FOREIGN KEY (post_id) REFERENCE post(id)
);

๊ทธ๋ฆฌ๊ณ  ์—ญ์ •๊ทœํ™”ํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์œ„ํ•ด ๋‘ ํ…Œ์ด๋ธ”์„ INNER ์กฐ์ธํ•œ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ํ…Œ์ด๋ธ”์— ์ ์žฌํ•˜๋Š” ์ฟผ๋ฆฌ๋„ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋‹ค.

CREATE TABLE post_comment (
  id INT auto_increment NOT NULL,
  PRIMARY KEY(id)) 
  SELECT 
    p.id as post_id,
    p.user_id as user_id,
    p.name as post_name,
    p.content as post_content,
    p.created_at as post_created_at,
    c.content as comment_content,
    c.created_at as comment_created_at
  FROM post p, comment c WHERE c.post_id = p.id;

 

ํ…Œ์ŠคํŠธ

๋‘ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹๊ณผ ํ•ด๋‹น ํ…Œ์ด๋ธ”๋“ค์„ ๋ฏธ๋ฆฌ ์—ญ์ •๊ทœํ™” ํ•ด๋‘” ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹์˜ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์˜ ์ผ€์ด์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ฒ ๋‹ค.

  1. ๋“œ๋ผ์ด๋น™ - ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์Šค์บ” VS ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์Šค์บ”
  2. ๋“œ๋ผ์ด๋น™ - ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ (ํ…Œ์ด๋ธ” ํ’€์Šค์บ” - ์ธ๋ฑ์Šค ์Šค์บ”) VS ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํ…Œ์ด๋ธ” ํ’€์Šค์บ”
  3. ๋“œ๋ผ์ด๋น™ - ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํ…Œ์ด๋ธ” ํ’€์Šค์บ” VS ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํ…Œ์ด๋ธ” ํ’€์Šค์บ”

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ๋Š” ๋ฒ”์œ„ ํƒ์ƒ‰ ์กฐ๊ฑด์„ ์ค„์ด๊ฑฐ๋‚˜ ๋Š˜๋ ค์„œ ํƒ€๊ฒŸ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์ˆ˜์ธ ๊ฒฝ์šฐ์™€ ์†Œ์ˆ˜์ธ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ ์„œ ๋น„๊ตํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด ๋•Œ ๋‹ค์ˆ˜์˜ ๊ธฐ์ค€์€ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ์•ฝ 30%์ด๊ณ , ์†Œ์ˆ˜์˜ ๊ธฐ์ค€์€ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ์•ฝ 5%๋กœ ์ƒ์ •ํ•˜๊ฒ ๋‹ค.

๊ธฐ์ค€์ด ๋˜๋Š” ์ง€์ ์„ ๋ฏธ๋ฆฌ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ์ ์ ˆํ•ด๋ณด์ด๋Š” ์นผ๋Ÿผ์œผ๋กœ post_created_at์„ ์„ ์ •ํ–ˆ๊ณ  ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ post_comment ํ…Œ์ด๋ธ”์—์„œ ์ƒ์œ„ 5%, 30% ์ง€์ ์„ ํ™•์ธํ•˜๋‹ˆ ๊ฐ๊ฐ 2023-12-24 14:14:34 ๊ณผ 2022-10-18 16:44:59 ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ๋‹ค. ํ•ด๋‹น ๊ฐ’๋“ค์„ ์ด์ œ ์•„๋ž˜ ์ฟผ๋ฆฌ์˜ ์ผ์‹œ์— ๋„ฃ์–ด๋ณด๋ฉด์„œ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•˜๋ ค ํ•œ๋‹ค.

-- ์กฐ์ธ ์ฟผ๋ฆฌ
SELECT * FROM post p, comment c WHERE c.post_id = p.id AND WHERE p.created_at > '{์ผ์‹œ}';

-- ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์ฟผ๋ฆฌ
SELECT * FROM post_comment WHERE post_created_at > '{์ผ์‹œ}';

1. ๋“œ๋ผ์ด๋น™ - ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์Šค์บ” VS ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์Šค์บ”

ํ…Œ์ด๋ธ” ์กฐํšŒ ์‹œ ์กฐ๊ฑด์‹์œผ๋กœ ํ™œ์šฉ๋˜๋Š” ์นผ๋Ÿผ์— ๋ชจ๋‘ ์ ์ ˆํ•œ ์ธ๋ฑ์Šค๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ์ด๋‹ค. 

์ด๋ฅผ ์œ„ํ•ด post.created_at ์นผ๋Ÿผ๊ณผ comment.post_id ์นผ๋Ÿผ, ๊ทธ๋ฆฌ๊ณ  post_comment.post_created_at ์นผ๋Ÿผ์— ๊ฐ๊ฐ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋‹ค.

CREATE INDEX idx_created_at ON post(created_at);

CREATE INDEX idx_post_id ON comment(post_id);

CREATE INDEX idx_post_created_at ON post_comment(post_created_at);

๋‹ค์ˆ˜ ๋ฐ์ดํ„ฐ

์•ž์—์„œ ์–ธ๊ธ‰ํ•œ ๋‘ ์ฟผ๋ฆฌ๋ฅผ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ 30%๋งŒ ๋ฝ‘์•„๋‚ด๋Š” ์‹œ์  ๊ฐ’์„ ํ†ตํ•ด ์‹คํ–‰ํ•œ ์‹คํ–‰ ๊ณ„ํš์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์กฐ์ธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ
์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์กฐํšŒ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ

๊ฒฐ๊ณผ๋ฅผ ์š”์•ฝํ•˜์ž๋ฉด ์กฐ์ธ ์ฟผ๋ฆฌ์˜ ๋น„์šฉ์ด ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์ฟผ๋ฆฌ๋ณด๋‹ค 2๋ฐฐ ์ •๋„ ๋†’๊ฒŒ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ณ  ์žˆ๋‹ค.

์ด๋ฅผ ํ•ด์„ํ•ด๋ณด๋ฉด, ์กฐ์ธ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ์—” post๊ฐ€ ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ”๋กœ ํ™œ์šฉ๋˜๊ณ  ์žˆ๊ณ , ์ด ๋•Œ ์กฐ๊ฑด์‹์— ์˜ํ•ด 5๋งŒ๊ฐœ์˜ ํ…Œ์ด๋ธ” ๋ ˆ์ฝ”๋“œ ์ค‘ 1.5๋งŒ๊ฐœ์˜ ํ…Œ์ด๋ธ” ๋ ˆ์ฝ”๋“œ๊ฐ€ ํƒ€๊ฒŸ์œผ๋กœ ์‚ฐ์ •๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. ์ดํ›„ NL ์กฐ์ธ์— ์˜ํ•ด 1.5๋งŒ๋ฒˆ์˜ ์ธ๋ฑ์Šค ์Šค์บ”์ด ๋ฐœ์ƒํ–ˆ๊ณ , ํ•ด๋‹น ์ง€์ ์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ๋ถ€ํ•˜๊ฐ€ ๋ชฐ๋ ค์žˆ๋‹ค.

์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ์—”, ์กฐ๊ฑด์‹์„ ๊ฐ€์ง€๊ณ  ๊ณง๋ฐ”๋กœ ํ…Œ์ด๋ธ” ํ’€์Šค์บ”์ด ์ž‘๋™ํ–ˆ๋‹ค. ์ด ๋˜ํ•œ ์ƒ๋‹นํžˆ ๋ถ€ํ•˜๊ฐ€ ์žˆ๋Š” ์ž‘์—…์ด์ง€๋งŒ, ์ธ๋ฑ์Šค ์Šค์บ”์ด 1.5๋งŒ๋ฒˆ ๋ฐœ์ƒํ•œ ์œ„ ์ฟผ๋ฆฌ๋ณด๋‹ค๋Š” ํšจ์œจ์ ์ธ ๋ฐฉ์‹์ด ๋˜์—ˆ๋‹ค.

๋˜ํ•œ ํ•œ๊ฐ€์ง€ ํŠน์ด์ ์ด๋ผ๋ฉด, ์กฐ๊ฑด์‹ ์ธ๋ฑ์Šค ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•ด๋‘์—ˆ์ง€๋งŒ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์›Œ๋‚™ ๋งŽ๋‹ค๋ณด๋‹ˆ ์‹ฑ๊ธ€ ๋ธ”๋ก IO ๊ธฐ๋ฐ˜ ๋žœ๋ค ์—‘์„ธ์Šค๋ณด๋‹ค๋Š” ๋ฉ€ํ‹ฐ ๋ธ”๋ก IO ๊ธฐ๋ฐ˜์˜ ์‹œํ€€์…œ ์—‘์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ํŒ๋‹จํ•œ ๊ฒƒ์ด๋‹ค.

์†Œ์ˆ˜ ๋ฐ์ดํ„ฐ

์•ž์—์„œ ์–ธ๊ธ‰ํ•œ ๋‘ ์ฟผ๋ฆฌ๋ฅผ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ 5%๋งŒ ๋ฝ‘์•„๋‚ด๋Š” ์‹œ์  ๊ฐ’์„ ํ†ตํ•ด ์‹คํ–‰ํ•œ ์‹คํ–‰ ๊ณ„ํš์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์กฐ์ธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ
์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์กฐํšŒ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ

๊ฒฐ๊ณผ๋ฅผ ์š”์•ฝํ•˜์ž๋ฉด ์กฐ์ธ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฏธ์„ธํ•˜๊ฒŒ๋‚˜๋งˆ ๋” ๋น„์šฉ์ด ์ ๊ฒŒ ๋‚˜์˜ค๊ณ  ์žˆ๋‹ค. 

์ด๋ฒˆ์—๋Š” ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์ด ์ ์€ ๊ทœ๋ชจ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ชจ๋‘ ํ™œ์šฉํ–ˆ๊ณ , NL ์กฐ์ธ์€ ์ธ๋ฑ์Šค ์Šค์บ”์„ ๋‹จ 249๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜์—ฌ ์„ฑ๋Šฅ์ด ์ข‹๊ฒŒ๋‚˜์™”๋‹ค.

์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์กฐํšŒ ์ฟผ๋ฆฌ ๋˜ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ •์ƒ์ ์œผ๋กœ ํ™œ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์ด ์ž˜ ๋‚˜์™”์ง€๋งŒ ๋ฏธ์„ธํ•˜๊ฒŒ๋‚˜๋งˆ ๋น„์šฉ์€ ๋” ๋†’์€๋ฐ, ์‚ฌ์‹ค ์ฐจ์ด๊ฐ€ ํฌ์ง€ ์•Š์•„์„œ ์‚ฌ์‹ค์ƒ ์„ฑ๋Šฅ์ด ๋™์ผํ•˜๋‹ค๊ณ  ๋ด๋„ ๋  ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ์กฐ์ธ์€ ํ•ญ์ƒ ๋Š๋ฆฌ๋‹ค ๋ผ๋Š” ์„œ์ˆ ์ด ํ‹€๋ฆด ๋•Œ๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ์‚ฌ๋ก€๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

2. ๋“œ๋ผ์ด๋น™ - ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ (ํ…Œ์ด๋ธ” ํ’€์Šค์บ” - ์ธ๋ฑ์Šค ์Šค์บ”) VS ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํ…Œ์ด๋ธ” ํ’€์Šค์บ”

ํ…Œ์ด๋ธ” ์กฐํšŒ ์‹œ ์กฐ๊ฑด์‹์— ํฌํ•จ๋˜๋Š” ์นผ๋Ÿผ๋“ค์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋Š” ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ๋‹ค๋งŒ ์›ํ™œํ•œ ์กฐ์ธ์„ ์œ„ํ•œ ์กฐ์ธ ์นผ๋Ÿผ์— ์ธ๋ฑ์Šค๋งŒ ์กด์žฌํ•˜๋Š” ์ƒํ™ฉ์ด๋‹ค. 

์ด๋ฅผ ์œ„ํ•ด ์•„๋ž˜์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋‹ค.

CREATE INDEX idx_post_id ON comment(post_id);

๋‹ค์ˆ˜ ๋ฐ์ดํ„ฐ

์•ž์„œ ์–ธ๊ธ‰ํ•œ ๋‘ ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ณ„ํš์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์กฐ์ธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ
์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์กฐํšŒ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ

๊ฒฐ๊ณผ๋ฅผ ์š”์•ฝํ•˜์ž๋ฉด ์กฐ์ธ ์ฟผ๋ฆฌ๊ฐ€ ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์กฐํšŒ ์ฟผ๋ฆฌ๋ณด๋‹ค ์•ฝ 30% ๋” ๋น„์‹ผ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค. 

์‚ฌ์‹ค ํ•ด๋‹น ๊ฒฐ๊ณผ๋Š” ์ด๋ฏธ ์œ„์—์„œ ์™„์ „ํžˆ ๊ฐ™์€ ์‹คํ–‰ ๊ณ„ํš์„ ๋ถ„์„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์–ธ๊ธ‰์€ ๊ฑด๋„ˆ๋›ฐ๊ฒ ๋‹ค.

์†Œ์ˆ˜ ๋ฐ์ดํ„ฐ

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋‘ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์‹คํ–‰ ๊ณ„ํš์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์กฐ์ธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ
์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์กฐํšŒ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ

๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์—ฌ์ „ํžˆ ๋‹ค์ˆ˜ ๋ฐ์ดํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—ฌ์ „ํžˆ ์•„๋ž˜ ์ฟผ๋ฆฌ๊ฐ€ ๋น„์šฉ์ด ๋” ๋‚ฎ๊ฒŒ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—๋Š” ๋งน์ ์ด ์กด์žฌํ•œ๋‹ค. ๋ฐ”๋กœ ์‹คํ–‰ ๊ณ„ํš ์ƒ์—์„œ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์˜ˆ์ธกํ•œ rows ๊ฐ’์ด๋‹ค. ๋‘ ์ฟผ๋ฆฌ ๋ชจ๋‘ 30๋งŒ๊ฑด์˜ ๋ฐ์ดํ„ฐ ์ค‘ 1500๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ์„ ๋ฝ‘์•„๋‚ด๋Š” ์ฟผ๋ฆฌ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ํ•ด๋‹น ์ฟผ๋ฆฌ๋“ค์ด 10๋งŒ๊ฐœ ์ˆ˜์ค€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„๋‚ด๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ ์ฟผ๋ฆฌ๋กœ ์ธ์‹ํ•œ ๊ฒƒ์ด๋‹ค. 

์‚ฌ์‹ค ์กฐ๊ฑด์‹์œผ๋กœ ์‚ฌ์šฉํ•œ ์นผ๋Ÿผ์˜ ์ธ๋ฑ์Šค ์œ ๋ฌด๋กœ ์ธํ•ด ๊ฐ™์€ ์‹คํ–‰ ๊ณ„ํš์ž„์—๋„ ์ฝ”์ŠคํŠธ๊ฐ€ ์ƒ์ดํ•˜๊ฒŒ ๋‚˜์˜ค๋Š” ํ˜„์ƒ์ด ํ…Œ์ŠคํŠธ ๋„์ค‘ ๋ฐœ๊ฒฌ๋˜์–ด์„œ(์œ„ ๊ธ€์˜ 1 -> ๋‹ค์ˆ˜๋ฐ์ดํ„ฐ, 2 -> ๋‹ค์ˆ˜๋ฐ์ดํ„ฐ ์ฐธ๊ณ ) ์™œ ๊ทธ๋Ÿฐ์ง€ ๊ณ„์† ์˜๋ฌธ์ด์˜€๋Š”๋ฐ, ์—ฌ๊ธฐ๊นŒ์ง€ ์˜ค๊ณ ๋‚˜๋‹ˆ ํŠน์ • ์กฐ๊ฑด์œผ๋กœ ํ•„ํ„ฐ๋ง๋  ๋ฐ์ดํ„ฐ์˜ ์–‘์— ๋Œ€ํ•œ ์˜ˆ์ธก์น˜๋ฅผ ์‚ฐ์ •ํ•  ๋•Œ ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ๋” ์ •๋ฐ€ํ•œ ์˜ˆ์ธก์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋œ๋‹ค. (์ด์— ๋Œ€ํ•œ ํ™•์ธ์€ ๋‹ค๋ฅธ ํฌ์ŠคํŒ…์—์„œ ์ˆ˜ํ–‰ํ•˜๊ฒ ์Œ)

๋”ฐ๋ผ์„œ ์ด๋Š” ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์™„์ „ํžˆ ์ž˜๋ชป๋œ ์ตœ์ ํ™”๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์ง€๊ณ , ์ด๋Š” ์‹ค์ œ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋ณด๋ฉด ํ™•์—ฐํžˆ ๋‚˜ํƒ€๋‚œ๋‹ค. 

  • ์กฐ์ธ ์ฟผ๋ฆฌ: 72ms
  • ์—ญ์ •๊ทœํ™” ์ฟผ๋ฆฌ: 179ms

๋”ฐ๋ผ์„œ ํ•ด๋‹น ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์กฐ์ธ ์ฟผ๋ฆฌ๊ฐ€ ์„ฑ๋Šฅ์ด ๋” ์ข‹๋‹ค๊ณ  ํ•ด์„ํ•˜๋Š”๊ฒŒ ๋งž๋‹ค๊ณ  ๋ณด์ธ๋‹ค. ๋˜ํ•œ ์ด๋Ÿฌํ•œ ๊ด€์ ์—์„œ ๋ดค์„ ๋•Œ, ๊ฐ™์€ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๋‹ค์ˆ˜ ๋ฐ์ดํ„ฐ ์ƒํ™ฉ์ผ ๋•Œ๋„ ๋‘˜์˜ ์„ฑ๋Šฅ์€ ์กฐ์ธ ์ฟผ๋ฆฌ๊ฐ€ ๋” ๋‚˜์˜๋‹ค๊ธฐ๋ณด๋‹ค๋Š” ๊ฑฐ์˜ ์ฐจ์ด๊ฐ€ ์—†๋‹ค๊ณ  ํ•ด์„ํ•˜๋Š”๊ฒŒ ๋งž๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. (์‹ค์ œ ์‹คํ–‰ ์‹œ๊ฐ„ ๋‹จ 2ms ์ฐจ์ด)

3. ๋“œ๋ผ์ด๋น™ - ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํ…Œ์ด๋ธ” ํ’€์Šค์บ” VS ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํ…Œ์ด๋ธ” ํ’€์Šค์บ”

๋งŒ์•ฝ ํ•ด๋‹น ๊ฒฝ์šฐ์˜ ์ˆ˜์ฒ˜๋Ÿผ ์กฐ์ธ ์นผ๋Ÿผ ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์€ ์‚ฌ์‹ค OLTP ํ™˜๊ฒฝ์—์„œ๋Š” ๊ถŒ์žฅํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด์ง€๋งŒ, ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ตœ์•…์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œํ•ด์ฃผ์—ˆ๋‹ค.

๋‹ค์ˆ˜ ๋ฐ์ดํ„ฐ

์‹คํ–‰ ๊ณ„ํš์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์กฐ์ธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ
์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์กฐํšŒ ๊ฒฐ๊ณผ

์œ„ ์‹คํ–‰ ๊ณ„ํš์—์„œ ์œ„์˜ Table scan on c.... ๋ถ€๋ถ„๊ณผ ์•„๋ž˜์˜ Table scan on post_comment.... ๋ถ€๋ถ„์„ ๋น„๊ตํ•˜๋ฉด ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ํŒจ๋”ฉ์ด ์‹ค์ œ ์‹คํ–‰ ๊ณ„ํš์— ์–ด๋–ป๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ด ๋ณด์ธ๋‹ค. ์ด๋“ค๋งŒ ๋”ฐ๋กœ ๋–ผ๋‚ด ์กฐ๊ธˆ ๋” ํ™•์ธํ•ด๋ณด๊ฒ ๋‹ค.

์œ„: comment ํ…Œ์ด๋ธ” ์ „์ฒด ์กฐํšŒ, ์•„๋ž˜: post_comment ํ…Œ์ด๋ธ” ์ „์ฒด ์กฐํšŒ

ํ•ด๋‹น ์‹คํ–‰ ๊ณ„ํš์„ ๋ดค์„ ๋•Œ ๋‘ ํ…Œ์ด๋ธ”์˜ ์˜ˆ์ƒ rows๋Š” ๊ฑฐ์˜ ๋น„์Šทํ•˜์ง€๋งŒ cost๋Š” ๋ฐ์ดํ„ฐ ํŒจ๋”ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ comment ์ชฝ์ด ๋” ๋‚ฎ์€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฐ๊ณผ๋งŒ ๋†“๊ณ  ๋ดค์„ ๋• ๋ฐ์ดํ„ฐ ํŒจ๋”ฉ์ด cost ์‚ฐ์ •์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ , ์ด ๊ฒƒ์ด ์„ฑ๋Šฅ ์ƒ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€๋Š” ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

๋‹ค์‹œ ์œ„ ์‹คํ–‰ ๊ณ„ํš์œผ๋กœ ๋Œ์•„๊ฐ€์„œ, ์ด๋ฒˆ์—” ์กฐ์ธ ์ฟผ๋ฆฌ ์ชฝ์˜ ์‹คํ–‰ ๊ณ„ํš์ด ์ด์ „๊ณผ๋Š” ๋‹ฌ๋ผ์ง„ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด์ „์—๋Š” post ํ…Œ์ด๋ธ”์„ ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ”๋กœ ๋’€๋Š”๋ฐ, ์ด๋ฒˆ์—๋Š” comment ํ…Œ์ด๋ธ”์„ ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ”๋กœ ๋’€๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐ”๋€ ์ด์œ ๋ฅผ ์œ ์ถ”ํ•ด๋ณด์ž๋ฉด, ์•„๋ฌด๋ž˜๋„ ์กฐ์ธ ์‹œ ์–ด๋–ป๊ฒŒ๋“  ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜๋ คํ–ˆ๊ธฐ ๋•Œ๋ฌธ์œผ๋กœ ๋ณด์ธ๋‹ค. ๋งŒ์•ฝ post๊ฐ€ ๊ทธ๋Œ€๋กœ ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ”์ธ์ฑ„๋กœ NL ์กฐ์ธ์„ ์‹คํ–‰ํ•œ๋‹ค๋ฉด, post ํ…Œ์ด๋ธ”์—์„œ ํ…Œ์ด๋ธ” ํ’€์Šค์บ”์„ ํ†ตํ•ด ์ฐพ์•„๋‚ธ ๋ ˆ์ฝ”๋“œ ํ•œ๊ฑด ํ•œ๊ฑด์— ๋Œ€ํ•ด ๊ฐ๊ฐ ํ…Œ์ด๋ธ” ํ’€์Šค์บ”์ด ๋ฐœ์ƒํ–ˆ์„ ๊ฒƒ์ด๋‹ค. ์กฐ๊ฑด์‹์œผ๋กœ post ํ…Œ์ด๋ธ”์—์„œ ์ ˆ๋ฐ˜์ •๋„ ํ•„ํ„ฐ๋ง ๋˜๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธํ–ˆ์œผ๋‹ˆ ํ…Œ์ด๋ธ” ํ’€์Šค์บ”์ด 2.5๋งŒ๊ฑด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์‹ค์ œ๋กœ ์กฐ์ธ ์ˆœ์„œ๋ฅผ ๊ณ ์ •ํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ ๊ณ„ํš์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํžŒํŠธ๋ฅผ ์ฃผ๊ณ  ์‹คํ–‰ ๊ณ„ํš์„ ํ™•์ธํ–ˆ๋‹ค.

post -> comment ์กฐ์ธ ์ˆœ์„œ ๊ณ ์ • ์กฐ์ธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ

๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” post๋ฅผ ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ”๋กœ ๋‘˜ ์‹œ ๋„ˆ๋ฌด ํฐ ๋น„ํšจ์œจ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ์šฐ๋ คํ•˜์—ฌ Hash ์กฐ์ธ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

๋‹ค๋งŒ ์–ด์ฐŒ๋˜์—ˆ๋˜ ํ•ด๋‹น ๊ฒฝ์šฐ๋Š” ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚˜์œ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

์†Œ์ˆ˜ ๋ฐ์ดํ„ฐ

์‹คํ–‰ ๊ณ„ํš์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์กฐ์ธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ
์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ” ์กฐํšŒ ๊ฒฐ๊ณผ

์ด ๊ฒฝ์šฐ์—” created_at ์นผ๋Ÿผ ๊ธฐ๋ฐ˜์˜ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชฉํ‘œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…Œ์ด๋ธ” ํ’€์Šค์บ”์˜ ๋ฐฉ๋ฒ• ๋ฐ–์— ์—†๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ ์–ด์ง„๋‹คํ•ด๋„ ์‹คํ–‰ ๊ณ„ํš ์ƒ ๋น„์šฉ์ด๋‚˜ ์‹ค์ œ ์‹คํ–‰ ์‹œ๊ฐ„์— ํฐ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ด ๊ฒฝ์šฐ ๋งŒ์•ฝ ์กฐ์ธ ์ฟผ๋ฆฌ๊ฐ€ Hash ์กฐ์ธ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค๋ฉด ์–ด๋–ค ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ• ๊นŒ?

ํ•ด์‹œ ์กฐ์ธ ๊ฒฐ๊ณผ

์ด ๊ฒฝ์šฐ์—” ๋˜๋ ค ์ „์ฒด ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ์ถœ๋ ฅํ•˜๋Š”๋ฐ์—๋Š” ์—ญ์ •๊ทœํ™” ํ…Œ์ด๋ธ”์„ ํ’€์Šค์บ”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฅด๋‹ค. ๋‹ค๋งŒ Hash ์กฐ์ธ์€ ์กฐ์ธ ์‹œ ์‚ฌ์ „ ์ž‘์—…์ด ์กด์žฌํ•˜์—ฌ ์ฒซ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ๊นŒ์ง€ ์ƒ๋‹นํžˆ ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋ถ€๋ถ„๋ฒ”์œ„ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ ๊ฐœ์„ ์ด ์ค‘์š”ํ•œ OLTP ํ™˜๊ฒฝ์—์„œ๋Š” ์„ ํ˜ธ๋˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์ด๋‹ค.

๊ฒฐ๋ก 

ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด์„œ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๋ก ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ฒซ์งธ, ์ž˜ ์ตœ์ ํ™”๋œ ์กฐ์ธ ์ฟผ๋ฆฌ๋Š” ์„ฑ๋Šฅ์ด ๋น„์Šทํ•˜๊ฑฐ๋‚˜ ์˜คํžˆ๋ ค ๊ทผ์†Œํ•˜๊ฒŒ ๋” ๋น ๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ๊ฐ€ ํ…Œ์ŠคํŠธ ์ „ ์ƒ์ •ํ–ˆ๋˜ ๋””์Šคํฌ์—์„œ ์ฝ์–ด์˜ค๋Š” ์ด ๋ฐ์ดํ„ฐ ์–‘์ด ์กฐ์ธ ์ฟผ๋ฆฌ ์ชฝ์ด ๋” ์ ์€ ๊ฒƒ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ผ๊ณ  ์ƒ๊ฐ๋œ๋‹ค.(๋ฌผ๋ก  ์˜ํ–ฅ์€ ๊ทธ๋ ‡๊ฒŒ ํฌ์ง€๋Š” ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค) ๋ฌผ๋ก  ์ด ๊ฒฝ์šฐ์—”, ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ „์ฒด ํ…Œ์ด๋ธ” ํฌ๊ธฐ์— ๋น„ํ•ด ์ž‘์•„์•ผํ•œ๋‹ค.
  • ๋‘˜์งธ, ์กฐ์ธ ์‹œ ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”์— ์กฐ์ธ ์นผ๋Ÿผ์œผ๋กœ ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์ƒ๋‹นํ•œ ๋น„ํšจ์œจ์ด ๋ฐœ์ƒํ•œ๋‹ค. ํ•ด๋‹น ๊ฒฝ์šฐ์—” ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ Hash ์กฐ์ธ์„ ์„ ํƒํ•  ๊ฐ€๋Šฅ์„ฑ๋„ ์žˆ๋Š”๋ฐ ์ด ๋˜ํ•œ ์ „์ฒด ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ์—” ๋” ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ผ์ง€ ๋ชฐ๋ผ๋„ ๋ถ€๋ถ„ ๋ฒ”์œ„ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ ๊ฐœ์„ ์ด ์ค‘์š”ํ•œ OLTP ํ™˜๊ฒฝ์—์„œ๋Š” ์„ ํ˜ธ๋˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • (์ถ”๊ฐ€) ์…‹์งธ, ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ํ…Œ์ด๋ธ” ํ†ต๊ณ„๊ฐ’์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณ„์‚ฐํ•œ ๋น„์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰ ๊ณ„ํš์„ ์„ธ์šด๋‹ค. ์ด ๋•Œ ํŠน์ • ์นผ๋Ÿผ์˜ ์ธ๋ฑ์Šค ์œ ๋ฌด์— ๋”ฐ๋ผ ํ†ต๊ณ„๊ฐ’์˜ ์ •ํ™•๋„๊ฐ€ ํ๋ ค์งˆ ์ˆ˜ ์žˆ๊ณ  ์ด์— ๋”ฐ๋ผ ์‹ค์ œ๋กœ๋Š” ๋” ๋น„ํšจ์œจ์ ์ธ ์‹คํ–‰ ๊ณ„ํš์„ ์„ ํƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•œ๋‹ค.

์ฆ‰, ์ •๊ทœํ™”๋กœ ์ธํ•œ ์กฐ์ธ ์ฟผ๋ฆฌ์˜ ์†๋„๊ฐ€ ํ•ญ์ƒ ๋” ๋Š๋ฆฌ๋‹ค๊ณ ๋Š” ํ•  ์ˆ˜ ์—†์–ด ๋ณด์ธ๋‹ค. ๋‹ค๋งŒ ์„ฑ๋Šฅ์„ ์ข‹๊ฒŒํ•˜๋ ค๋ฉด ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”์— ์กฐ์ธ ์นผ๋Ÿผ ์ธ๋ฑ์Šค๊ฐ€ ๊ฑฐ์˜ ํ•„์ˆ˜์ ์œผ๋กœ ํ•„์š”ํ•˜๊ณ , ์ด ๊ฒฝ์šฐ DML ์„ฑ๋Šฅ ์ €ํ•˜๋‚˜ ์ถ”๊ฐ€์ ์ธ ์ €์žฅ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ •๊ทœํ™” ์‹œ ์ถ”๊ฐ€์ ์ธ ๋น„์šฉ์ด ๋“œ๋Š” ๊ฒƒ์€ ๋งž๋Š” ๋ง์ผ ๊ฒƒ์ด๋‹ค.