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

๋ชฉ๋กDB/RDBMS (5)

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

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
Transaction & Lock

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

DB/RDBMS 2022. 12. 24. 23:26
MySQL - InnoDB & MyISAM ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์•„ํ‚คํ…์ฒ˜

MySQL 5.5์ดํ›„๋ถ€ํ„ฐ InnoDB์—”์ง„์ด ๊ธฐ๋ณธ์—”์ง„์œผ๋กœ ์ฑ„ํƒ MySQL 5.5๊นŒ์ง€ MySQL ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ”์€ MyISAM MySQL 8.0์ดํ›„๋ถ€ํ„ฐ๋Š” ๋ชจ๋‘ InnoDB ์—”์ง„ ์‚ฌ์šฉ, MyISAM์—์„œ๋งŒ ์ œ๊ณตํ•˜๋˜ ์ „๋ฌธ๊ฒ€์ƒ‰, ์ขŒํ‘œ๊ฒ€์ƒ‰๋„ InnoDB์—์„œ ์ œ๊ณต InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์•„ํ‚คํ…์ฒ˜ ๋ ˆ์ฝ”๋“œ๋ฅผ PK ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ ์ €์žฅ PK๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ ˆ์ฝ”๋“œ ์ ‘๊ทผ ๊ฐ€๋Šฅ PK์ธ๋ฑ์Šค ์ž๋™ ์ƒ์„ฑ PK๋ฅผ ํ†ตํ•œ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์ด ๋น ๋ฆ„ InnoDB๋Š” PK๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ PK๋ฅผ ์ž๋™ ์ƒ์„ฑํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋‹จ, ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ PK๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€ MVCC(Multi Version Concurrency Control) Undo์˜์—ญ์„ ์ด์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ ๋ฒ„์ „์ด ๊ด€๋ฆฌ๋จ ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„์˜ ํŠธ๋žœ์žญ..

DB/RDBMS 2022. 12. 5. 21:32