๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (39)

โœ๐Ÿป๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ

[์„ฑ๋ŠฅํŠœ๋‹] ๋ฐ˜๋ณต์ ์ธ vault ์„œ๋ฒ„ ํ˜ธ์ถœ ์ œ๊ฑฐํ•˜๊ธฐ

์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์‹œ vuser ์ž„๊ณ„์น˜๋ฅผ ์„ค์ •ํ•˜๊ณ , Scouter๋ฅผ ํ†ตํ•œ ๋ณ‘๋ชฉ๊ตฌ๊ฐ„ ๋ถ„์„ํ•˜์—ฌ TPS๋ฅผ ๊ฐœ์„ ํ•œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. Scouter์˜ XLog ๋ถ„์„ํ•˜๊ธฐ Scouter์˜ xLog๋ฅผ ๋“œ๋ž˜๊ทธํ•˜๋ฉด ๊ฐ ์‘๋‹ต๋งˆ๋‹ค ์•„๋ž˜์™€ ๊ฐ™์€ ํ•ญ๋ชฉ๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Elasped Time CPU SQL Count SQL Time API Count API Time ์œ„์˜ ํ•ญ๋ชฉ ์ค‘ ์‘๋‹ต์†๋„ ๊ธฐ์ค€(Elasped Time)์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ฐ€ ์ œ์ผ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ ๊ตฌ๊ฐ„์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ˆˆ์— ๋„๋Š” ๊ตฌ๊ฐ„์€ ๋‘ ๊ตฌ๊ฐ„์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. (1) ๊ตฌ๊ฐ„ - Ngrinder์˜ RampUp ์„ค์ •์œผ๋กœ ์ธํ•œ ์ดˆ๊ธฐ ์‘๋‹ต์†๋„ ์ง€์—ฐ๊ตฌ๊ฐ„์œผ๋กœ ์ถ”์ธกํ–ˆ์Šต๋‹ˆ๋‹ค. (2) ๊ตฌ๊ฐ„ - API Time์ด ์˜ฌ๋ผ๊ฐ€์—ฌ ์ƒ์„ธ ํ˜ธ์ถœ ๋ฉ”์„œ๋“œ๋ฅผ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ngrinder ํ…Œ์ŠคํŠธ A..

Heeverse ์„ฑ๋Šฅํ…Œ์ŠคํŠธ ์ค€๋น„ํ•˜๊ธฐ

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

์ •๊ทœ ํ‘œํ˜„ ์‹ Pattern ๊ฐ์ฒด์˜ ์ƒ์„ฑ ๋น„์šฉ์„ ์ค„์ด์ž

๊ฐ์ฒด ์ƒ์„ฑ ๋น„์šฉ์ด ๋น„์‹ผ ๊ฐ์ฒด EffectiveJava item6 - ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ”ผํ•˜๋ผ ๋ผ๋Š” ๋‚ด์šฉ์„ ํšŒ์‚ฌ ์ฝ”๋“œ์— ์ ์šฉํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์—ฌ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ„ฐ๋”” ์ •๋ฆฌ ๋‚ด์šฉ https://github.com/WanOnPreStudy/EffectiveJavaStudy/blob/main/Chapter2/item_6_%EA%B9%80%EC%A0%95%ED%9D%AC.md ์ฑ…์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด ์ƒ์„ฑ ๋น„์šฉ์ด ๋น„์‹ผ ๊ฐ์ฒด๋Š” ๋ฐ˜๋ณตํ•ด์„œ ์ƒ์„ฑํ•˜๊ธฐ๋ณด๋‹ค, ์บ์‹ฑํ•˜์—ฌ๊ฐ์ฒด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ฐ์ฒด ์ƒ์„ฑ ๋น„์šฉ์ด ๋น„์‹ผ ๊ฐ์ฒด = cpu ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ๅคš ์ •๊ทœํ‘œํ˜„์‹์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ์ƒ์„ฑ ๋น„์šฉ์ด ๋น„์‹ธ๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹์„ ํ†ตํ•ด ๋ฌธ์ž์—ด์„ ๊ฒ€์‚ฌํ•  ๋•Œ ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ๋ฅผ ๋“ค์—ฌ๋‹ค๋ณด๋ฉด ์ •๊ทœํ‘œํ˜„์‹์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„ ๋‚ด๋ถ€์ ์œผ..

Language/Java 2023. 2. 19. 01:15
B-Tree

B-Tree(B(Balanced)-Tree)๋ž€? Database์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๊ตฌ์กฐ ๋ฐ ํŠน์„ฑ RDBMS์—์„œ btree์˜ ๋ณ€ํ˜•์ธ B+Tree, B*-Tree ์œ ํ˜•๋„ ์‚ฌ์šฉ ์ธ๋ฑ์Šค๋Š” ํ…Œ์ด๋ธ”์˜ ํ‚ค ์นผ๋Ÿผ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํ‚ค์นผ๋Ÿผ์„ ์ฝ์–ด ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ณณ์— ๊ฐ€์„œ ์กฐํšŒํ•ด์•ผ ํ•œ๋‹ค. ์ตœ์ƒ์œ„ Root Node ์ค‘๊ฐ„ Branch Node ํ•˜๋‹จ(์‹ค์ œ ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ์„ ์ฐพ์•„๊ฐ€๋Š” ์ฃผ์†Ÿ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ) Leaf Node B-Tree ์ธ๋ฑ์Šค ํ‚ค ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์ธ๋ฑ์Šค ํ‚ค ์ถ”๊ฐ€, ์‚ญ์ œ, ๋ณ€๊ฒฝ ๋“ฑ์€ MySQL v5.5 ์ดํ›„ (InnoDB์—”์ง„) ์ฒด์ธ์ง€ ๋ฒ„ํผ๋ฅผ ํ†ตํ•ด ์ง€์—ฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ์ธ๋ฑ์Šค ํ‚ค ์ถ”๊ฐ€ ์ €์žฅ๋  ํ‚ค ๊ฐ’์„ ์ด์šฉํ•ด B-Tree๋‚ด๋ถ€์˜ ์ ์ ˆํ•œ ์œ„์น˜ ๊ฒ€์ƒ‰ ์ €์žฅ๋  ์œ„์น˜๊ฐ€ ์ •ํ•ด์ง€๋ฉด ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋‹ด๋Š” leaf Node์— ์ €..

DB/RDBMS 2023. 1. 29. 17:03
Transaction Isolation ๋ ˆ๋ฒจ

ํŠธ๋žœ์žญ์…˜ Isolation์„ค๋ช…์— ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ์šฉ์–ด๋ฅผ ๋จผ์ € ์ •๋ฆฌํ•˜์ž. Transaction ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ db read, write์ž‘์—…์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ฌถ๋Š” ๋ฐฉ์‹ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์€ ์ž‘์—…์ด ์„ฑ๊ณตํ•˜๋ฉด commit, ์‹คํŒจ ์‹œ rollback์„ ํ•˜๋ฏ€๋กœ ๋ถ€๋ถ„์„ฑ๊ณต, ๋ถ€๋ถ„ ์‹คํŒจ(Partial Update)์˜ ์œ„ํ—˜์ด ์—†์Œ Lock ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ ์—ฌ๋Ÿฌ ์ปค๋„ฅ์…˜์—์„œ ๋™์‹œ์— ๋™์ผํ•œ ์ž์›์„ ์š”์ฒญํ•  ๊ฒฝ์šฐ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์˜ ์ปค๋„ฅ์…˜๋งŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์—ญํ•  Isolation level ๋™์‹œ์— ํ•˜๋‚˜ ๋˜๋Š” ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์ง„ํ–‰ ๋ ๋•Œ, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ธฐ์ค€ ์ผ๋ฐ˜์ ์ธ ์„œ๋น„์Šค์—์„œ๋Š” Read Commited, Repeatable Read๋ฅผ ์‚ฌ์šฉ Transaction Isolation..

DB/RDBMS 2023. 1. 9. 19:41
Mysql - InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์ž ๊ธˆ

1. InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ์ž ๊ธˆ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์ธ๋ฑ์Šค๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž ๊ทผ๋‹ค. ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„์˜ ์ž ๊ธˆ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ ˆ์ฝ”๋“œ์™€ ๋ ˆ์ฝ”๋“œ ์‚ฌ์ด์— ๊ฐญ์„ ์ž ๊ทธ๋Š” ๋ฝ์ด ์กด์žฌ ๋ ˆ์ฝ”๋“œ๋ฝ InnoDB์—”์ง„์€ ์ธ๋ฑ์Šค์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž ๊ทธ๋ฉฐ, ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์•„๋„ InnoDB์—”์ง„์—์„œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ ˆ์ฝ”๋“œ ๋ฝ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ฐญ๋ฝ ๋ ˆ์ฝ”๋“œ์™€ ๋‹ค๋ฅธ ์ธ์ ‘ํ•œ ๋ ˆ์ฝ”๋“œ ์‚ฌ์ด๋ฅผ ์ž ๊ทธ๋ฏ€๋กœ ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ insert ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค. ๋„ฅ์ŠคํŠธ ํ‚ค ๋ฝ ๋ ˆ์ฝ”๋“œ ๋ฝ + ๊ฐญ ๋ฝ ์ž๋™ ์ฆ๊ฐ€ ๋ฝ(Auto Increment Lock) Auto Increment ์ปฌ๋Ÿผ์— ๋™์‹œ์— ์—ฌ๋Ÿฌ ์นผ๋Ÿผ์— insert ์‹œ ํ…Œ์ด๋ธ” ์ˆ˜์ค€์œผ๋กœ lock์ด ์žกํžŒ๋‹ค. insert์‹œ์—๋งŒ auto increment ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ update, d..

DB/RDBMS 2022. 12. 31. 21:43