Highload++ ์‹œ๋ฒ ๋ฆฌ์•„ 2019์˜ ๋’ค๋ฅผ ์ด์–ด - Oracle์˜ 8๊ฐ€์ง€ ์ž‘์—…

ะŸั€ะธะฒะตั‚!

24์›” 25์ผ๋ถ€ํ„ฐ 2019์ผ๊นŒ์ง€ ๋…ธ๋ณด์‹œ๋น„๋ฅด์Šคํฌ์—์„œ Highload++ ์‹œ๋ฒ ๋ฆฌ์•„ XNUMX ์ปจํผ๋Ÿฐ์Šค๊ฐ€ ์—ด๋ ธ์Šต๋‹ˆ๋‹ค. ๋ณด๊ณ ์„œ โ€œ์˜ค๋ผํด ์ปจํ…Œ์ด๋„ˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(CDB/PDB)์™€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์‹ค์ œ ํ™œ์šฉโ€์€ ์ž ์‹œ ํ›„์— ํ…์ŠคํŠธ ๋ฒ„์ „์„ ๊ฒŒ์‹œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋ฉ‹์กŒ์–ด, ๊ณ ๋งˆ์›Œ ์˜ฌ๋ ‰๋ถ€๋‹Œ ์กฐ์ง์„ ์œ„ํ•ด, ๊ทธ๋ฆฌ๊ณ  ์˜จ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•ด.

Highload++ ์‹œ๋ฒ ๋ฆฌ์•„ 2019์˜ ๋’ค๋ฅผ ์ด์–ด - Oracle์˜ 8๊ฐ€์ง€ ์ž‘์—…
์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์˜ค๋ผํด ์ง€์‹์„ ํ…Œ์ŠคํŠธํ•ด ๋ณด์‹ค ์ˆ˜ ์žˆ๋„๋ก ์ €ํฌ ๋ถ€์Šค์—์„œ ๊ฒช์—ˆ๋˜ ๋ฌธ์ œ๋“ค์„ ๊ณต์œ ํ•ด๋“œ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ปท ์•„๋ž˜์—๋Š” 8๊ฐœ์˜ ๋ฌธ์ œ, ๋‹ต๋ณ€ ์˜ต์…˜ ๋ฐ ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋กœ ํ‘œ์‹œ๋˜๋Š” ์ตœ๋Œ€ ์‹œํ€€์Šค ๊ฐ’์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

create sequence s start with 1;
 
select s.currval, s.nextval, s.currval, s.nextval, s.currval
from dual
connect by level <= 5;

  • 1
  • 5
  • 10
  • 25
  • ์•„๋‹ˆ์š”, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‹ต๋ณ€Oracle ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด(8.1.6์—์„œ ์ธ์šฉ):
๋‹จ์ผ SQL ๋ฌธ ๋‚ด์—์„œ Oracle์€ ํ–‰๋‹น ํ•œ ๋ฒˆ๋งŒ ์‹œํ€€์Šค๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ๋ช…๋ น๋ฌธ์— ์‹œํ€€์Šค์— ๋Œ€ํ•œ NEXTVAL์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด Oracle์€ ์‹œํ€€์Šค๋ฅผ ํ•œ ๋ฒˆ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ๋ชจ๋“  NEXTVAL ๋ฐœ์ƒ์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น๋ฌธ์— CURRVAL ๋ฐ NEXTVAL ๋ชจ๋‘์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ Oracle์€ ๋ช…๋ น๋ฌธ ๋‚ด ์ˆœ์„œ์— ๊ด€๊ณ„์—†์ด ์‹œํ€€์Šค๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  CURRVAL ๋ฐ NEXTVAL ๋ชจ๋‘์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์ตœ๋Œ€๊ฐ’์€ ์ค„ ์ˆ˜, ์ฆ‰ 5์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค..

๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ…Œ์ด๋ธ”์— ๋ช‡ ๊ฐœ์˜ ํ–‰์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ?

create table t(i integer check (i < 5));
 
create procedure p(p_from integer, p_to integer) as
begin
    for i in p_from .. p_to loop
        insert into t values (i);
    end loop;
end;
/
 
exec p(1, 3);
exec p(4, 6);
exec p(7, 9);

  • 0
  • 3
  • 4
  • 5
  • 6
  • 9

๋‹ต๋ณ€Oracle ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด(11.2์—์„œ ์ธ์šฉ):

SQL ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— Oracle์€ ์•”์‹œ์  ์ €์žฅ์ (์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ)์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฌธ์ด ์‹คํŒจํ•˜๋ฉด Oracle์€ ์ด๋ฅผ ์ž๋™์œผ๋กœ ๋กค๋ฐฑํ•˜๊ณ  ํ•ด๋‹น ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ SQLCA์˜ SQLCODE์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด INSERT ๋ฌธ์ด ๊ณ ์œ  ์ธ๋ฑ์Šค์— ์ค‘๋ณต๋œ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ๋ฌธ์ด ๋กค๋ฐฑ๋ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์—์„œ HP์— ์ „ํ™”ํ•˜๋Š” ๊ฒƒ๋„ ๋‹จ์ผ ๋ช…๋ น๋ฌธ์œผ๋กœ ๊ฐ„์ฃผ๋˜๊ณ  ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ธ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ HP ํ˜ธ์ถœ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ HP ํ˜ธ์ถœ์€ ์˜ค๋ฅ˜๋กœ ์ข…๋ฃŒ๋˜๊ณ  ์‚ฝ์ž…ํ•œ ๋„ค ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋กค๋ฐฑํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ํ˜ธ์ถœ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์— ์„ธ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค..

๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ…Œ์ด๋ธ”์— ๋ช‡ ๊ฐœ์˜ ํ–‰์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ?

create table t(i integer, constraint i_ch check (i < 3));
 
begin
    insert into t values (1);
    insert into t values (null);
    insert into t values (2);
    insert into t values (null);
    insert into t values (3);
    insert into t values (null);
    insert into t values (4);
    insert into t values (null);
    insert into t values (5);
exception
    when others then
        dbms_output.put_line('Oops!');
end;
/

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

๋‹ต๋ณ€Oracle ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด(11.2์—์„œ ์ธ์šฉ):

๊ฒ€์‚ฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ–‰์ด ์ถฉ์กฑํ•ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋ ค๋ฉด ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ–‰์—์„œ ์กฐ๊ฑด์„ TRUE ๋˜๋Š” ์•Œ ์ˆ˜ ์—†์Œ(๋„๋กœ ์ธํ•ด)์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Oracle์ด ํŠน์ • ํ–‰์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•  ๋•Œ ์กฐ๊ฑด์˜ ๋ชจ๋“  ์—ด ์ด๋ฆ„์€ ํ•ด๋‹น ํ–‰์˜ ์—ด ๊ฐ’์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ null ๊ฐ’์€ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•˜๊ณ  ์ต๋ช… ๋ธ”๋ก์€ ๊ฐ’ 3์„ ์‚ฝ์ž…ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ๋•Œ๊นŒ์ง€ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ธ”๋ก์€ ์˜ˆ์™ธ๋ฅผ ์ง€์šฐ๊ณ  ๋กค๋ฐฑ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์—๋Š” XNUMX๊ฐœ์˜ ํ–‰์ด ๋‚จ์Šต๋‹ˆ๋‹ค 1, null, 2 ๋ฐ ๋‹ค์‹œ null ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๊ฐ’ ์Œ์ด ๋ธ”๋ก์—์„œ ๊ฐ™์€ ์–‘์˜ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๊นŒ?

create table t (
    a char(1 char),
    b char(10 char),
    c char(100 char),
    i number(4),
    j number(14),
    k number(24),
    x varchar2(1 char),
    y varchar2(10 char),
    z varchar2(100 char));
 
insert into t (a, b, i, j, x, y)
    values ('Y', 'ะ’ะฐัั', 10, 10, 'ะ”', 'ะ’ะฐัั');

  • A์™€ X
  • B์™€ Y
  • C์™€ K
  • C์™€ Z
  • K์™€ Z
  • ๋‚˜์™€ J
  • J์™€ X
  • ๋ชจ๋‘ ๋‚˜์—ด

๋‹ต๋ณ€๋‹ค์Œ์€ Oracle์— ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…์„œ(12.1.0.2)์—์„œ ๋ฐœ์ทŒํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

CHAR ๋ฐ์ดํ„ฐ ์œ ํ˜•
CHAR ๋ฐ์ดํ„ฐ ์œ ํ˜•์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌธ์ž ์ง‘ํ•ฉ์˜ ๊ณ ์ • ๊ธธ์ด ๋ฌธ์ž์—ด์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌธ์ž ์ง‘ํ•ฉ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Oracle์€ CHAR ์—ด์— ์ €์žฅ๋œ ๋ชจ๋“  ๊ฐ’์ด ์„ ํƒํ•œ ๊ธธ์ด ์˜๋ฏธ๋ก ์—์„œ ํฌ๊ธฐ๋กœ ์ง€์ •๋œ ๊ธธ์ด๋ฅผ ๊ฐ–๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์—ด ๊ธธ์ด๋ณด๋‹ค ์งง์€ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๋ฉด Oracle์€ ํ•ด๋‹น ๊ฐ’์„ ์—ด ๊ธธ์ด๊นŒ์ง€ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค.

VARCHAR2 ๋ฐ์ดํ„ฐ ์œ ํ˜•
VARCHAR2 ๋ฐ์ดํ„ฐ ์œ ํ˜•์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌธ์ž ์„ธํŠธ์—์„œ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌธ์ž ์ง‘ํ•ฉ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Oracle์€ ๊ฐ’์ด ์—ด์˜ ๊ธธ์ด๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ณต๋ฐฑ ์ฑ„์šฐ๊ธฐ ์—†์ด ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋Œ€๋กœ ์ •ํ™•ํžˆ VARCHAR2 ์—ด์— ๋ฌธ์ž ๊ฐ’์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

NUMBER ๋ฐ์ดํ„ฐ ์œ ํ˜•
NUMBER ๋ฐ์ดํ„ฐ ์œ ํ˜•์€ 1.0 x 10-130์—์„œ 1.0 x 10126๊นŒ์ง€์˜ ์ ˆ๋Œ€๊ฐ’์„ ๊ฐ–๋Š” ์–‘์ˆ˜ ๋ฐ ์Œ์ˆ˜ ๊ณ ์ • ์ˆซ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ 1.0๋„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์ด ๋‹ค์Œ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์‚ฐ์ˆ  ํ‘œํ˜„์‹์„ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ 10126 x 1์ด๋ฉด Oracle์ด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ NUMBER ๊ฐ’์—๋Š” 22~XNUMX๋ฐ”์ดํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํŠน์ • ์ˆซ์ž ๋ฐ์ดํ„ฐ ๊ฐ’ NUMBER(p)์— ๋Œ€ํ•œ ์—ด ํฌ๊ธฐ(๋ฐ”์ดํŠธ)๋Š” ๋‹ค์Œ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ p๋Š” ์ฃผ์–ด์ง„ ๊ฐ’์˜ ์ •๋ฐ€๋„์ž…๋‹ˆ๋‹ค. ROUND((๊ธธ์ด(p)+s)/2))+1 ์—ฌ๊ธฐ์„œ ์ˆซ์ž๊ฐ€ ์–‘์ˆ˜์ด๋ฉด s๋Š” 1์ด๊ณ , ์ˆซ์ž๊ฐ€ ์Œ์ˆ˜์ด๋ฉด s๋Š” XNUMX์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ Null ๊ฐ’ ์ €์žฅ์— ๋Œ€ํ•œ ๋ฌธ์„œ์—์„œ ๋ฐœ์ทŒํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Null์€ ์—ด์— ๊ฐ’์ด ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Null์€ ๋ˆ„๋ฝ๋˜์—ˆ๊ฑฐ๋‚˜ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Null์ด ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์žˆ๋Š” ์—ด ์‚ฌ์ด์— ์žˆ์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์—ด ๊ธธ์ด(1)๋ฅผ ์ €์žฅํ•˜๋ ค๋ฉด XNUMX๋ฐ”์ดํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ–‰์˜ ํ›„ํ–‰ Null์—๋Š” ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ ํ–‰ ๋จธ๋ฆฌ๊ธ€์€ ์ด์ „ ํ–‰์˜ ๋‚˜๋จธ์ง€ ์—ด์ด Null์ด๋ผ๋Š” ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ์ด๋ธ”์˜ ๋งˆ์ง€๋ง‰ ์„ธ ์—ด์ด Null์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ์—ด์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ถ”๋ก ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ AL32UTF8 ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ธ์ฝ”๋”ฉ์—์„œ๋Š” ๋Ÿฌ์‹œ์•„์–ด ๋ฌธ์ž๊ฐ€ 2๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

1) A ๋ฐ X, ํ•„๋“œ a 'Y'์˜ ๊ฐ’์€ 1๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ•„๋“œ x 'D'์˜ ๊ฐ’์€ 2๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
2) B ๋ฐ Y, b์˜ 'Vasya' ๊ฐ’์€ ์ตœ๋Œ€ 10์ž์˜ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›Œ์ง€๊ณ  14๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•˜๋ฉฐ, d์˜ 'Vasya'๋Š” 8๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.
3) C ๋ฐ K. ๋‘ ํ•„๋“œ ๋ชจ๋‘ NULL ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ ๊ทธ ๋’ค์— ์ค‘์š”ํ•œ ํ•„๋“œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ 1๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.
4) C ๋ฐ Z. ๋‘ ํ•„๋“œ ๋ชจ๋‘ NULL ๊ฐ’์„ ๊ฐ€์ง€์ง€๋งŒ Z ํ•„๋“œ๋Š” ํ…Œ์ด๋ธ”์˜ ๋งˆ์ง€๋ง‰์ด๋ฏ€๋กœ ๊ณต๊ฐ„(0๋ฐ”์ดํŠธ)์„ ์ฐจ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„๋“œ C๋Š” 1๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.
5) K์™€ Z. ์ด์ „ ์‚ฌ๋ก€์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. K ํ•„๋“œ์˜ ๊ฐ’์€ Z โ€“ 1์—์„œ 0๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.
6) I์™€ J. ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ๋‘ ๊ฐ’ ๋ชจ๋‘ 2๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ์—์„œ ๊ฐ€์ ธ์˜จ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค: round( (1 + 0)/2) +1 = 1 + 1 = 2.
7) J ๋ฐ X. J ํ•„๋“œ์˜ ๊ฐ’์€ 2๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , X ํ•„๋“œ์˜ ๊ฐ’์€ 2๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด์ ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ์˜ต์…˜์€ C ๋ฐ K, I ๋ฐ J, J ๋ฐ X์ž…๋‹ˆ๋‹ค.

T_I ์ธ๋ฑ์Šค์˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง ํŒฉํ„ฐ๋Š” ๋Œ€๋žต ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ?

create table t (i integer);
 
insert into t select rownum from dual connect by level <= 10000;
 
create index t_i on t(i);

  • ์ˆ˜์‹ญ๊ฐœ ์ •๋„
  • ์ˆ˜๋ฐฑ๋ช… ์ •๋„
  • ์•ฝ ์ˆ˜์ฒœ
  • ์ˆ˜๋งŒ๊ฐœ ์ •๋„

๋‹ต๋ณ€Oracle ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด(12.1์—์„œ ์ธ์šฉ):

B-ํŠธ๋ฆฌ ์ธ๋ฑ์Šค์˜ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง ์š”์†Œ๋Š” ์ธ๋ฑ์Šค ๊ฐ’๊ณผ ๊ด€๋ จํ•˜์—ฌ ํ–‰์˜ ๋ฌผ๋ฆฌ์  ๊ทธ๋ฃนํ™”๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง ์š”์†Œ๋Š” ์ตœ์ ํ™” ํ”„๋กœ๊ทธ๋žจ์ด ํŠน์ • ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค ์Šค์บ” ๋˜๋Š” ์ „์ฒด ํ…Œ์ด๋ธ” ์Šค์บ”์ด ๋” ํšจ์œจ์ ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋‚ฎ์€ ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ์ž๋Š” ํšจ์œจ์ ์ธ ์ธ๋ฑ์Šค ์Šค์บ”์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

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

์ด ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด์ƒ์ ์œผ๋กœ ์ •๋ ฌ๋˜๋ฏ€๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ง ์š”์†Œ๋Š” ํ…Œ์ด๋ธ”์—์„œ ์ ์œ ๋œ ๋ธ”๋ก ์ˆ˜์™€ ๊ฐ™๊ฑฐ๋‚˜ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. 8KB์˜ ํ‘œ์ค€ ๋ธ”๋ก ํฌ๊ธฐ์˜ ๊ฒฝ์šฐ ์•ฝ XNUMX๊ฐœ์˜ ์ข์€ ์ˆซ์ž ๊ฐ’์ด ํ•˜๋‚˜์˜ ๋ธ”๋ก์— ๋“ค์–ด๊ฐˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ธ”๋ก ์ˆ˜์™€ ๊ฒฐ๊ณผ์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ง ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ˆ˜์‹ญ๊ฐœ ์ •๋„.

ํ‘œ์ค€ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” N ๊ฐ’์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

create table t (
    a varchar2(N char),
    b varchar2(N char),
    c varchar2(N char),
    d varchar2(N char));
 
create index t_i on t (a, b, c, d);

  • 100
  • 200
  • 400
  • 800
  • 1600
  • 3200
  • 6400

๋‹ต๋ณ€Oracle ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด(11.2์—์„œ ์ธ์šฉ):

๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ œํ•œ

ํ•ญ๋ชฉ
ํ•œ๋„ ์œ ํ˜•
ํ•œ๊ณ„๊ฐ’

์ƒ‰์ธ
์ธ๋ฑ์‹ฑ๋œ ์—ด์˜ ์ „์ฒด ํฌ๊ธฐ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ธ”๋ก ํฌ๊ธฐ์˜ 75% - ์•ฝ๊ฐ„์˜ ์˜ค๋ฒ„ํ—ค๋“œ

๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๋œ ์—ด์˜ ์ „์ฒด ํฌ๊ธฐ๋Š” 6Kb๋ฅผ ์ดˆ๊ณผํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์— ์ผ์–ด๋‚  ์ผ์€ ์„ ํƒํ•œ ๊ธฐ๋ณธ ์ธ์ฝ”๋”ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. AL32UTF8 ์ธ์ฝ”๋”ฉ์˜ ๊ฒฝ์šฐ ํ•œ ๋ฌธ์ž๊ฐ€ ์ตœ๋Œ€ 4๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์•ฝ 6์ž๊ฐ€ 1500KB์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Oracle์€ N = 400(์ตœ์•…์˜ ๊ฒฝ์šฐ ํ‚ค ๊ธธ์ด๊ฐ€ 1600์ž * 4๋ฐ”์ดํŠธ + rowid ๊ธธ์ด์ธ ๊ฒฝ์šฐ)์—์„œ ์ธ๋ฑ์Šค ์ƒ์„ฑ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. N = 200(๋˜๋Š” ๊ทธ ์ดํ•˜)์—์„œ ์ธ๋ฑ์Šค ์ƒ์„ฑ์€ ๋ฌธ์ œ ์—†์ด ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

APPEND ํžŒํŠธ๊ฐ€ ํฌํ•จ๋œ INSERT ์—ฐ์‚ฐ์ž๋Š” ์ง์ ‘ ๋ชจ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๊ฑธ๋ฆฐ ํ…Œ์ด๋ธ”์— ์ ์šฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ง์ ‘ ๋ชจ๋“œ๋กœ ๋กœ๋“œ๋˜๊ณ  ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋Š” ์ง์ ‘ ๋ชจ๋“œ๋กœ ๋กœ๋“œ๋˜์ง€๋งŒ ํŠธ๋ฆฌ๊ฑฐ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜ ๋ชจ๋“œ๋กœ ๋กœ๋“œ๋˜๋ฉฐ ํŠธ๋ฆฌ๊ฑฐ๋Š” ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜ ๋ชจ๋“œ๋กœ ๋กœ๋“œ๋˜์ง€๋งŒ ํŠธ๋ฆฌ๊ฑฐ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

๋‹ต๋ณ€๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๊ฒƒ์€ ๋…ผ๋ฆฌ์˜ ๋ฌธ์ œ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ์ •๋‹ต์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถ”๋ก  ๋ชจ๋ธ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  1. ์ง์ ‘ ๋ชจ๋“œ์—์„œ์˜ ์‚ฝ์ž…์€ SQL ์—”์ง„์„ ์šฐํšŒํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ์ง์ ‘ ํ˜•์„ฑํ•˜์—ฌ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ๋น ๋ฅธ ์†๋„๊ฐ€ ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠธ๋ฆฌ๊ฑฐ ์‹คํ–‰์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋Š” ์•Š๋”๋ผ๋„ ๋งค์šฐ ์–ด๋ ต๊ณ  ์‚ฝ์ž… ์†๋„๊ฐ€ ๊ธ‰๊ฒฉํžˆ ๋Š๋ ค์ง€๋ฏ€๋กœ ์•„๋ฌด๋Ÿฐ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  2. ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๋ฉด ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „์ฒด(๋‹ค๋ฅธ ํ…Œ์ด๋ธ”)์˜ ์ƒํƒœ๋Š” ์ด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…๋œ ๋ชจ๋“œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ๋ถ„๋ช…ํžˆ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ํŒŒ๊ดดํ•˜๋ฏ€๋กœ ํ”„๋กœ๋•์…˜ ์†”๋ฃจ์…˜์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  3. ์š”์ฒญ๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” APPEND๊ฐ€ ํžŒํŠธ์ด๊ณ  ํžŒํŠธ์˜ ์ผ๋ฐ˜์ ์ธ ๋…ผ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๊ณ ๋ ค๋˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ํžŒํŠธ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์—ฐ์‚ฐ์ž๊ฐ€ ์‹คํ–‰๋œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์˜ˆ์ƒ๋˜๋Š” ๋Œ€๋‹ต์€ ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜(SQL) ๋ชจ๋“œ๋กœ ๋กœ๋“œ๋˜๊ณ  ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

Oracle ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด(8.04์—์„œ ์ธ์šฉ):

์ œํ•œ ์‚ฌํ•ญ์„ ์œ„๋ฐ˜ํ•˜๋ฉด ๊ฒฝ๊ณ ๋‚˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ์—†์ด ๊ธฐ์กด ์‚ฝ์ž… ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น๋ฌธ์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์™ธ๋Š” ํŠธ๋žœ์žญ์…˜์—์„œ ๋™์ผํ•œ ํ…Œ์ด๋ธ”์— ๋‘ ๋ฒˆ ์ด์ƒ ์•ก์„ธ์Šคํ•˜๋Š” ๋ช…๋ น๋ฌธ์— ๋Œ€ํ•œ ์ œํ•œ์ด๋ฉฐ, ์ด๋กœ ์ธํ•ด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ์ด๋ธ”์— ํŠธ๋ฆฌ๊ฑฐ ๋˜๋Š” ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ง์ ‘ ๋กœ๋“œ INSERT(์ง๋ ฌ ๋˜๋Š” ๋ณ‘๋ ฌ)๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด APPEND ํžŒํŠธ๋Š” ๋ฌผ๋ก  PARALLEL ํžŒํŠธ ๋˜๋Š” ์ ˆ(์žˆ๋Š” ๊ฒฝ์šฐ)๋„ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

create table t(i integer not null primary key, j integer references t);
 
create trigger t_a_i after insert on t for each row
declare
    pragma autonomous_transaction;
begin
    insert into t values (:new.i + 1, :new.i);
    commit;
end;
/
 
insert into t values (1, null);

  • ์„ฑ๊ณต์ ์ธ ์‹คํ–‰
  • ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋กœ ์ธํ•œ ์‹คํŒจ
  • ์˜ค๋ฅ˜: ์ž์œจ ๊ฑฐ๋ž˜๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ตœ๋Œ€ ํ†ตํ™” ์ค‘์ฒฉ ์ดˆ๊ณผ ๊ด€๋ จ ์˜ค๋ฅ˜
  • ์™ธ๋ž˜ ํ‚ค ์œ„๋ฐ˜ ์˜ค๋ฅ˜
  • ์ž ๊ธˆ ๊ด€๋ จ ์˜ค๋ฅ˜

๋‹ต๋ณ€ํ…Œ์ด๋ธ”๊ณผ ํŠธ๋ฆฌ๊ฑฐ๋Š” ์•„์ฃผ ์ •ํ™•ํ•˜๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ ์ด ์ž‘์—…์œผ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ์˜ ์ž์œจ ํŠธ๋žœ์žญ์…˜๋„ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋กœ๊น…์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

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

๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž๋งŒ ์„ค๋ฌธ ์กฐ์‚ฌ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์ œ๋ฐœ

์–ด๋ ค์› ๋‚˜์š”?

  • ๋‘ ์†๊ฐ€๋ฝ์ฒ˜๋Ÿผ ๋‚˜๋Š” ์ฆ‰์‹œ ๋ชจ๋“  ๊ฒƒ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์‹ค์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์— ํ‹€๋ ธ์–ด์š”.

  • ์ ˆ๋ฐ˜์€ ๋งž์ท„์Šต๋‹ˆ๋‹ค.

  • ๋‹ต์„ ๋‘ ๋ฒˆ ์ถ”์ธกํ–ˆ์Šต๋‹ˆ๋‹ค!

  • ๋Œ“๊ธ€์— ์ ์–ด๋ณผ๊ฒŒ์š”

14๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํˆฌํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. 10๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๊ถŒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€