๊ณผํ•™์ ์ธ ์ฐŒ๋ฅด๊ธฐ ๋ฐฉ๋ฒ• ๋˜๋Š” ๋ฒค์น˜๋งˆํฌ์™€ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”.

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

๊ทธ๋ž˜์„œ ์š”์ ๊นŒ์ง€.

์–ด๋–ค ์ข…๋ฅ˜์˜ ์ž‘์—…์„ ์„œ๋น„์Šคํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ์„œ๋น„์Šค ์‹œ์Šคํ…œ์„ ์„ค์ •ํ•˜๋Š” ์ž‘์—…์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์— ๋Œ€ํ•ด์„œ๋Š” ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€, ์ด ์ž‘์—…์˜ ํ’ˆ์งˆ์„ ์–ด๋–ป๊ฒŒ ์ธก์ •ํ•˜๋Š”์ง€, ์ด ํ’ˆ์งˆ์„ ์ธก์ •ํ•˜๋Š” ๊ธฐ์ค€์€ ๋ฌด์—‡์ธ์ง€๊ฐ€ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด ์„œ๋น„์Šค ์‹œ์Šคํ…œ์—์„œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š” ๋ฐฉ์‹์ด ์–ด๋Š ์ •๋„ ์•Œ๋ ค์ ธ ์žˆ๊ณ  ์ดํ•ด๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

"๋‹ค์†Œ" - ์ด๋Š” ์ƒ์‚ฐ ๋‹จ๊ณ„์— ์ถฉ๋ถ„ํžˆ ์ ํ•ฉํ•œ ํ…Œ์ŠคํŠธ ๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์— ํ•ฉ์„ฑํ•˜๊ณ  ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ • ๋„๊ตฌ, ์œ ํ‹ธ๋ฆฌํ‹ฐ, ์„œ๋น„์Šค๋ฅผ ์ค€๋น„(๋˜๋Š” ์–ด๋”˜๊ฐ€์—์„œ ๊ฐ€์ ธ์˜ค๋Š”)ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ƒ์‚ฐ ์ž‘์—…์— ์ถฉ๋ถ„ํžˆ ์ ํ•ฉํ•œ ์กฐ๊ฑด์—์„œ.

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

๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด ์„œ๋น„์Šค ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ดํ•ด๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•„ ํŠน์ • ํ”Œ๋žซํผ์˜ ํ–ฅํ›„ ๋กœ๋“œ์— ๋Œ€ํ•ด ์ด ์‹œ์Šคํ…œ์˜ ์„ค์ •์„ ์ „๋ฌธ์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ์‹œ์Šคํ…œ์— ํ•„์š”ํ•œ ์ƒ์‚ฐ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž˜. ์ด๊ฒƒ์€ ๊ฑฐ์˜ ํ•ญ์ƒ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๊ธ€์Ž„, ๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ค๋ฅด๋Š” ๊ฒƒ์€ ์ด ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์กฐ์ • ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์— ํ—ˆ์šฉ๋˜๋Š” ๋ฒ”์œ„๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ขŒํ‘œ ํ•˜๊ฐ• ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ์—์„œ ์‹œ์Šคํ…œ ๋งค๊ฐœ ๋ณ€์ˆ˜ ๊ฐ’์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ €๊ฒƒ๋“ค. ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ํŠน์ • ๊ฐ’ ์„ธํŠธ์˜ ํ˜•ํƒœ๋กœ ์‹œ์Šคํ…œ์— ์ผ์ข…์˜ ๊ตฌ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด ๋„๊ตฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋กœ๋“œ ์ƒ์„ฑ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๋กœ๋“œ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ฐ’(์‘๋‹ต ๋˜๋Š” ์‹œ์Šคํ…œ ํ’ˆ์งˆ ์ธก์ • ๊ธฐ์ค€)์„ ์‚ดํŽด๋ณด์„ธ์š”.

๋‘ ๋ฒˆ์งธ ์ƒ๊ฐ์€ ์ด๊ฒƒ์ด ๋งค์šฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด๋ผ๋Š” ๊ฒฐ๋ก ์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

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

๊ธ€์Ž„์š”, ์—ฌ๋Ÿฌ๋ถ„์ด ์ดํ•ดํ•˜๊ณ  ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์‹œ์Šคํ…œ ์„ค์ • ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’ ์„ธํŠธ์—๋Š” ์ผ๋ถ€ ๊ฐ’์˜ ์‹œํ€€์Šค๋กœ ๋ฒกํ„ฐ๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐ ๋ฒกํ„ฐ๋Š” (์ด ๋ฒกํ„ฐ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์—์„œ) ๋‹ค๋ฅธ ๊ฒƒ๋“ค์ด ๋™์ผํ•˜๋‹ค๋Š” ์ ์—์„œ ์™„์ „ํžˆ ๋ช…ํ™•ํ•œ ๋ฉ”ํŠธ๋ฆญ ๊ฐ’, ์ฆ‰ ํ…Œ์ŠคํŠธ ๋กœ๋“œ ํ•˜์—์„œ ์‹œ์Šคํ…œ ์ž‘๋™ ํ’ˆ์งˆ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰,

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

๊ทธ๋ฆฌ๊ณ  ์ด์— ๋Œ€์‘ํ•˜๋Š” ๋ฉ”ํŠธ๋ฆญ์˜ ๊ฐ’์€ ๊ณผํ•™์ ์ธ ์ฐŒ๋ฅด๊ธฐ ๋ฐฉ๋ฒ• ๋˜๋Š” ๋ฒค์น˜๋งˆํฌ์™€ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ทธ๊ฒƒ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œํ•˜์ž
๊ณผํ•™์ ์ธ ์ฐŒ๋ฅด๊ธฐ ๋ฐฉ๋ฒ• ๋˜๋Š” ๋ฒค์น˜๋งˆํฌ์™€ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ๋Š” ํ•จ์ˆ˜๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค: ๊ณผํ•™์ ์ธ ์ฐŒ๋ฅด๊ธฐ ๋ฐฉ๋ฒ• ๋˜๋Š” ๋ฒค์น˜๋งˆํฌ์™€ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ทธ๋ ‡๋‹ค๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ฆ‰๊ฐ์ ์œผ๋กœ ๊ท€๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ํ•™์ƒ ์‹œ์ ˆ์—๋Š” ๊ฑฐ์˜ ์žŠ์–ด๋ฒ„๋ ธ๋˜ ํ•จ์ˆ˜์˜ ๊ทน๊ฐ’์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ๋Š” ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์กฐ์ง์ ์ด๊ณ  ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์งˆ๋ฌธ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. ์–ด๋–ค ์˜๋ฏธ์—์„œ๋Š” ์†์œผ๋กœ ์ฝ”๋”ฉํ•˜๋Š” ์ผ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
  2. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•˜๋ ค๋ฉด, ์ฆ‰ ๊ทน๊ฐ’(์žˆ๋Š” ๊ฒฝ์šฐ)์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์Œ, ์ ์–ด๋„ ์ขŒํ‘œ ํ•˜๊ฐ•๋ณด๋‹ค ๋น ๋ฆ…๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์š”์ ์€ ๊ทธ๋Ÿฌํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ  ์–ด๋–ค ํ˜•ํƒœ๋กœ๋“  ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋œ ์ผ๋ถ€ ํ™˜๊ฒฝ์„ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Œ์„ ์•”์‹œํ•ฉ๋‹ˆ๋‹ค.
๊ธ€์Ž„, ๋‚˜๋„ ์•Œ์•„ python ะธ cran-r

๋‘ ๋ฒˆ์งธ ์š”์ ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด, ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€, ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋ฌด์—‡์ธ์ง€, ์ž‘์—…์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์ฝ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ๊ณผ ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด์—์„œ ์ง์ ‘์ ์œผ๋กœ ์œ ์šฉํ•œ ๋ถ€์ž‘์šฉ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฐ๊ณผ๋กœ๋ถ€ํ„ฐ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋งŽ์€ ๊ฒƒ์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ์ด์œ ๋กœ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋” ๋นจ๋ฆฌ ์–ป์–ด์•ผ ํ•œ๋‹ค๋ฉด ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ดํŽด๋ณด๊ณ  ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ์œ ์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜๋Š” ์ด ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์ž‘์—…์„ ๋‹ค์Œ์œผ๋กœ ๋งํ•˜์ž๋ฉด ์‹คํ—˜์‹ค ์ž‘์—…์œผ๋กœ ๊ณ ๋ คํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜:

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

์ด๋Š” ์ด ํ…Œ์ด๋ธ”์— ์†Œ์ˆ˜์˜ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ๋‹ค์†Œ ํฐ ํ…Œ์ด๋ธ”์˜ ํ•œ ํ–‰์„ ๋ณ€๊ฒฝํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์ž…๋‹ˆ๋‹ค.

์ด ์ƒํ™ฉ์—์„œ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํ•˜์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒ์‚ฐ์„ฑ์€ ์˜ˆ์•ฝ์— ๋”ฐ๋ผ ์‚ฐํ™”ํ™˜์› ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฒ˜๋ฆฌ ํ’ˆ์งˆ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

๋ฉด์ฑ… ์กฐํ•ญ - subdb ์„ค์ •์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ.

์™œ๋ƒํ•˜๋ฉด ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ ํ…Œ์ด๋ธ” ํ˜•์‹ ๋ฐ์ดํ„ฐ ๋ฐ/๋˜๋Š” ํ…Œ์ด๋ธ” ํ˜•์‹ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ ์‚ฌ์šฉ์ž ์ž‘์—… ์„ค๊ณ„๋กœ ์ธํ•ด SQL ์„ธ์…˜ ๊ฐ„์— ํŠธ๋žœ์žญ์…˜ ์ž ๊ธˆ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ด๋Š” TPS ์ง€ํ‘œ์— ์šฐ์šธํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฒƒ์ด๋ฉฐ ์ด๋Š” ํ•˜์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ด€๋ จํ•˜์—ฌ ์™ธ์ƒ์  ์š”์ธ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์Œ, ์ด๊ฒƒ์ด ํ‘œ ํ˜•์‹ ๋ชจ๋ธ์ด ์„ค๊ณ„๋œ ๋ฐฉ์‹๊ณผ ๋ง‰ํž˜์ด ๋ฐœ์ƒํ•˜๋Š” ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ์ž‘์—… ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‹คํ—˜์˜ ์ˆœ์ˆ˜์„ฑ์„ ์œ„ํ•ด ์ด ์š”์†Œ๋Š” ์ œ์™ธํ•˜๊ณ , ์•„๋ž˜์—์„œ๋Š” ๊ทธ ๋ฐฉ๋ฒ•์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๋ช…ํ™•์„ฑ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ œ์ถœ๋œ SQL ๋ช…๋ น์˜ 100%๊ฐ€ DML ๋ช…๋ น์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
    ํ…Œ์ŠคํŠธ์—์„œ๋Š” ํ•˜์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ํŠน์„ฑ์ด ๋™์ผํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.
    ์ฆ‰, skl ์„ธ์…˜ ์ˆ˜, ํ‘œ ํ˜•์‹ ๋ฐ์ดํ„ฐ, skl ์„ธ์…˜์ด ์ด๋“ค๊ณผ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  2. Subd๋Š” ๋‹ค์Œ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. FORCE LOGGING, ARCHIVELOG ๊ฐœ์กฐ. ํ”Œ๋ž˜์‹œ๋ฐฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋“œ๋Š” ํ•˜์œ„ ๋ ˆ๋ฒจ์—์„œ ๊บผ์ง‘๋‹ˆ๋‹ค.
  3. Redo ๋กœ๊ทธ: ๋ณ„๋„์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ, ๋ณ„๋„์˜ "๋””์Šคํฌ"์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚˜๋จธ์ง€ ๋ฌผ๋ฆฌ์  ๊ตฌ์„ฑ์š”์†Œ: ๋ณ„๋„์˜ "๋””์Šคํฌ"์— ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ณ„๋„์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ:

๋ฌผ๋ฆฌ์  ์žฅ์น˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์‹คํ—˜์‹ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์š”์†Œ

SQL> select status||' '||name from v$controlfile;
 /db/u14/oradata/XE/control01.ctl
SQL> select GROUP#||' '||MEMBER from v$logfile;
1 /db/u02/oradata/XE/redo01_01.log
2 /db/u02/oradata/XE/redo02_01.log
SQL> select FILE_ID||' '||TABLESPACE_NAME||' '||round(BYTES/1024/1024,2)||' '||FILE_NAME as col from dba_data_files;
4 UNDOTBS1 2208 /db/u14/oradata/XE/undotbs1_01.dbf
2 SLOB 128 /db/u14/oradata/XE/slob01.dbf
7 USERS 5 /db/u14/oradata/XE/users01.dbf
1 SYSTEM 860 /db/u14/oradata/XE/system01.dbf
3 SYSAUX 550 /db/u14/oradata/XE/sysaux01.dbf
5 MONITOR 128 /db/u14/oradata/XE/monitor.dbf
SQL> !cat /proc/mounts | egrep "/db/u[0-2]"
/dev/vda1 /db/u14 ext4 rw,noatime,nodiratime,data=ordered 0 0
/dev/mapper/vgsys-ora_redo /db/u02 xfs rw,noatime,nodiratime,attr2,nobarrier,inode64,logbsize=256k,noquota 0 0

์ฒ˜์Œ์—๋Š” ์ด๋Ÿฌํ•œ ๋กœ๋“œ ์กฐ๊ฑด์—์„œ transaction subd๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. SLOB ์œ ํ‹ธ๋ฆฌํ‹ฐ
์ •๋ง ๋†€๋ผ์šด ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์ž์˜ ๋ง์„ ์ธ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

SLOB์˜ ํ•ต์‹ฌ์€ 'SLOB ๋ฐฉ์‹'์ด๋‹ค. SLOB ๋ฐฉ๋ฒ•์€ ํ”Œ๋žซํผ ํ…Œ์ŠคํŠธ๋ฅผ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฒฝํ•ฉ ์—†์ด. ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ์„ ์ตœ๋Œ€ํ™”ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž ๊ธˆ ๋˜๋Š” ์‹ฌ์ง€์–ด๋Š” ๋ฐ”์ธ๋”ฉ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Oracle ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ธ”๋ก์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋ฉด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ๋ธ”๋ก์—์„œ! ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋ณธ ๋ฐฐํฌ์˜ SLOB๋Š” ์ด๋Ÿฌํ•œ ๊ฒฝํ•ฉ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์„ ์–ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
cl ์„ธ์…˜์˜ ๋ณ‘๋ ฌ์„ฑ ์ •๋„๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. -t ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‹คํ–‰ํ•˜๋‹ค runit.sh SLOB์—์„œ
DML ๋ช…๋ น์˜ ๋น„์œจ์€ ํ•˜์œ„ ํ•ญ๋ชฉ, ๊ฐ ํ…์ŠคํŠธ ์„ธ์…˜, ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „์†ก๋˜๋Š” ํ…์ŠคํŠธ ๋ฉ”์‹œ์ง€ ์ˆ˜๋กœ ๊ทœ์ œ๋ฉ๋‹ˆ๋‹ค. UPDATE_PCT
๋ณ„๋„๋กœ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ: SLOB ๋กœ๋“œ ์„ธ์…˜ ์ „ํ›„์— ์ž์ฒด์ ์œผ๋กœ - statspack ๋˜๋Š” awr-snapshots(์ค€๋น„ํ•˜๋„๋ก ์„ค์ •๋œ ๊ฒƒ)์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋ฐํ˜€์กŒ๋‹ค SLOB 30์ดˆ ๋ฏธ๋งŒ์˜ SQL ์„ธ์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๋‚˜๋Š” ๋จผ์ € ๋‚ด ์ž์‹ ์˜ ๋…ธ๋™์ž-๋†๋ฏผ ๋ฒ„์ „์˜ ๋กœ๋”๋ฅผ ์ฝ”๋”ฉํ•œ ๋‹ค์Œ ๊ณ„์† ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ช…ํ™•์„ฑ์„ ์œ„ํ•ด ๋กœ๋”๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…๊ณผ ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•์„ ๋ช…ํ™•ํžˆ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ๋”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž‘์—…์ž ์ฝ”๋“œ

function dotx()
{
local v_period="$2"
[ -z "v_period" ] && v_period="0"
source "/home/oracle/testingredotracะต/config.conf"

$ORACLE_HOME/bin/sqlplus -S system/${v_system_pwd} << __EOF__
whenever sqlerror exit failure
set verify off
set echo off
set feedback off

define wnum="$1"
define period="$v_period"
set appinfo worker_&&wnum

declare
 v_upto number;
 v_key  number;
 v_tots number;
 v_cts  number;
begin
 select max(col1) into v_upto from system.testtab_&&wnum;
 SELECT (( SYSDATE - DATE '1970-01-01' ) * 86400 ) into v_cts FROM DUAL;
 v_tots := &&period + v_cts;
 while v_cts <= v_tots
 loop
  v_key:=abs(mod(dbms_random.random,v_upto));
  if v_key=0 then
   v_key:=1;
  end if;
  update system.testtab_&&wnum t
  set t.object_name=translate(dbms_random.string('a', 120), 'abcXYZ', '158249')
  where t.col1=v_key
  ;
  commit;
  SELECT (( SYSDATE - DATE '1970-01-01' ) * 86400 ) into v_cts FROM DUAL;
 end loop;
end;
/

exit
__EOF__
}
export -f dotx

์ž‘์—…์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

์ผํ•˜๋Š” ๋…ธ๋™์ž

echo "starting test, duration: ${TEST_DURATION}" >> "$v_logfile"
for((i=1;i<="$SQLSESS_COUNT";i++))
do
 echo "sql-session: ${i}" >> "$v_logfile"
 dotx "$i" "${TEST_DURATION}" &
done
echo "waiting..." >> "$v_logfile"
wait

๊ทธ๋ฆฌ๊ณ  ์ž‘์—…์ž๋ฅผ ์œ„ํ•œ ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ค€๋น„๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ์ƒ์„ฑ

function createtable() {
source "/home/oracle/testingredotracะต/config.conf"
$ORACLE_HOME/bin/sqlplus -S system/${v_system_pwd} << __EOF__
whenever sqlerror continue
set verify off
set echo off
set feedback off

define wnum="$1"
define ts_name="slob"

begin
 execute immediate 'drop table system.testtab_&&wnum';
exception when others then null;
end;
/

create table system.testtab_&&wnum tablespace &&ts_name as
select rownum as col1, t.*
from sys.dba_objects t
where rownum<1000
;
create index testtab_&&wnum._idx on system.testtab_&&wnum (col1);
--alter table system.testtab_&&wnum nologging;
--alter index system.testtab_&&wnum._idx nologging;
exit
__EOF__
}
export -f createtable

seq 1 1 "$SQLSESS_COUNT" | xargs -n 1 -P 4 -I {} -t bash -c "createtable "{}"" | tee -a "$v_logfile"
echo "createtable done" >> "$v_logfile"

์ €๊ฒƒ๋“ค. ๊ฐ ์ž‘์—…์ž(์‹ค์งˆ์ ์œผ๋กœ DB์˜ ๋ณ„๋„ SQL ์„ธ์…˜)์— ๋Œ€ํ•ด ์ž‘์—…์ž๊ฐ€ ์ž‘์—…ํ•˜๋Š” ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

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

๋กœ๋“œ ์ค‘์ธ ์„œ๋ธŒ์˜ ์ž‘๋™์„ ์„ค๋ช…ํ•˜๋Š” statspack ๋ณด๊ณ ์„œ์˜ ์ผ๋ถ€

Database    DB Id    Instance     Inst Num  Startup Time   Release     RAC
~~~~~~~~ ----------- ------------ -------- --------------- ----------- ---
          2929910313 XE                  1 07-Sep-20 23:12 18.0.0.0.0  NO

Host Name             Platform                CPUs Cores Sockets   Memory (G)
~~~~ ---------------- ---------------------- ----- ----- ------- ------------
     billing.izhevsk1 Linux x86 64-bit           2     2       1         15.6

Snapshot       Snap Id     Snap Time      Sessions Curs/Sess Comment
~~~~~~~~    ---------- ------------------ -------- --------- ------------------
Begin Snap:       1630 07-Sep-20 23:12:27       55        .7
  End Snap:       1631 07-Sep-20 23:20:29       62        .6
   Elapsed:       8.03 (mins) Av Act Sess:       8.4
   DB time:      67.31 (mins)      DB CPU:      15.01 (mins)

Cache Sizes            Begin        End
~~~~~~~~~~~       ---------- ----------
    Buffer Cache:     1,392M              Std Block Size:         8K
     Shared Pool:       288M                  Log Buffer:   103,424K

Load Profile              Per Second    Per Transaction    Per Exec    Per Call
~~~~~~~~~~~~      ------------------  ----------------- ----------- -----------
      DB time(s):                8.4                0.0        0.00        0.20
       DB CPU(s):                1.9                0.0        0.00        0.04
       Redo size:        7,685,765.6              978.4
   Logical reads:           60,447.0                7.7
   Block changes:           47,167.3                6.0
  Physical reads:                8.3                0.0
 Physical writes:              253.4                0.0
      User calls:               42.6                0.0
          Parses:               23.2                0.0
     Hard parses:                1.2                0.0
W/A MB processed:                1.0                0.0
          Logons:                0.5                0.0
        Executes:           15,756.5                2.0
       Rollbacks:                0.0                0.0
    Transactions:            7,855.1

์‹คํ—˜์‹ค ์ž‘์—…์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์กฐ๊ฑด์ด ๋™์ผํ•˜๋‹ค๋ฉด ์‹คํ—˜์‹ค ํ•˜์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋กœ๊ทธ ๊ทธ๋ฃน์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ๊ฐ’ ๋ฒ”์œ„: [32, 1024]MB;
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ €๋„ ๊ทธ๋ฃน ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ฐ’ ๋ฒ”์œ„: [2,32];
  3. log_archive_max_processes ๊ฐ’ ๋ฒ”์œ„: [1,8];
  4. commit_logging ๋‘ ๊ฐ€์ง€ ๊ฐ’์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. batch|immediate;
  5. commit_wait ๋‘ ๊ฐ€์ง€ ๊ฐ’์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. wait|nowait;
  6. log_buffer ๊ฐ’ ๋ฒ”์œ„: [2,128]MB.
  7. log_checkpoint_timeout ๊ฐ’ ๋ฒ”์œ„: [60,1200]์ดˆ
  8. db_writer_processes ๊ฐ’ ๋ฒ”์œ„: [1,4]
  9. undo_retention ๊ฐ’ ๋ฒ”์œ„: [30;300]์ดˆ
  10. transactions_per_rollback_segment ๊ฐ’ ๋ฒ”์œ„: [1,8]
  11. disk_asynch_io ๋‘ ๊ฐ€์ง€ ๊ฐ’์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. true|false;
  12. filesystemio_options ๋‹ค์Œ ๊ฐ’์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. none|setall|directIO|asynch;
  13. db_block_checking ๋‹ค์Œ ๊ฐ’์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. OFF|LOW|MEDIUM|FULL;
  14. db_block_checksum ๋‹ค์Œ ๊ฐ’์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. OFF|TYPICAL|FULL;

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

๊ทธ๋Ÿฌ๋‚˜.

์‹คํ—˜์‹ค ์ž‘์—…์˜ ์š”์ ์€ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๊ฐ€ ์ด๋ฅผ ์ƒ๋Œ€์ ์œผ๋กœ ์‹ ์†ํ•˜๊ฒŒ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์—๊ฒŒ ๋‚จ์€ ๊ฒƒ์€ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋ฌธ์„œ๋ฅผ ์กฐ์‚ฌํ•˜์—ฌ ๋ณ€๊ฒฝํ•  ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฒ”์œ„๋ฅผ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.
๋˜ํ•œ ์„ ํƒํ•œ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‚ฌ์šฉ์ž ์ •์˜ ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ฝ”๋“œ๋ฅผ ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์œ„์—์„œ ์–˜๊ธฐํ•œ๊ฑด๋ฐ cran-r์ฆ‰, ๋งž์ถคํ˜• ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•œ ๋ชจ๋“  ์กฐ์ž‘์€ R ์Šคํฌ๋ฆฝํŠธ ํ˜•์‹์œผ๋กœ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์ž‘์—…, ๋ถ„์„, ๋ฉ”ํŠธ๋ฆญ ๊ฐ’๋ณ„ ์„ ํƒ, ์‹œ์Šคํ…œ ์ƒํƒœ ๋ฒกํ„ฐ: ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. GA (๋ฌธ์„œ)
์ด ๊ฒฝ์šฐ ํŒจํ‚ค์ง€๋Š” ๋ฒกํ„ฐ(ํŒจํ‚ค์ง€ ์ธก๋ฉด์—์„œ ์—ผ์ƒ‰์ฒด)๊ฐ€ ์†Œ์ˆ˜ ๋ถ€๋ถ„์ด ํฌํ•จ๋œ ์ˆซ์ž ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ์ง€์ •๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ทธ๋‹ค์ง€ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„ค์ • ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์˜ ๋‚ด ๋ฒกํ„ฐ๋Š” ์ •์ˆ˜์™€ ๋ฌธ์ž์—ด ๊ฐ’์˜ 14๊ฐœ ์ˆ˜๋Ÿ‰์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋ฌธ์ œ๋Š” ๋ฌธ์ž์—ด ๊ฐ’์— ํŠน์ • ์ˆซ์ž๋ฅผ ํ• ๋‹นํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฒฐ๊ตญ R ์Šคํฌ๋ฆฝํŠธ์˜ ์ฃผ์š” ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

GA::ga์— ์ „ํ™”ํ•˜๊ธฐ

cat( "", file=v_logfile, sep="n", append=F)

pSize = 10
elitism_value=1
pmutation_coef=0.8
pcrossover_coef=0.1
iterations=50

gam=GA::ga(type="real-valued", fitness=evaluate,
lower=c(32,2, 1,1,1,2,60,1,30,1,0,0, 0,0), upper=c(1024,32, 8,10,10,128,800,4,300,8,10,40, 40,30),
popSize=pSize,
pcrossover = pcrossover_coef,
pmutation = pmutation_coef,
maxiter=iterations,
run=4,
keepBest=T)
cat( "GA-session is done" , file=v_logfile, sep="n", append=T)
gam@solution

์—ฌ๊ธฐ์„œ ๋„์›€์„ ๋ฐ›์•„ lower ะธ upper ์„œ๋ธŒ๋ฃจํ‹ด ์†์„ฑ ga ๋ณธ์งˆ์ ์œผ๋กœ ๊ฒ€์ƒ‰ ๊ณต๊ฐ„์˜ ์˜์—ญ์ด ์ง€์ •๋˜๋ฉฐ, ๊ทธ ์˜์—ญ ๋‚ด์—์„œ ์ ํ•ฉ์„ฑ ํ•จ์ˆ˜์˜ ์ตœ๋Œ€๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋ฒกํ„ฐ(๋˜๋Š” ๋ฒกํ„ฐ๋“ค)์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

ga ์„œ๋ธŒ๋ฃจํ‹ด์€ ์ ํ•ฉ์„ฑ ํ•จ์ˆ˜๋ฅผ ์ตœ๋Œ€ํ™”ํ•˜๋Š” ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๊ฒฝ์šฐ ๋ฒกํ„ฐ๋ฅผ subd์˜ ํŠน์ • ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๊ฐ’ ์„ธํŠธ๋กœ ์ดํ•ดํ•˜๋Š” ์ ํ•ฉ์„ฑ ํ•จ์ˆ˜๊ฐ€ subd๋กœ๋ถ€ํ„ฐ ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์‹ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ฃผ์–ด์ง„ subd ์„ค์ •๊ณผ subd์— ๋Œ€ํ•œ ์ฃผ์–ด์ง„ ๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ? subd๋Š” ์ดˆ๋‹น ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ํŽผ์น  ๋•Œ ํ”ผํŠธ๋‹ˆ์Šค ํ•จ์ˆ˜ ๋‚ด์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

ํ”ผํŠธ๋‹ˆ์Šค ๊ธฐ๋Šฅ ์ฝ”๋“œ

evaluate=function(p_par) {
v_module="evaluate"
v_metric=0
opn=NULL
opn$rg_size=round(p_par[1],digit=0)
opn$rg_count=round(p_par[2],digit=0)
opn$log_archive_max_processes=round(p_par[3],digit=0)
opn$commit_logging="BATCH"
if ( round(p_par[4],digit=0) > 5 ) {
 opn$commit_logging="IMMEDIATE"
}
opn$commit_logging=paste("'", opn$commit_logging, "'",sep="")

opn$commit_wait="WAIT"
if ( round(p_par[5],digit=0) > 5 ) {
 opn$commit_wait="NOWAIT"
}
opn$commit_wait=paste("'", opn$commit_wait, "'",sep="")

opn$log_buffer=paste(round(p_par[6],digit=0),"m",sep="")
opn$log_checkpoint_timeout=round(p_par[7],digit=0)
opn$db_writer_processes=round(p_par[8],digit=0)
opn$undo_retention=round(p_par[9],digit=0)
opn$transactions_per_rollback_segment=round(p_par[10],digit=0)
opn$disk_asynch_io="true"
if ( round(p_par[11],digit=0) > 5 ) {
 opn$disk_asynch_io="false"
} 

opn$filesystemio_options="none"
if ( round(p_par[12],digit=0) > 10 && round(p_par[12],digit=0) <= 20 ) {
 opn$filesystemio_options="setall"
}
if ( round(p_par[12],digit=0) > 20 && round(p_par[12],digit=0) <= 30 ) {
 opn$filesystemio_options="directIO"
}
if ( round(p_par[12],digit=0) > 30 ) {
 opn$filesystemio_options="asynch"
}

opn$db_block_checking="OFF"
if ( round(p_par[13],digit=0) > 10 && round(p_par[13],digit=0) <= 20 ) {
 opn$db_block_checking="LOW"
}
if ( round(p_par[13],digit=0) > 20 && round(p_par[13],digit=0) <= 30 ) {
 opn$db_block_checking="MEDIUM"
}
if ( round(p_par[13],digit=0) > 30 ) {
 opn$db_block_checking="FULL"
}

opn$db_block_checksum="OFF"
if ( round(p_par[14],digit=0) > 10 && round(p_par[14],digit=0) <= 20 ) {
 opn$db_block_checksum="TYPICAL"
}
if ( round(p_par[14],digit=0) > 20 ) {
 opn$db_block_checksum="FULL"
}

v_vector=paste(round(p_par[1],digit=0),round(p_par[2],digit=0),round(p_par[3],digit=0),round(p_par[4],digit=0),round(p_par[5],digit=0),round(p_par[6],digit=0),round(p_par[7],digit=0),round(p_par[8],digit=0),round(p_par[9],digit=0),round(p_par[10],digit=0),round(p_par[11],digit=0),round(p_par[12],digit=0),round(p_par[13],digit=0),round(p_par[14],digit=0),sep=";")
cat( paste(v_module," try to evaluate vector: ", v_vector,sep="") , file=v_logfile, sep="n", append=T)

rc=make_additional_rgroups(opn)
if ( rc!=0 ) {
 cat( paste(v_module,"make_additional_rgroups failed",sep="") , file=v_logfile, sep="n", append=T)
 return (0)
}

v_rc=0
rc=set_db_parameter("log_archive_max_processes", opn$log_archive_max_processes)
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("commit_logging", opn$commit_logging )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("commit_wait", opn$commit_wait )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("log_buffer", opn$log_buffer )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("log_checkpoint_timeout", opn$log_checkpoint_timeout )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("db_writer_processes", opn$db_writer_processes )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("undo_retention", opn$undo_retention )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("transactions_per_rollback_segment", opn$transactions_per_rollback_segment )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("disk_asynch_io", opn$disk_asynch_io )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("filesystemio_options", opn$filesystemio_options )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("db_block_checking", opn$db_block_checking )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("db_block_checksum", opn$db_block_checksum )
if ( rc != 0 ) {  v_rc=1 }

if ( rc!=0 ) {
 cat( paste(v_module," can not startup db with that vector of settings",sep="") , file=v_logfile, sep="n", append=T)
 rc=stop_db("immediate")
 rc=create_spfile()
 rc=start_db("")
 rc=remove_additional_rgroups(opn)
 return (0)
}

rc=stop_db("immediate")
rc=start_db("")
if ( rc!=0 ) {
 cat( paste(v_module," can not startup db with that vector of settings",sep="") , file=v_logfile, sep="n", append=T)
 rc=stop_db("abort")
 rc=create_spfile()
 rc=start_db("")
 rc=remove_additional_rgroups(opn)
 return (0)
}

rc=run_test()
v_metric=getmetric()

rc=stop_db("immediate")
rc=create_spfile()
rc=start_db("")
rc=remove_additional_rgroups(opn)

cat( paste("result: ",v_metric," ",v_vector,sep="") , file=v_logfile, sep="n", append=T)
return (v_metric)
}

์ €๊ฒƒ. ๋ชจ๋“  ์ž‘์—…: ํ”ผํŠธ๋‹ˆ์Šค ๊ธฐ๋Šฅ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

ga-์„œ๋ธŒ๋ฃจํ‹ด์€ ๋ฒกํ„ฐ, ๋” ์ •ํ™•ํ•˜๊ฒŒ๋Š” ์—ผ์ƒ‰์ฒด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ ํ•ฉ๋„ ํ•จ์ˆ˜๊ฐ€ ํฐ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ์œ ์ „์ž๋ฅผ ๊ฐ€์ง„ ์—ผ์ƒ‰์ฒด๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Š” ๋ณธ์งˆ์ ์œผ๋กœ N์ฐจ์› ํƒ์ƒ‰๊ณต๊ฐ„์—์„œ ๋ฒกํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ตœ์ ์˜ ์—ผ์ƒ‰์ฒด ์ง‘ํ•ฉ์„ ์ฐพ๋Š” ๊ณผ์ •์ด๋‹ค.

๋งค์šฐ ๋ช…ํ™•ํ•˜๊ณ  ์ƒ์„ธํ•จ ์„ค๋ช…, ์œ ์ „์ž ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ž‘์—…์ธ R ์ฝ”๋“œ์˜ ์˜ˆ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ๊ธฐ์ˆ ์  ์‚ฌํ•ญ์„ ๋ณ„๋„๋กœ ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜์˜ ๋ณด์กฐ ํ˜ธ์ถœ evaluate์˜ˆ๋ฅผ ๋“ค์–ด, subd ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” stop-start๋Š” ๋‹ค์Œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. cran-r ๊ธฐ๋Šฅ system2

๋„์›€์„ ๋ฐ›์•„ ์ผ๋ถ€ bash ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ๋ช…๋ น์ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

set_db_๋งค๊ฐœ๋ณ€์ˆ˜

set_db_parameter=function(p1, p2) {
v_module="set_db_parameter"
v_cmd="/home/oracle/testingredotracะต/set_db_parameter.sh"
v_args=paste(p1," ",p2,sep="")

x=system2(v_cmd, args=v_args, stdout=T, stderr=T, wait=T)
if ( length(attributes(x)) > 0 ) {
 cat(paste(v_module," failed with: ",attributes(x)$status," ",v_cmd," ",v_args,sep=""), file=v_logfile, sep="n", append=T)
 return (attributes(x)$status)
}
else {
 cat(paste(v_module," ok: ",v_cmd," ",v_args,sep=""), file=v_logfile, sep="n", append=T)
 return (0)
}
}

๋‘ ๋ฒˆ์งธ ํฌ์ธํŠธ๋Š” ์„ ์ž…๋‹ˆ๋‹ค. evaluate ํŠน์ • ๋ฉ”ํŠธ๋ฆญ ๊ฐ’๊ณผ ํ•ด๋‹น ํŠœ๋‹ ๋ฒกํ„ฐ๋ฅผ ๋กœ๊ทธ ํŒŒ์ผ์— ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ:

cat( paste("result: ",v_metric," ",v_vector,sep="") , file=v_logfile, sep="n", append=T)

์ด๋Š” ์ด ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์—์„œ ํŠœ๋‹ ๋ฒกํ„ฐ์˜ ์–ด๋–ค ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ฉ”ํŠธ๋ฆญ ๊ฐ’์— ๋” ํฌ๊ฑฐ๋‚˜ ์ž‘์€ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์†์„ฑ-์ค‘์š”๋„ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‚˜์š”?

๊ทธ๋ž˜ํ”„ ํ˜•์‹์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฉ”ํŠธ๋ฆญ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๊ทธ๋ฆผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ณผํ•™์ ์ธ ์ฐŒ๋ฅด๊ธฐ ๋ฐฉ๋ฒ• ๋˜๋Š” ๋ฒค์น˜๋งˆํฌ์™€ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•

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

์ž˜. ๋งŽ๋‚˜์š”, ์ ๋‚˜์š”, ~8 tps: ๋ณ„๋„์˜ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.
์‹คํ—˜์‹ค ์ž‘์—…์˜ ํ‹€ ๋‚ด์—์„œ ์ด ์ˆ˜์น˜๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ์—ญํ•™, ์ด ๊ฐ’์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”๊ฐ€์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์˜ ์—ญํ•™์€ ์ข‹์Šต๋‹ˆ๋‹ค.
์ ์–ด๋„ ํ•˜๋‚˜์˜ ์š”์†Œ๊ฐ€ ์—ผ์ƒ‰์ฒด ๋ฒกํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋Š” ga ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ๋ฉ”ํŠธ๋ฆญ ๊ฐ’์— ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.
๊ณก์„  ๊ฐ’์˜ ์ƒ๋‹นํžˆ ํ™œ๋ฐœํ•œ ์—ญํ•™์œผ๋กœ ํŒ๋‹จํ•˜๋ฉด ๋น„๋ก ํ›จ์”ฌ ์ž‘์ง€๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์š”์†Œ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ํ•„์š”ํ•œ ๊ณณ์ด์—์š” attribute-importance ๋ถ„์„์„ ํ†ตํ•ด ์–ด๋–ค ์†์„ฑ(์ด ๊ฒฝ์šฐ์—๋Š” ํŠœ๋‹ ๋ฒกํ„ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ)๊ณผ ํ•ด๋‹น ์†์„ฑ์ด ๋ฉ”ํŠธ๋ฆญ ๊ฐ’์— ์–ผ๋งˆ๋‚˜ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด ์ •๋ณด๋ฅผ ํ†ตํ•ด ์ค‘์š”ํ•œ ์†์„ฑ์˜ ๋ณ€ํ™”๋กœ ์–ด๋–ค ์š”์ธ์ด ์˜ํ–ฅ์„ ๋ฐ›์•˜๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

๋‹ฌ๋ฆฌ๊ธฐ attribute-importance ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ชฉ์ ์„ ์œ„ํ•ด ๋‚˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค randomForest ๊ฐ™์€ ์ด๋ฆ„์˜ R ํŒจํ‚ค์ง€(๋ฌธ์„œ)
randomForest, ๋‚˜๋Š” ๊ทธ์˜ ์ผ๋ฐ˜์ ์ธ ์ž‘์—…๊ณผ ํŠนํžˆ ์†์„ฑ์˜ ์ค‘์š”์„ฑ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ทธ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋ฉด์„œ ์†์„ฑ์— ๋Œ€ํ•œ ์‘๋‹ต ๋ณ€์ˆ˜์˜ ์˜์กด์„ฑ์— ๋Œ€ํ•œ ํŠน์ • ๋ชจ๋ธ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์‘๋‹ต ๋ณ€์ˆ˜๋Š” ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์–ป์€ ์ธก์ •ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. tps;
์†์„ฑ์€ ํŠœ๋‹ ๋ฒกํ„ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ randomForest ๋‘ ๊ฐ€์ง€ ์ˆซ์ž๋กœ ๊ฐ ๋ชจ๋ธ ์†์„ฑ์˜ ์ค‘์š”์„ฑ์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. %IncMSE โ€” ๋ชจ๋ธ์—์„œ ์ด ์†์„ฑ์˜ ์กด์žฌ/๋ถ€์žฌ๊ฐ€ ์ด ๋ชจ๋ธ์˜ MSE ํ’ˆ์งˆ์„ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝํ•˜๋Š”์ง€(ํ‰๊ท  ์ œ๊ณฑ ์˜ค์ฐจ)

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

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋กœ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋…ธ๋™์ž-๋†๋ฏผ R ์ฝ”๋“œ:

x=NULL
v_data_file=paste('/tmp/data1.dat',sep="")
x=read.table(v_data_file, header = TRUE, sep = ";", dec=",", quote = ""'", stringsAsFactors=FALSE)
colnames(x)=c('metric','rgsize','rgcount','lamp','cmtl','cmtw','lgbffr','lct','dbwrp','undo_retention','tprs','disk_async_io','filesystemio_options','db_block_checking','db_block_checksum')

idxTrain=sample(nrow(x),as.integer(nrow(x)*0.7))
idxNotTrain=which(! 1:nrow(x) %in% idxTrain )
TrainDS=x[idxTrain,]
ValidateDS=x[idxNotTrain,]

library(randomForest)
#mtry=as.integer( sqrt(dim(x)[2]-1) )
rf=randomForest(metric ~ ., data=TrainDS, ntree=40, mtry=3, replace=T, nodesize=2, importance=T, do.trace=10, localImp=F)
ValidateDS$predicted=predict(rf, newdata=ValidateDS[,colnames(ValidateDS)!="metric"], type="response")
sum((ValidateDS$metric-ValidateDS$predicted)^2)
rf$importance

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

R ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค caret, ์š”์ ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ, ์ด ๊ฒฝ์šฐ ์†์„ฑ์˜ ์ค‘์š”๋„๋ฅผ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์–ป์–ด์กŒ๋‹ค.

๊ณผํ•™์ ์ธ ์ฐŒ๋ฅด๊ธฐ ๋ฐฉ๋ฒ• ๋˜๋Š” ๋ฒค์น˜๋งˆํฌ์™€ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•

์ž˜. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ „์—ญ ๋ฐ˜์˜์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ ์กฐ๊ฑด์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋งค๊ฐœ๋ณ€์ˆ˜์˜€์Šต๋‹ˆ๋‹ค. commit_wait
    ๊ธฐ์ˆ ์ ์œผ๋กœ ์ด๋Š” subdb ๋กœ๊ทธ ๋ฒ„ํผ์˜ ๋ฆฌ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜„์žฌ ๋กœ๊ทธ ๊ทธ๋ฃน์— ์“ฐ๊ธฐ ์œ„ํ•œ io ์ž‘์—…์˜ ์‹คํ–‰ ๋ชจ๋“œ(๋™๊ธฐ ๋˜๋Š” ๋น„๋™๊ธฐ)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    ๊ฐ€์น˜ nowait ์ด๋Š” tps ๋ฉ”ํŠธ๋ฆญ ๊ฐ’์ด ๊ฑฐ์˜ ์ˆ˜์ง์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์‹œ ์‹คํ–‰ ๊ทธ๋ฃน์— ๋น„๋™๊ธฐ io ๋ชจ๋“œ๋ฅผ ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ๋ณ„๋„์˜ ์งˆ๋ฌธ์€ ์‹ํ’ˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ด๊ฒƒ์ด ์ค‘์š”ํ•œ ์š”์†Œ๋ผ๋Š” ์ ๋งŒ ์–ธ๊ธ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  2. subd:์˜ ๋กœ๊ทธ ๋ฒ„ํผ ํฌ๊ธฐ๊ฐ€ ์ค‘์š”ํ•œ ์š”์†Œ์ธ ๊ฒƒ์€ ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.
    ๋กœ๊ทธ ๋ฒ„ํผ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์„์ˆ˜๋ก ๋ฒ„ํผ๋ง ์šฉ๋Ÿ‰์ด ์ž‘์•„์ง€๊ณ  ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋” ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉฐ/๋˜๋Š” ์ƒˆ๋กœ์šด ์‚ฐํ™”ํ™˜์› ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋ฅผ ์œ„ํ•ด ์—ฌ์œ  ๊ณต๊ฐ„์„ ํ• ๋‹นํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    ์ด๋Š” ๋กœ๊ทธ ๋ฒ„ํผ์˜ ๊ณต๊ฐ„ ํ• ๋‹น ๋ฐ/๋˜๋Š” ๋กœ๊ทธ ๋ฒ„ํผ์˜ ๋ฆฌ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌ๋‘ ๊ทธ๋ฃน์œผ๋กœ ๋คํ”„ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ์ง€์—ฐ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    ๋ฌผ๋ก  ์ด๋Ÿฌํ•œ ์ง€์—ฐ์€ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒ˜๋ฆฌ๋Ÿ‰์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
  3. ๋งค๊ฐœ ๋ณ€์ˆ˜ db_block_checksum: ๊ธ€์Ž„์š”, ์ผ๋ฐ˜์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋กœ ์ธํ•ด ํ•˜์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฒ„ํผ ์บ์‹œ์— ๋‹คํ‹ฐ ๋ธ”๋ก์ด ํ˜•์„ฑ๋œ๋‹ค๋Š” ์ ์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.
    ๋ฐ์ดํ„ฐ ๋ธ”๋ก์˜ ์ฒดํฌ์„ฌ ํ™•์ธ์ด ํ™œ์„ฑํ™”๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก ๋ณธ๋ฌธ์—์„œ ์ด๋Ÿฌํ•œ ์ฒดํฌ์„ฌ์„ ๊ณ„์‚ฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋ธ”๋ก ํ—ค๋”์— ๊ธฐ๋ก๋œ ๋‚ด์šฉ(์ผ์น˜/์ผ์น˜ํ•˜์ง€ ์•Š์Œ)์œผ๋กœ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ์—ญ์‹œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์—†์œผ๋ฉฐ ๋”ฐ๋ผ์„œ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ค‘์š”ํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
    ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ธ‰์—…์ฒด๋Š” ์ด ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋ฌธ์„œ์—์„œ ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ  ์˜ํ–ฅ์ด ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ "off" ๋ฐ "off"๊นŒ์ง€ ๋‹ค๋ฅธ ๊ฐ’์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์˜ํ–ฅ.

๊ธ€์Ž„์š”, ์„ธ๊ณ„์ ์ธ ๊ฒฐ๋ก ์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ฝค ํšจ๊ณผ์ ์ธ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Š” ํŠน์ • ์„œ๋น„์Šค ์‹œ์Šคํ…œ์˜ ๋กœ๋“œ ํ…Œ์ŠคํŠธ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๋กœ๋“œ์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ์„ค์ •์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋„ˆ๋ฌด ๋งŽ์ด ํƒ๊ตฌํ•˜์ง€ ์•Š๊ณ  ๋กœ๋“œ์— ๋Œ€ํ•œ ์ตœ์ ์˜ ๊ตฌ์„ฑ(์‹œ์Šคํ…œ)์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ์Šค์Šค๋กœ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ตœ์†Œํ•œ ์ดํ•ด ์ˆ˜์ค€์—์„œ๋Š” ์ด๋ฅผ ์™„์ „ํžˆ ๋ฐฐ์ œํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ "์กฐ์ • ์†์žก์ด"์™€ ์ด๋Ÿฌํ•œ ์†์žก์ด์˜ ํ—ˆ์šฉ ํšŒ์ „ ๋ฒ”์œ„์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด ์ตœ์ ์˜ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ง€ํ‘œ์™€ ์‹œ์Šคํ…œ ์„ค์ • ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ ๊ฐ„์˜ ๊ด€๊ณ„ ํŠน์„ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ด๋Š” ์ ์–ด๋„ ์ฃผ์–ด์ง„ ๋ถ€ํ•˜ ํ•˜์—์„œ ์‹œ์Šคํ…œ๊ณผ ์ž‘๋™์— ๋Œ€ํ•œ ๋งค์šฐ ๊นŠ์€ ์ดํ•ด์˜ ์ถœํ˜„์— ๊ธฐ์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ด๋Š” ๋งž์ถคํ˜• ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ์„ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ์œผ๋กœ ๊ตํ™˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ๋ณ„๋„๋กœ ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์—์„œ๋Š” ์ƒ์—…์  ์šด์˜์—์„œ ๊ฐ–๊ฒŒ ๋  ์šด์˜ ์กฐ๊ฑด์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ์˜ ์ ์ ˆ์„ฑ ์ •๋„๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ๊ด€์‹ฌ๊ณผ ์‹œ๊ฐ„์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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