๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒป์Šคํ„ฐ๋”” ๊ด€๋ฆฌ/๐Ÿ™‰์„œ๋ฒ„ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์ฑŒ๋ฆฐ์ง€

[ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์ฑŒ๋ฆฐ์ง€ ] 23.03.11

by MuGeon Kim 2023. 3. 11.
๋ฐ˜์‘ํ˜•

https://github.com/mooh2jj/side-project-challenge-study/tree/main/%EA%B9%80%EB%AC%B4%EA%B1%B4/week1

 

GitHub - mooh2jj/side-project-challenge-study: ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์ฑŒ๋ฆฐ์ง€ ์Šคํ„ฐ๋””์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์ฑŒ๋ฆฐ์ง€ ์Šคํ„ฐ๋””์ž…๋‹ˆ๋‹ค. Contribute to mooh2jj/side-project-challenge-study development by creating an account on GitHub.

github.com

1) git-flow ๋ž€ ๋ฌด์—‡์ธ์ง€ ์ •๋ฆฌ
2) git ๋Œ€ํ‘œ์  ๋ช…๋ น์–ด ์ •๋ฆฌ

3) MySQL์—์„œ DB ํ…Œ์ด๋ธ” ์„ค๊ณ„์‹œ ์ค‘์š” ์š”์†Œ ๊ฐ ์ •๋ฆฌ

์ฑŒ๋ฆฐ์ง€) ๊ฐ ๊ฐœ๋ณ„๋กœ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. 

1. Git - flow๋ž€ ๋ฌด์—‡์ธ์ง€ ์ •๋ฆฌ

- ํ˜‘์—…์—๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€ ๊ตฌ์„ฑ์ด ์žˆ๋‹ค.
1. Fork ์™€ Pull Request ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
2. Organization ๊ณผ branch ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
3. Organization ๊ณผ ๋‹จ์ผ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

1๋ฒˆ ๋ฐฉ๋ฒ•์€ ๋‹ค์ˆ˜์˜ repo๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
2๋ฒˆ ๋ฐฉ์‹์€ master๋ธŒ๋žœ์น˜๊ฐ€ ํ•ญ์ƒ ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถฐ์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.
3๋ฒˆ ๋ฐฉ์‹์€ ๋™์ผํ•œ repo๋ฅผ ์ž‘์—…์„ ํ•˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ์˜ฌ๋ฆฐ ์ปค๋ฐ‹์„ ๋กœ์ปฌ์— ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
์ด ๊ฒฝ์šฐ์— pull์„ ํ•˜๋ฉด ๋จธ์ง€ ์ปค๋ฐ‹์ด ์ƒ์„ฑ๋˜์–ด git log์˜ ์ง€์˜ฅ์ด ์‹œ์ž‘์ด ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณดํ†ต์€ rebase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

- Git Flow๋Š” 5๊ฐ€์ง€์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋ฌด์กฐ๊ฑด ์‚ฌ์šฉx
- ๊ฐ ํ”„๋กœ์ ํŠธ ๋ฐ ์กฐ์ง์— ์ ํ•ฉํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ์„œ O

 

2. Git ๋ช…๋ น์–ด ์ •๋ฆฌ

git init: Git ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
git clone: ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค.
git add: ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง€์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
git commit: ์Šคํ…Œ์ด์ง€์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
git push: ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
git pull: ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
git status: ํ˜„์žฌ ์ €์žฅ์†Œ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
git log: ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
git branch: ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
git checkout: ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ปค๋ฐ‹์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

 

3. MySQL์—์„œ DB ํ…Œ์ด๋ธ” ์„ค๊ณ„ ์ค‘์š” ์š”์†Œ ์ •๋ฆฌ

1. ๋ฐ์ดํ„ฐ ํƒ€์ž… : MySQL์€ ๋งŽ์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๋•Œ ํ•„๋“œ์— ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์„ ํƒ -> ์ •ํ™•์„ฑ ์„ฑ๋Šฅ ํ–ฅ์ƒ

2. ์ธ๋ฑ์Šค :  ์ธ๋ฑ์Šค๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ค‘์š”ํ•œ ์š”์†Œ
   https://pos04167.tistory.com/118

3. ์ •๊ทœํ™”
- ์ •๊ทœํ™” : ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ๋ฐ์ดํ„ฐ์™€ ์ด์ƒ ํ˜„์ƒ์„ ์ œ๊ฑฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ , ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ชฉํ‘œ

1์ฐจ ์ •๊ทœํ˜•(1NF): ๋ชจ๋“  ํ•„๋“œ๊ฐ€ ์›์ž ๊ฐ’(Atomic Value)์„ ๊ฐ€์ง€๋ฉฐ, ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
2์ฐจ ์ •๊ทœํ˜•(2NF): 1์ฐจ ์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ํ•„๋“œ๊ฐ€ ๊ธฐ๋ณธ ํ‚ค์— ๋Œ€ํ•ด ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†( Fully functional dependency)์„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
3์ฐจ ์ •๊ทœํ™”(3nf) : ๋น„์ฃผ์š” ์—ด ๊ฐ„์— ์˜์กด์„ฑ์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

4. ์ œ์•ฝ ์กฐ๊ฑด : ์ œ์•ฝ ์กฐ๊ฑด์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค. ->pk , fk , not null ...

5. ์‹๋ณ„ ๋น„์‹๋ณ„ ๊ด€๊ณ„๋ฅผ ์ƒ๊ฐ
- ์‹๋ณ„ : ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ PK๊ฐ€ ์ž์‹ ํ…Œ์ด๋ธ”์˜ FK๋กœ ์‚ฌ์šฉ - ๋ณดํ†ต  1:1/1:N
  - ์ด๊ฑธ ๋ณด๋ฉด ์ž์‹ ํ…Œ์ด๋ธ”์—๋Š” ๋ถ€๋ชจ PK๊ฐ€ ๋ณตํ•ฉํ‚ค๋กœ ์‚ฌ์šฉ์ด ๋œ๋‹ค.
  - ๊ทธ๋Ÿฌ๋ฉด ์ด๋Ÿฐ ์ƒ๊ฐ์ด ์ƒ๊ธด๋‹ค? ๋ณตํ•ฉํ‚ค๋Š” ์ธ๋ฑ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ํƒ€์ง€??
    - ์ด๋•Œ ๋ณตํ•ฉํ‚ค๋Š” ์ธ๋ฑ์Šค๋ฅผ ํƒ€๋Š” ๋ฐฉ์‹์€ ๋‹จ์ผ ์—ด ๊ธฐ๋ณธ ํ‚ค์™€ ์œ ์‚ฌํ•œ๋ฐ ๊ฐ ์—ด์˜ ๊ฐ’์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.
    

- ๋น„์‹๋ณ„ : ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ PK๊ฐ€ ์ž์‹ ํ…Œ์ด๋ธ”์˜ ์ผ๋ฐ˜ ์—ด๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ : N:M

 

4. ๊ฐœ์ธ ๊ณผ์ œ (MySQL์—์„œ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์„ค์ • / ์ธ๋ฑ์Šค์—์„œ ์ž๋ฃŒ ๊ตฌ์กฐ ๊ด€์ ์—์„œ ์žฅ๋‹จ์  ์กฐ์‚ฌ)

1. ๋ฒ„ํผ ํ’€ ํฌ๊ธฐ ์„ค์ • : innodb_buffer_pool_size
๋ฒ„ํผ ํ’€ ํฌ๊ธฐ๋Š” MySQL์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹ฑํ•˜๋Š” ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. 
์ด ๊ฐ’์„ ์ ์ ˆํžˆ ์„ค์ •ํ•˜๋ฉด ๋””์Šคํฌ I/O๋ฅผ ์ค„์ด๊ณ  ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋ฒ„ํผ ํ’€์€ DBMS๊ฐ€ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋Š” ๋ฒ„ํผ ํ’€์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ดํ›„, ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์‹œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๋””์Šคํฌ์—์„œ ์ฝ์–ด์˜ค์ง€ ์•Š๊ณ  ๋ฒ„ํผ ํ’€์—์„œ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

- ์˜ˆ๋ฅผ ๋“ค์–ด SELECT ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰์„ ํ•˜๊ฒŒ ๋˜๋ฉด
   1. ์ฟผ๋ฆฌ ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ํ•ด์‹œ ๊ฐ’์„ ์ƒ์„ฑ
   2. ํ‚ค์— ํ•ด์‹œ ๊ฐ’ / ๊ฐ’์— ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.
   3. ์บ์‹œ์—์„œ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค.


2. ์ฟผ๋ฆฌ ์บ์‹œ ํฌ๊ธฐ ์„ค์ • : query_cache_size
์ฟผ๋ฆฌ ์บ์‹œ ํฌ๊ธฐ๋Š” ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹ฑํ•˜๋Š” ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. 
์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹ฑํ•˜๋ฉด ๋™์ผํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. 
ํ•˜์ง€๋งŒ ์ฟผ๋ฆฌ ์บ์‹œ ํฌ๊ธฐ๋ฅผ ๋„ˆ๋ฌด ํฌ๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ ์ ˆํ•œ ๊ฐ’์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3. ๋กœ๊ทธ ๋ ˆ๋ฒจ ์„ค์ • : log_error_verbosity
๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ๋†’์—ฌ์„œ ๋””๋ฒ„๊น…์„ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ๋†’์ด๋ฉด MySQL์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜ ๋ฐ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๋” ์ž์„ธํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ์ธ๋ฑ์Šค ์„ค์ • : index_merge
์ธ๋ฑ์Šค ์„ค์ •์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. 
MySQL์—์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ index_merge ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋”์šฑ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- index_merge ์˜ต์…˜??
์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ๋ฑ์Šค๋ฅผ ์กฐํ•ฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

```sql
SELECT * FROM table_name
WHERE column1 = 'value1'
AND column2 = 'value2'
```
์œ„์— ์ฟผ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋งŒ์•ฝ์— ๊ฐ๊ฐ์˜ ์กฐ๊ฑด์— ์ธ๋ฑ์Šค 1,2๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด index_merge ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ
๊ฐ๊ฐ์˜ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

5. ์“ฐ๊ธฐ ์ž‘์—…์˜ ์ง€์—ฐ ์„ค์ • : innodb_flush_log_at_trx_commit
   1. ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹ ์‹œ ๋””์Šคํฌ์— ์ €์žฅ x , ๋ฒ„ํผ ํ’€์— ๋ฐ์ดํ„ฐ ์œ ์ง€ -> ๊ฐ€์žฅ ๋น ๋ฅด์ง€๋งŒ ์‹œ์Šคํ…œ์ด ๊บผ์ง€๋ฉด ๋ฒ„ํผ ํ’€์ด ๋‚ ๋ผ๊ฐ€์„œ ์œ„ํ—˜
   2. ์ปค๋ฐ‹ ์‹œ๋งˆ๋‹ค ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ ์ €์žฅ : ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ด ์ข‹๋‹ค. ํ•˜์ง€๋งŒ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.
   3. ์ปค๋ฐ‹ ์‹œ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ ๊ธฐ๋ก x , ๋ฒ„ํผ ํ’€์— ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜์ง€๋งŒ 1์ดˆ๋งˆ๋‹ค ๋””์Šคํฌ์— ๊ธฐ๋ก : ์ผ๊ด€์„ฑ , ์„ฑ๋Šฅ์„ ๋‹ค ๊ณ ๋ ค

- ๊ธฐ๋ณธ์ ์œผ๋กœ 2 ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. 0,2๋ฅผ ์„ค์ •ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

# ์ž๋ฃŒ๊ตฌ์กฐ ๊ด€์ ์—์„œ ์•Œ์•„๋ณด์ž
1. MySQL์€ ๊ธฐ๋ณธ์ ์œผ๋กœ B-Tree๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๊ตฌ์กฐ๋Š” ์ด์ง„ํŠธ๋ฆฌ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋‹ค๋ฅด๋‹ค.
์—ฌ๊ธฐ์„œ B๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์•„๋‹Œ Balance๋ฅผ ์˜๋ฏธ 

- B-Tree๋ž€
๋ฐ”์ด๋„ˆ๋ฆฌ ์„œ์น˜ ํŠธ๋ฆฌ์—์„œ ๋ฐœ์ „๋˜์–ด ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ๋“ค์ด ๊ฐ™์€ ๋ ˆ๋ฒจ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ž๋™์œผ๋กœ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ํŠธ๋ฆฌ
์ด์ง„ํŠธ๋ฆฌ์™€ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋‚˜์˜ ๋…ธ๋“œ์— ๋งŽ์€ ํŠธ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํƒ์ƒ‰์˜ ๊ณผ์ •์„ ์‚ดํŽด๋ณด๋ฉด
1. ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘์œผ๋กœ ํ•˜์–‘์‹์œผ๋กœ key ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ ํ•œ๋‹ค.
   - ๋งŒ์•ฝ์— k์™€ ๊ฐ™์€ ํ‚ค๋ฅผ ์ฐพ์œผ๋ฉด ํƒ์ƒ‰ ์ข…๋ฃŒ
   - ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฐ’๋“ค๊ณผ key๋“ค์˜ ๋Œ€์†Œ๊ด€๊ณ„๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ์–ด๋– ํ•œ key ์‚ฌ์ด์— k๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ž์‹ ๋…ธ๋“œ๋กœ ์ง„ํ–‰

2. ํ•ด๋‹น ๊ณผ์ •์€ ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
3. ๋งŒ์•ฝ์— ๋ฆฌํ”„ ๋…ธ๋“œ์— k๊ฐ€ ์—†์œผ๋ฉด ๊ฒ€์ƒ‰ ์‹คํŒจ

### ๋ถ„ํ• ๊ณผ ๋ณ‘ํ•ฉ
- ๋ถ„ํ• ์€ ๋ฆฌํ”„ ๋…ธ๋“œ์— ์‚ฝ์ž…์„ ํ•˜์˜€์„ ๋•Œ ์ƒˆ๋กœ์šด ํ‚ค ๊ฐ’์ด ํ•ด๋‹น ๋ฆฌํ”„ ๋…ธ๋“œ์— ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด ์‚ฝ์ž… ์—ฐ์‚ฐ์ด ์‹คํŒจํ•œ๋‹ค.
- ์ด๋•Œ b-tree๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ‚ค ๊ฐ’์„ ์ €์žฅํ•  ๊ณต๊ฐ„์„ ํ™•๋ณด
- ๋…ธ๋“œ๊ฐ€ ์›€์ง์ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑ

- ๋ณ‘ํ•ฉ์€ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ ํ‚ค ๊ฐ’์ด ์ €์žฅ๋œ ๋…ธ๋“œ๊ฐ€ ๋ฆฌํ”„ ๋…ธ๋“œ์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ณ 
- ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค. ์ด ๋•Œ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ํ•ฉ์ณ์„œ ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋กœ ๋งŒ๋“ ๋‹ค.

 

๋ฐ˜์‘ํ˜•