DB

DB

[DB] DB μΈλ±μŠ€λž€?

🫧 DB μΈλ±μŠ€λž€? λ°μ΄ν„°λ² μ΄μŠ€μ˜ 검색 속도λ₯Ό ν–₯μƒμ‹œν‚€κΈ° μœ„ν•œ 자료ꡬ쑰λ₯Ό λ§ν•œλ‹€. → μ±…μ—μ„œ λͺ©μ°¨λ₯Ό 보면 νŽ˜μ΄μ§€ 번호만으둜 μ›ν•˜λŠ” λ‚΄μš©μ˜ 뢀뢄을 ν•œ λ²ˆμ— 찾을 수 μžˆλŠ” κ²ƒμ²˜λŸΌ 검색을 λΉ λ₯΄κ³  μ‰½κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” μ˜λ―Έμ΄λ‹€ πŸ“ƒ Full Table Scan full table scanμ΄λž€ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‘°νšŒν•  λ•Œ where문을 μ΄μš©ν•΄μ„œ ν…Œμ΄λΈ”μ˜ 전체λ₯Ό 쑰건과 λΉ„κ΅ν•΄μ•Όλ˜λŠ” μž‘μ—…μ΄λ‹€. κ·Έλž˜μ„œ ꡉμž₯히 번거둭고 μ‹œκ°„μ΄ 였래걸림! βš™οΈ B-Tree B-TreeλŠ” Balanced Tree의 μ€„μž„λ§μ΄λ‹€. MySQL의 DB 엔진인 InnoDBλŠ” B+Tree둜 μ΄λ£¨μ–΄μ ΈμžˆμœΌλ©° 이것은 B-Tree의 ν™•μž₯된 κ°œλ…μ΄λ‹€. B-Tree B-TreeλŠ” 데이터가 μ •λ ¬λœ μƒνƒœλ‘œ μœ μ§€λ˜μ–΄ μžˆλ‹€λŠ” 것이 핡심이닀. μ°¨λ‘€λŒ€λ‘œ λ£¨νŠΈλ…Έλ“œ, 브랜치 λ…Έλ“œ, 리..

DB

[DB] κ΅μ°©μƒνƒœ(Dead Lock)λž€?

DB ꡐ착 μƒνƒœ(Dead Lock) λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ ꡐ착 μƒνƒœλŠ” μ—¬λŸ¬ 개의 νŠΈλžœμž­μ…˜λ“€μ΄ μ‹€ν–‰ν•˜μ§€ λͺ»ν•˜κ³  μ„œλ‘œ λ¬΄ν•œμ • κΈ°λ‹€λ¦¬λŠ” μƒνƒœλ₯Ό λ§ν•œλ‹€. 즉, 두 개 μ΄μƒμ˜ νŠΈλžœμž­μ…˜μ΄ νŠΉμ • μžμ›μ˜ lock을 νšλ“ν•œ 채 λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ΄ μ†Œμœ ν•˜κ³  μžˆλŠ” μž κΈˆμ„ μš”κ΅¬ν•˜λ©΄ 아무리 기닀렀도 상황이 λ°”λ€Œμ§€ μ•Šμ€ μƒνƒœμ΄λ‹€. βž• μš΄μ˜μ²΄μ œμ—μ„œμ˜ ꡐ착 μƒνƒœλŠ” 각각의 ν”„λ‘œμ„ΈμŠ€κ°€ μ„œλ‘œμ˜ μžμ›μ„ μ μœ ν•˜κΈ° μœ„ν•΄ λŒ€κΈ°ν•˜λ©΄μ„œ μƒκΈ°λŠ” 문제λ₯Ό λ§ν•œλ‹€. β–ͺ️ κ΅μ°©μƒνƒœκ°€ μΌμ–΄λ‚˜λŠ” 상황 νŠΈλžœμž­μ…˜ 1이 ν…Œμ΄λΈ” B에 insertλ₯Ό ν•˜κ³ , νŠΈλžœμž­μ…˜ 2κ°€ ν…Œμ΄λΈ” A에 insertλ₯Ό ν•˜κ³  λ‚˜μ„œ μ„œλ‘œκ°€ lock을 κ±Έμ—ˆλ˜ 행에 insert μž‘μ—…μ„ μ‹œλ„ν•œλ‹€λ©΄ 두 개의 νŠΈλžœμž­μ…˜ λͺ¨λ‘ waiting이 λ°œμƒν•˜κ³  κ΅μ°©μƒνƒœ(Dead Lock)에 λΉ μ§€κ²Œ λœλ‹€. κ΅μ°©μƒνƒœ 해결방법 ..

DB

DB μ •κ·œν™”λž€?

πŸ”Έμ •κ·œν™”λž€? μ΄μƒν˜„μƒμ΄ μžˆλŠ” λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•΄ν•˜μ—¬ μ΄μƒν˜„μƒμ„ μ—†μ• λŠ” κ³Όμ • μ΄μƒν˜„μƒμ΄ μ‘΄μž¬ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•˜μ—¬ μ—¬λŸ¬ 개의 λ¦΄λ ˆμ΄μ…˜μ„ μƒμ„±ν•˜κ²Œ λœλ‹€. 이λ₯Ό λ‹¨κ³„λ³„λ‘œ κ΅¬λΆ„ν•˜μ—¬ μ •κ·œν˜•μ΄ λ†’μ•„μ§ˆ 수둝 μ΄μƒν˜„μƒμ΄ μ€„μ–΄λ“€κ²Œ λœλ‹€. 🫧 제1 μ •κ·œν˜• (1NF) 각 컬럼이 ν•˜λ‚˜μ˜ μ†μ„±λ§Œ κ°€μ Έμ•Ό ν•œλ‹€. ν•˜λ‚˜μ˜ μ»¬λŸΌμ€ 같은 μ’…λ₯˜λ‚˜ νƒ€μž…μ˜ 값을 κ°€μ Έμ•Ό ν•œλ‹€. 각 컬럼이 μœ μΌν•œ 이름을 κ°€μ Έμ•Όν•œλ‹€. 칼럼의 μˆœμ„œκ°€ 상관없어야 ν•œλ‹€. 학생 번호 이름 κ³Όλͺ© 101 μ•„μ΄μœ  운영체제, DB 102 ν•œνš¨μ£Ό μžλ°” ν•΄λ‹Ή ν…Œμ΄λΈ”μ€ κ³Όλͺ©μ—μ„œ ν•˜λ‚˜λ§Œμ˜ 속성을 가지고 μžˆμ§€ μ•ŠμŒ!! ν•΄κ²° ν•™μƒλ²ˆν˜Έ 이름 κ³Όλͺ© 101 μ•„μ΄μœ  운영체제 101 μ•„μ΄μœ  DB 102 ν•œνš¨μ£Ό μžλ°” μΉ΅ 칼럼이 μ›μž 값을 갖도둝 ν•˜λ©΄ 제1 μ •κ·œν˜•μ„ λ§Œμ‘±ν•  수 있음 🫧 제2 μ •κ·œν˜• ..

DB

[DB] Transaction(νŠΈλžœμž­μ…˜)μ΄λž€?

πŸ” νŠΈλžœμž­μ…˜μ΄λž€? νŠΈλžœμž­μ…˜μ€ ACID(μ›μžμ„±, 일관성, 격리 및 지속성) 속성이 μžˆλŠ” μž‘μ—… 그룹이닀. 즉, ν•΄λ‹Ή 속성을 가지며 λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚€κΈ° μœ„ν•΄μ„œ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ˜ λ‹¨μœ„λ₯Ό λ§ν•œλ‹€. 보톡 μ•„λž˜μ˜ μ§ˆμ˜μ–΄λ₯Ό ν†΅ν•΄μ„œ μž‘μ—…μ΄ 이루어지며 ACID κ·œμΉ™μ„ μ§€ν‚€κ²Œ λœλ‹€. SELECT INSERT DELETE UPDATE 🎑 νŠΈλžœμž­μ…˜ νŠΉμ§• μ›μžμ„± (Atomicity) μ›μžμ„±μ€ νŠΈλžœμž­μ…˜μ΄ λ°μ΄ν„°λ² μ΄μŠ€μ— λͺ¨λ‘ λ°˜μ˜λ˜λ˜κ°€, μ•„λ‹ˆλ©΄ μ „ν˜€ λ°˜μ˜λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€λŠ” 것이닀. 은행 μ†‘κΈˆμ„ 예둜 λ“€μ–΄λ³΄μž. 은행 μ†‘κΈˆμ€ ν•œ κ³„μ’Œμ™€ λ‹€λ₯Έ κ³„μ’Œμ— λŒ€ν•œ 행동이 μ›μžμ„±μ˜ 집합이닀. Aκ³„μ’Œμ—μ„œ Bκ³„μ’Œλ‘œ λˆμ„ μ΄μ²΄ν–ˆλŠ”λ° 쀑간에 였λ₯˜κ°€ λ‚˜μ„œ Aκ³„μ’Œμ—λŠ” 돈이 λΉ μ Έλ‚˜κ°”μ§€λ§Œ Bκ³„μ’Œμ—λŠ” 돈이 λ“€μ–΄μ˜€μ§€ μ•Šμ„ μˆ˜κ°€ μžˆλ‹€. 이런 문제λ₯Ό λ°©μ§€ν•˜μ§€..

DB

ν…Œμ΄λΈ” 이름은 λ‹¨μˆ˜ν˜•μœΌλ‘œ ν•΄μ•Όλ κΉŒ λ³΅μˆ˜ν˜•μœΌλ‘œ ν•΄μ•Όλ κΉŒ? πŸ€”

κ°•μ˜λ₯Ό λ“£λ‹€κ°€ ν…Œμ΄λΈ” 이름을 μ •ν•˜λŠ”κ±°μ— μžˆμ–΄μ„œ λ‹¨μˆ˜ν˜•μ΄ 쒋을지 λ³΅μˆ˜ν˜•μ΄ 쒋을지에 λŒ€ν•΄μ„œ μ°Ύμ•„λ³΄μ•˜λ‹€. 🧢 λ‹¨μˆ˜ν˜•μœΌλ‘œ μ§“λŠ” 경우 μ‰½κ²Œ 보이기 λ•Œλ¬Έμ— μ‚¬λžŒλ“€μ΄ λ”°λ₯΄κΈ°κ°€ 맀우 쉽닀. λ§Œμ•½ 볡수둜 μ§“λŠ” κ²½μš°μ— child-children, octopus-octopi처럼 λ³΅μˆ˜ν˜•μ„ κΈ°μ–΅ν•˜λŠ” 것이 μ–΄λ €μšΈ μˆ˜λ„ μžˆλ‹€. κ·Έλž˜μ„œ λ‹¨μˆ˜λ‘œ μ‚¬μš©ν•  κ²½μš°μ— μ‹œκ°„ μ ˆμ•½μ΄ λœλ‹€ κ°œλ°œμžκ°€ μ μ ˆν•œ λ³΅μˆ˜ν˜•μ— λŒ€ν•΄μ„œ κ³ λ―Όν•˜μ§€ μ•Šμ•„λ„ λœλ‹€. λ³΅μˆ˜ν˜•μ„ μ“°λŠ” 것보닀 μ˜€νƒ€κ°€ μ€„μ–΄λ“€μ–΄μ„œ 전체적인 였λ₯˜λ„ 쀄어듀 수 μžˆλ‹€. 🧡 λ³΅μˆ˜ν˜•μœΌλ‘œ μ§“λŠ” 경우 λ³΅μˆ˜ν˜• 이름이 μ½”λ“œ μ €μž₯μ†Œ, λ°μ΄ν„°λ² μ΄μŠ€ μ•„ν‚€ν…μ²˜, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°„ μ•„ν‚€ν…μ²˜ 간에 톡일성을 μ œκ³΅ν•œλ‹€. λ§Œμ•½μ— userλΌλŠ” ν…Œμ΄λΈ”μ΄ 있으면 이건 users의 그룹이 μ•„λ‹Œ user의 그룹이라고 착각할 μˆ˜λ„ 있기 λ•Œ..

DAHLIA CHOI
'DB' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘