Hong
@jhong
Students
7,768
Reviews
488
Course Rating
4.7
์๊ธฐ ์๊ฐ
์ง์์ ๋น๋ฅ๋๋ค ๊ฐ๋ฐ์ ํฅ๋ฏธ๋ฅผ ๋๊ปด ๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ์์ํ์๊ณ ํ์ฌ๋ ํ๊ต์์ ํ๋ซํผ ์๋ฒ ๊ฐ๋ฐ์ ๋ด๋นํ์ฌ ์งํํ๊ณ ์์ต๋๋ค. ์ ๊ฐ ๊ณต๋ถ๋ฅผ ํ๋ ๋ฐฉ๋ฒ๊ณผ ์ค๋ฌด์์ ์ ํ์ค ์ ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ์ ๋ค๊ณผ ํด๊ฒฐ์ฑ ์ ์ฌ๋ฌ๋ถ๋ค์๊ฒ ์ ๊ณตํ๊ณ ์ถ์ด ์ง์๊ณต์ ์ ํ๋์ ์ด์ด๋๊ฐ๊ณ ์์ต๋๋ค.
๊ฐ์๋ ์ค๋ก์ง ์ ๋ง์ ์ง์์ ํตํด ๋ง๋ค์ด์ง์ง ์์ต๋๋ค. ๋ชจ๋ ๊ฐ์๋ ํจ๊ปํ์๋ ๋ถ๋ค์ด ๊ณ์ญ๋๋ค.
์นด์นด์ค์์ ์๋ฒ ๊ฐ๋ฐํ๋ฉฐ ๋ฉด์ ๊ด์ผ๋ก ํ๋ํ๊ณ ๊ณ์๋ Choi
ํ ์ค์์ ๊ฐ๋ฐํ๊ณ ๊ณ์๋ ์๋ฒ ๊ฐ๋ฐ์
์ ์ธ๊ณ ๊ทธ๋ฃน์ ๊ฑฐ์ณ ๋ค์ด๋ฒ์์ ๊ฐ๋ฐํ์๋ Ande
์ง์๊ณต์ ์ ๊ฒฝ๋ ฅ
[ๅ] ์๋๋ฐ์คIP ๊ด๋ จ ๋ธ๋ก์ฒด์ธ ๊ฐ๋ฐ์
[ๅ] ๋ฉํ๋ฒ์ค ๋ฐฑ์๋ ๊ฐ๋ฐ์
[็พ] ํ๊ต์์ ๊ณ ์ฌ๊ฐ๋ ์๋ฒ ๊ฐ๋ฐ์
์ธํฐ๋ทฐ ์ด๋ ฅ
๊ธฐํ ๋ฌธ์
unduck2022@gmail.com
Courses
Reviews
- Redis from a Kakao Interviewer Who Handles 500,000+ Traffic per Second
dblab977687
ยท
Distributed Transaction Patterns from an MSA Perspective, as Explained by a Kakao InterviewerDistributed Transaction Patterns from an MSA Perspective, as Explained by a Kakao Interviewer- MySQL from a Kakao Interviewer Handling 1 Trillion++ Data Points
- NGINX for 1,000,000++ TPS as told by a Naver interviewer
- Redis from a Kakao Interviewer Who Handles 500,000+ Traffic per Second
Posts
Q&A
์ค๋ผํด
์๋ ํ์ธ์ ์์ด๋!! ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ค ๋ค์ผ์๋๋ฐ์ ์์ด์ ๋์์ด ๋์ค๊บผ ๊ฐ์์. SQL์ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ์ด๋ ํต์ฌ์ ์ธ ๋ฌธ๋ฒ ๊ทธ๋ฆฌ๊ณ DDL ์ค๊ณ ๋ฐ ํธ๋์ญ์ ์ด๋ ACID๊ฐ์ ๊ฐ๋ ๋ค์ด ์ฌ์ค์ RDBMS์ ๊ณตํต์ ์ธ ํญ๋ชฉ์ด๋ผ์ ๊ทธ๋๋ก ์ ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ฌผ๋ก ์จ์ ํ๊ฒ ๋ฌธ๋ฒ์ด ๊ฐ์ง๋ ์์์. ์๋ฅผ๋ค์ด ์ด๋ฐ ๋ถ๋ถ๋ค์ ๋ฐ๋ก ํ์ตํ์๋ฉด ์ข์ต๋๋ค.LIMIT โ ROWNUM ๋๋ FETCH FIRST n ROWS ONLY AUTO_INCREMENT โ SEQUENCE IFNULL โ NVL๊ทธ๋์ ๊ธฐ๋ณธ๊ธฐ๋ฅผ MySQL๋ก ๋ค์ง๊ณ , Oracle ๋ฌธ๋ฒ ์ฐจ์ด์ ๋ง ์ถ๊ฐ๋ก ์ ๋ฆฌํ์๋ฉด ์ค๋ฌด ์ ์์ ํฐ ๋ฌธ์ ์์ผ์ค๊ฒ๋๋ค.!
- 0
- 1
- 36
Q&A
Redis ํ
๊ฐ์์์๋ ํ๋ฒ ์ธ๊ธ๋๋ ธ๋ค๊ฑฐ ๊ฐ์๋ฐ, ๊ฐ๋จํฉ๋๋ค. ์ ๋ง ๊ฐ๋จํ ๋ฉ์์ง ํ๊ฐ ํ์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.Kafka๋ RabbitMQ๋ฅผ ์๋ก ๋์ฐ๊ธฐ๊ฐ ์ข ๋ถ๋ด์ค๋ฌ์ด ๊ฒฝ์ฐ๊ฐ ๋๊ฒ ์ฃ .
- 0
- 2
- 70
Q&A
Redis Hash
์.. ์ด๋ค ๊ด์ ์ผ๋ก ๋ณด๋์ ๋ฐ๋ผ์ ๋ค๋ฅผ๊บผ๊ฐ์ต๋๋ค. ์ผ๋จ ๋น์ฐํ๊ฒ๋ ์ผ๋ฐ์ ์ธ ์ํฉ์์๋ String์ ์ฃผ๋ก ์ฌ์ฉํ๋๊น ๊ทธ๋ฅ ๊ทธ๋๋ก ์ฌ์ฉํ์ ๋ ๋ฉ๋๋ค. ํ์ง๋ง ์... ๊ธฐ์ค์ ์ข ์ก์๋ณด์๋ฉด ์ด๋ฐ ์กฐ๊ฑด์์๋ Hash๊ฐ ์ ๋ฆฌํ ๊บผ๊ฐ์์.๊ฐ์ฒด ํ๋ ์ผ๋ถ๋ง ์ ๋ฐ์ดํธํ ๋ (HSET user:1 age 26)ํ๋๊ฐ ๋ง๊ณ ๋ถ๋ถ ์กฐํ๊ฐ ์ฆ์ ๋๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ด ์ค์ํ ๋ (ziplist ์ธ์ฝ๋ฉ ๋๋ถ์ ์์ Hash๋ ๋งค์ฐ ํจ์จ์ ) ๊ทธ๋์ ์ฌ์ค์ ํธ๋ํฝ์ด ๋ฎ์ ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ค๋ฉด ๋์ ์ฐจ์ด๊ฐ ๊ฑฐ์ ์์ด์. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฐ ์๋น์ค์ ๋ณ๋ชฉ์ ์ฌ์ฉํ์๋ Redis์ ํ์ ๋ณด๋ค๋ ๋คํธ์ํฌ ์๋ณตํ์๋ ๋ค์ด๊ฐ๋ ํค์ ์ค๊ณ์์ ์ต๋๋ค. ๊ทธ๋์ ๋ญ ๊ธฐ๋ณธ์ ์ผ๋ก String + Json์ ์ฌ์ฉํ๋ค๊ณ ์๋ชป๋์๋ค๊ณ ๋งํ๋๊ฑฐ ์์ฒด๊ฐ ์๋ชป๋๊ฒ๋๋ค. ๊ทธ๋ ๊ฒ ์ฌ์ฉํ์ ๋ ๋ฌด๋ฐฉํ๊ณ ์์ ์ ๊ฐ ๊ธฐ์ค์ ์ก์๋ ๊ธฐ์ค๋ค์ ๋ํด์ ์ ๋ฐ ์ํฉ์ด ๋ฐ์ํ๋ค๋ฉด, ๊ทธ๋ ํ๋ฒ ์ฌ์ฉํด๋ณด์๋๊ฒ์ ๊ณ ๋ คํด๋ณด์๋๊ฒ ์ด๋จ๊น์ถ์ต๋๋ค.
- 1
- 1
- 66
Q&A
service ๋ฅผ interface ๋ก ๋๋ ์ด์
์๋ ํ์ธ์ ์ตธ์๋ ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ง์ํด์ฃผ์ ๋ถ๋ถ์ฒ๋ผ ๊ตณ์ด ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋ฉ๋๋ค. ์ด๊ฑด ๊ฐ์ธ์ ์ธ ์คํ์ผ์ ๊ฐ๊น์ด๊ฑฐ ๊ฐ์์. ๊ทธ๋์ ์ ์ฝ๋๊ฐ ์ณ๋ค๊ณ ๋ง์๋๋ฆฌ๊ธฐ์๋ ์ข ์กฐ์ฌ์ค๋ฌ์ด ๋ถ๋ถ์ด ์์ต๋๋ค. ๊ทผ๋ฐ ๋ถ๋ฆฌํ๊ฒ ๋์์ ๋ ๊ฐ์ง ์ ์๋ ์ฅ์ ์ ๋ช๊ฐ ์์ต๋๋ค. ๋ํ์ ์ผ๋ก CGLIB ๊ฐ์ ๋ฌธ์ ๋ก ์ธํด์ ์์ฑ์ ์ ์ฝ์ ํผํ ์๋ ์๊ณ , DIP ์์น์ ๊ด์ ์์ ๊ตฌํ์ฒด๊ฐ ๋ฐ๋๋ค๋ ๋ถ๋ถ๋ ๊ฐ์ ํ์ ๋ ๋ณ๊ฒฝํ๊ธฐ๋ ํธํ์ฃ . ๋ญ ๊ตณ์ด ๋ฐ์ง์๋ฉด ์ด๋ฐ ์ด์ ๋ค์ด ๋ค์ํ๊ฒ ์๋๋ฐ, ์ฐ๋ฆฌ๊ฐ ํ์ค์ ์ผ๋ก ์ฝ๋ ์์ฑํ ๋ ๋ง ์ด๋ฐ ์ผ์ด์ค๊น์ง ๊ณ ๋ คํ์ง๋ ์์ต๋๋ค. ๊ทธ๋์ ์ตธ์๋์ด ์ํ์๋ ์คํ์ผ๋ก ์์ฑํ์ ๋ ํฐ ๋ฌธ์ ๋ ์์๊บผ๊ฐ๋ค์. ์ด๋๊น์ง๋ ๊ฐ๋ฐ์ ๊ฐ์๋ง์ ์คํ์ผ์ด ์์ผ๋๊น์ ใ ใ ์ด์ ๋๋ฉด ์ดํด๊ฐ ๋์ จ์๊น์??๊ฐ์ฌํฉ๋๋ค!
- 0
- 1
- 57
Q&A
๊ฐ์์์ ์์ฑํ ์ฝ๋ ์ ๊ณต ๋ฌธ์
์๋ ํ์ธ์. ๊ฐ์ ์ด๊ธฐ์ ์์ค์ฝ๋ ์ฑํฐ๊ฐ ์๋๋ฐ ๊ฑฐ๊ธฐ์์ ๋ค์ด๋ก๋ ํ์๋ฉด ๋ฉ๋๋ค!! ๊ฐ์ฌํฉ๋๋ค!!
- 1
- 1
- 81
Q&A
21๊ฐ์์ ์ดํดํ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ๋ค์ด ์์ต๋๋ค!
์๋ ํ์ธ์ ์ ์ฐ๋ ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํ๋ํ๋ ๋๋ ์ ์ค๋ช ๋๋ ค๋ณด๋๋ก ํ ๊ฒ์. ๊ทผ๋ณธ์ ์ธ ์ํคํ ์ฒ์ ์ด๋ค ๋ฌธ์ ์ ์ด ์๊ธฐ๋์ง, ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.์ด๊ฑฐ๋ ๋น์ง๋์ค ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์คํค๋ง ๋ณ๊ฒฝ์ด ์ผ๊ธฐํ๋ ๋ค์ํ ๋ฌธ์ ์ ๋๋ค. ์ฆ ํ ์ด๋ธ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ด ์๊ตฌ์ฌํญ์ ๋ชจ๋ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ์ํฉ์ด ์์๊ฐ ๋ ๊บผ ๊ฐ์์. ์๋ฅผ ๋ค์ด is_vip, is_blocked, is_verified, is_dormant ... ์ด๋ฐ ์์ผ๋ก ์ปฌ๋ผ์ด ๊ณ์ ์ถ๊ฐ๋๋ฉด ํ ์ด๋ธ์ด ๋น์ฆ๋์ค ๋ก์ง์ ๋ณํ์ ์ข ์๋๊ณ , ๋์ค์ "์ด ์ปฌ๋ผ์ด ์ ์์ง?"๋ฅผ ์ถ์ ํ๊ธฐ ์ด๋ ค์์ง๋๋ค. ์ฆ ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ ์ ์ง์คํ ๋ฌธ์ ๋ก ์ดํดํ์๋ฉด ๋ฉ๋๋ค. ALTER๋ก ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ผ๋ก ๋ฌธ์ ๊ฐ ์ผ๊ธฐ๋๋ ๋ถ๋ถ์ด ์ ํํ ์ด๋ค ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํ์๋์ง ๊ถ๊ธํฉ๋๋ค. ์ด๋ฏธ ๋ง์ ๋ ์ฝ๋๊ฐ ์๋ ํ ์ด๋ธ์ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํจ์ผ๋ก์จ ์๊ฒจ๋๋ I/O ๋ถํ๋ฅผ ์๊ฐํ์๋ ๊ฑธ๊น์? ๋ง๊ฒ ์ดํดํ์ ๊ฒ๋๋ค. Lock์ ์ ๋ฐํ๋๊ฒ ๋ฌธ์ ์ธ๊ฑฐ์์. MySQL InnoDB ๊ธฐ์ค์ผ๋ก ์ปฌ๋ผ ์ถ๊ฐ ์ Online DDL์ด ์ง์๋๊ธด ํ์ง๋ง, ์ํฉ์ ๋ฐ๋ผ ํ ์ด๋ธ ์ ์ฒด๋ฅผ ๋ฆฌ๋น๋ ํ ์ ์์ฃ . ๊ทธ๋ฌ๋ฉด ์์ฒ๋ง ๊ฑด ํ ์ด๋ธ์ด๋ฉด ์ด ์์ ์์ฒด๊ฐ ์์ญ ๋ถ์ด๊ณ , ๊ทธ ๋์ ์ฐ๊ธฐ๊ฐ ๋ธ๋กํน๋๊ฑฐ๋ ์๋น์ค์ ์ํฅ์ ์ฃผ๋ ๋ถ๋ถ์ ํผํด๊ฐ ์๊ฐ ์์ด์. ์ด๊ฒ Boolean ์ปฌ๋ผ์ด ์ถ๊ฐ๋ ๋๋ง๋ค ์ด ๋น์ฉ์ด ๋ฐ๋ณต๋๋ฉด ๋ฌธ์ ๊ฐ ๋๊ฒ ์ฃ . I/O ๋น์ฉ์ ์ฆ๊ฐ๊ฐ ๋ฐ์ํ๋ค๋ ๋ถ๋ถ์ 2๋ฒ์์์ ๋น์ฉ ์ฆ๊ฐ๋ฅผ ๋ง์ํด์ฃผ์ ๊ฑธ๊น์? SELECT ๋น์ฉ ์ฆ๊ฐ๋ผ๋ฉด ์ฌ์ค ์ ์ฅํด์ผ ํ๋ ์ ๋ณด๊ฐ ๋์ด๋๋ฉด์ ์์ฐ์ค๋ฌ์ด๊ฒ ์๋๊ฐ ์ถ์๋ฐ ์ด๋ค ๊ด์ ์์์ ๋ฌธ์ ๋ฅผ ์ง์ด์ฃผ์ ๊ฑด์ง ๊ถ๊ธํฉ๋๋ค. ๋ญ ๋ถํ๋ ์ด๋ป๊ฒ๋ ๋ฐ์ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ก ์ดํดํ์๋ฉด ๋ฉ๋๋ค. SELECT ๋ถ๋ถ์ ๋ํด์๋ ํ์ด์ง ๋จ์๋ก ์ธํ ๋ถํ๊ฐ ์์ ์ ์๊ณ , ์ ์ฅํ๋ ์ ๋ณด๊ฐ ๋ง์์ง๋๊น ์ฌ์ค์ ๋งค์ฐ ์์ฐ์ค๋ฌ์ด ํ๋์ด์ฃ ๋ค๋ง Boolean ์ปฌ๋ผ์ ํน์ฑ์ ๋๋ถ๋ถ NULL ๋๋ false์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์์ ์ค์ ๋ก ์๋ฏธ ์๋ ๋ฐ์ดํฐ ๋ฐ๋๊ฐ ๋ฎ์๋ฐ row ํฌ๊ธฐ๋ง ์ปค์ง๋ ๋นํจ์จ์ด ์๊ธธ ์ ์๋ค๋ ๋ถ๋ถ๋ ๊ฐ์ด ์ป์ด๊ฐ๋ณด์๋ฉด ์ข์ง ์ํฅใน๊น ์ถ์ด์. ๋ ผ๋ฆฌ ๋ชจ๋ธ vs ๋ฌผ๋ฆฌ ๋ชจ๋ธ, ๊ทธ๋ฆฌ๊ณ ์ธ ๊ฐ์ง ๊ธฐ๋ฒ ๋ค ์ดํดํ์ ๋ฐฉํฅ์ด ํ๋ฆฌ์ง ์์ต๋๋ค. ๋ค์ ์ ๋ฆฌํด๋ณด์ฃ . ๋ ผ๋ฆฌ ๋ชจ๋ธ์ "์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ฒ์ธ๊ฐ"์ด๊ณ , ๋ฌผ๋ฆฌ ๋ชจ๋ธ์ "์ค์ DB์ ์ด๋ป๊ฒ ์ ์ฅํ ๊ฒ์ธ๊ฐ"๋ก ์๊ฐ์ ํ์๋ฉด ๋ฉ๋๋ค. ์ด ์ํฉ์์ Boolean ์์ฑ์ด ๋ง์์ง๋ ๋ฌธ์ ๋ฅผ ๋ ผ๋ฆฌ ๋ชจ๋ธ ๋ ๋ฒจ์์ "์ด ์ํฐํฐ๋ ์ฌ๋ฌ ์์ฑ์ ๊ฐ์ง๋ค"๋ก ์ ์ ํ ์ ์๊ณ , ๋ฌผ๋ฆฌ ๋ชจ๋ธ ๋ ๋ฒจ์์ ๊ทธ๊ฑธ ์ด๋ป๊ฒ ํ ์ด๋ธ๋ก ๊ตฌํํ ์ง๋ฅผ ์ ํํ๋ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ ๊ฑฐ์ฃ . ์ด ๋ ๊ตฌํ ๋ฐฉ๋ฒ์ 3๊ฐ์ง๊ฐ ์์๊ฒ๋๋ค.One Table per Anchor: ๊ธฐ๋ณธ ํ ์ด๋ธ ํ๋์ ํต์ฌ ์์ฑ๋ง ๋๋ ๋ฐฉ์Side Table: Boolean์ด๋ ๋ถ๊ฐ ์์ฑ์ ๋ณ๋ ํ ์ด๋ธ๋ก ๋ถ๋ฆฌ (ex. user_flags ํ ์ด๋ธ)EAV (Entity-Attribute-Value): user_id | attribute_name | value ํํ๋ก ์์ฑ ์์ฒด๋ฅผ ํ์ผ๋ก ์ ์ฅ ๊ทธ๋์ ์ ๊ฐ ๋ง์๋๋ฆฌ๊ณ ์ถ์ ๋ถ๋ถ์ ๋ฌด์์ Boolean์ ์ถ๊ฐํ๋๊ฑด ๋ ผ๋ฆฌ ๋ชจ๋ธ์ ๊ทธ๋๋ก ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ก ๋ฐ์๋ฒ๋ฆฌ๋ ํ์๋ผ๊ณ ๋ง์๋๋ฆฌ๊ณ ์ถ์์ด์. ๋ญ ์ํฉ์ ๋ฐ๋ผ์ ๋์ ์ ํ์ ์๋ ์ ์๋ค๊ณ ๋ ์๊ฐํฉ๋๋ค. ํ์ง๋ง ๊ณผ์ฐ ์ด ๋ฐฉ์์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ์์ธ๊ฐ?? ์ด๊ฑด ์ ๊ฐ ํ๋จํ๊ธฐ์๋ ์ด๋ ค์ด ๋ถ๋ถ์ผ๊บผ ๊ฐ๋ค์. ์ง๋ฌธ์ ๋ต์ด ์ข ๋์ จ์๊น์?? ํน์ ์ถ๊ฐ์ ์ธ ์ง๋ฌธ์ด ์๋ค๋ฉด ๋จ๊ฒจ์ฃผ์ธ์!! ์ข์ ํ๋ฃจ๋ณด๋ด์ธ์~~
- 0
- 1
- 53
Q&A
ํน์ ์คํ์นดํก ๋งํฌ๋ ์ด๋์ ๋ณผ์ ์์๊น์?
์๋ ํ์ธ์!! ํ์ฌ ์ค๋น์ค์ ์์ต๋๋ค ใ ใ ์๋ฌด๋๋ ๋ค๋ฅธ๋ถ๋ค๋ ๋ฐ์๋ค๋ณด๋... ์๊ฐ๋ณด๋ค ๋น ๋ฅด๊ฒ ์งํ์ด๋์ง ์๋ค์ ใ ใ ์ต๋ํ ๋น ๋ฅธ์์ผ์ ์ค๋นํ์ฌ ์์์์ ํตํด ๊ณต์ ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
- 0
- 1
- 63
Q&A
์นผ๋ผ๋ช
์๋ ํ์ธ์ SJ๋ ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ํด ๋ณต ๋ง์ด ๋ฐ์ผ์ธ์ ใ ใ ์ผ๋จ ๋ฌด์์ด ํ๋ ธ๋ค ๋ง๋ค๋ผ๋ ๋ ผ์์ ์๋๊ฑฐ ๊ฐ๊ณ ๊ฐ์ธ์ ์ธ ์ทจํฅ๊ณผ ๊ฐ๋ ์ฑ ์ธก๋ฉด์์ ์ฐจ์ด๊ฐ ์์๊ฑฐ๊ฐ์ต๋๋ค.์ ๋ ์ด๋์ ๋ JOIN์ ํ๋๋ฐ์ ์์ด์ ์๋ฏธ๊ฐ ๋ ๋ช ํํ๊ฑฐ ๊ฐ์์ ๋ค์๊ณผ ๊ฐ์ด ์ํํ ๋ฐ๋ ์์ด์. ์๋ฅผ๋ค์ด์SELECT * FROM Posts p JOIN Users u ON p.user_id = u.user_id;์ด๋ฐ ์ฟผ๋ฆฌ๋ง ๋ด๋ ์ด๋ค ํ ์ด๋ธ์ ํค์ธ์ง ๋ช ํํ๊ณ ๋ค์ค ์กฐ์ธํ๋ ์ํฉ์ด ๋ฐ์ํด๋ ๊ฐ๋ ์ฑ์ด ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทผ๋ฐ ๋ง์ฝ pk๋ฅผ id๋ก ๋๋ค๋ฉดJOIN Users u ON p.user_id = u.id์ด๋ฐ ํํ์ธ๊ฑด๋ฐ, ์ด๊ฒ ํ๋ฆฐ๊ฑด ์ ๋ ์๋์์. ๊ทผ๋ฐ ํ ์ด๋ธ์ด ๋ง์์ง๋ค๋ฉด ๊ฐ๋ ์ฑ์ด ์์ข์์ง๊บผ ๊ฐ์์. ์๋ฅผ๋ค๋ฉด ์ด๋ ๊ฒ ๋๋๊ฑฐ์ฃ u.id p.id t.id c.id์ ๋ ๊ฐ์ธ์ ์ผ๋ก ๊ฐ๋ ์ฑ์ด ์ค์ํ ์ฑ๊ฒฉ์ด๋ผ์ ์ด ์ฟผ๋ฆฌ๋ง์ ๋ณด๊ณ ์ด๋ค ์ฟผ๋ฆฌ์ธ์ง ์๋ฏธ๊ฐ ๋ช ํํ๊ฒ ์๋ฟ์ง ์์๊บผ ๊ฐ์ต๋๋ค. ์๊ธฐ์ฐธ์กฐ ์ธก์์๋ฅผ ๊ณ ๋ คํด ๋ณผ๊น์?? ์๋ฅผ๋ค์ด์ User๊ฐ ์ด๋ฐ ๊ตฌ์กฐ๋ผ๊ณ ํด๋ณด์ฃ parent_user_id INT FOREIGN KEY (parent_user_id) REFERENCES Users(user_id)์ฌ๊ธฐ์๋ ์ฌ์ค ํฌ๊ฒ ๋ค๋ฅผ๋ฐ๊ฐ ์์ต๋๋ค. ๊ทผ๋ฐ ๋ง์ฝ PK๊ฐ id๋ผ๋ฉด??FOREIGN KEY (parent_user_id) REFERENCES Users(id)์ฌ์ฉํ๋๋ฐ์๋ ๋ฌธ์ ๋ ์์ง๋ง ์์ ์ ๊ฐ ๋ง์๋๋ฆฐ ์ ์ ๊ณค์ ์์์ ๋ชจ๋ธ๋ง ๋ฌธ์๋ ERD ์์ฑ ์ธก๋ฉด์์ ๋ช ํ์ฑ์ด ๋ ๋จ์ด์ง๋๊ฑฐ ๊ฐ์์. ํ์ง๋ง ์ด๋๊น์ง๋ ์ด๊ฑด ์ ์ทจํฅ์ผ๋ฟ ์ํ์๋๋๋ก ํด๋ ๋ฌด๋ฐฉํฉ๋๋ค. ์ฌ์ฉํ๋๋ฐ์ ๋ฌด๋ฐฉํ๊ณ ์ทจํฅ์ ์ธ ๋ถ๋ถ์ด ๋ค์ด๊ฐ ์ฃผ์ ๋ผ๊ณ ์๊ฐํด์ ์ด๊ฑธ ์ ๊ฐ ๋ง๋ค ํ๋ฆฌ๋ค๋ผ๊ณ ํ๊ณ ์ถ์ง๋ ์์์. ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค!
- 0
- 2
- 47
Q&A
ํ๋ก์์
์๋ ํ์ธ์ SJ๋ ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ํด ๋ณต ๋ง์ด ๋ฐ์ผ์ธ์ ใ ใ ์ผ๋จ ํ๋ก์์ ๋ฅผ ์ ๋ ๊ถ์ฅํ๋ ์ฑ๊ฒฉ์ ์๋๋๋ค. ๋จ์ํ ์ฝ๋์์ค์ ๋์ด์์ ์ฟผ๋ฆฌ ์์ค์์ ๋๋ฒ๊น ํ๋๊ฒ๊ณผ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์์ ์ด ๋ ์ด๋ ต๊ธฐ ๋๋ฌธ์ด์์. ๊ทธ๋์ ์ ๋ ์ฝ๋๋จ์์ ์ฌ์ฉํ์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค. ์ ๊ฐ ๊ฐ์์์๋ ์ธ๊ธํ๊ฑฐ ๊ฐ์๋ฐ, ์ํฉ์ ๋ฐ๋ผ ํ๋ก์์ ๊ฐ ์ ์ฉํ๊ฒ๋๋ค. ์ด ๊ตฌ์กฐ๋ฅผ ์ถ์ฒ๋๋ฆฌ์ง๋ ์์์.์๋ฅผ๋ค๋ฉด ๋ค๋ฅธ ํ์ DB์ ์ ๊ทผํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผํ๋๋ฐ, DB์ ๋ฐ์ดํฐ๊ฐ ์ ์ถ๋๋๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๋ก์์ ๊ถํ๋ง์ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ค๋์ง ๋ฑ๋ฑ๋ณด์์ ์ธ ์ธก๋ฉด์์์ ๊ณ ๋ ค์ฌํญ์ด ์๋๋ผ๋ฉด ์ผ๋ฐ ํ๋ซํผ์์ ํ๋ก์์ ๋ฅผ ์ฌ์ฉํ๋๊ฑธ ์ ๋น์ถ์ฒ๋๋ฆด๊บผ ๊ฐ์์. ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค!
- 0
- 2
- 47
Q&A
์ธ๋ฑ์ค ๋ถํ , ๋ณํฉ์ ๋ฐ๋ฅธ ์ธ๋ฑ์ค ์ ์ฉ ๊ธฐ์ค๊ณผ OPTIMIZE TABLE
์๋ ํ์ธ์ soap๋ ์ง๋ฌธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!! ๋จผ์ ์ํด๊ฐ ์ง๋ฌ์ง๋ง ๋ณต ๋ง์ด ๋ฐ์ผ์๊ณ ๊ฑด๊ฐํ์๊ธฐ๋ฅผ ๋ฐ๋๊ฒ์ ใ ใ ํ๋ํ๋ ๊ฐ์๋ฅผ ๋๋ ์ ์ค๋ช ๋๋ฆด๊ฒ์. ์ง๋ฌธ1 : ์ธ๋ฑ์ค ๋ถํ /๋ณํฉ ๊ด์ ์์ โ๊ฑธ์ด๋ ๋๋คโ๋ ๊ฒฐ๋ก ์ ๋๋ฌํ๋ ๊ณผ์ ํ์ค์ ์ผ๋ก ๊ทธ๋ฐ ์ผ์ด์ค๋ ๊ฑฐ์ ์์ต๋๋ค. ์ ๋ ๊ทธ๋ ๊ฒ ์ฌ์ฉํด ๋ณธ์ ์ด ์๊ณ ์ ์ ํจ๊ป ๊ฐ์๋ฅผ ๋ง๋์๋ ๋ถ๋ค๋ ๊ทธ๋ฐ ๊ณผ์ ์ ํตํด์ ํ๋จ์ ํ์ง ์์์. ์๋ํ๋ฉด ๊ทธ๊ฑด ํธ๋ํฝ์ ์ ํ์ ๋ฐ๋ผ์ ๋๋ฌด๋๋ ๋ฌ๋ผ์ง๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ ๋ฌด์ธ๊ฐ ๊ธฐ์ค์ ์ก๊ณ ์ด ๊ธฐ์ค์ ๋์ด์๋ฉด ์ค์ ํ๋ค. ์ด๋ฐ์์ ์ฌ๊ณ ๊ณผ์ ์ด ์๋๋ผ ๊ทธ๋ฅ ์ฝ๊ธฐ ํธ๋ํฝ์ ์ง์คํ๋ค. ์ด ๋ถ๋ถ๋ง์ ๋ช ์ฌํ์๋ฉด ์ข์๊บผ๊ฐ์์. ๊ทธ๋์ ์ ๋ ๋ณดํต ๋ค์ ์์๋ก ํ๋จํฉ๋๋ค:์ค์ ์ฟผ๋ฆฌ ํจํด ํ์ธ (์ฌ๋ก์ฐ ์ฟผ๋ฆฌ, ์คํ ๊ณํ)ํ์ค์บ ๋น์ฉ ์ถ์ ํด๋น ์ธ๋ฑ์ค๊ฐ ์ ํ๋ ๊ฐ๋ฅ์ฑ ํ์ธ (Cardinality, Selectivity)์ฐ๊ธฐ ๋ถํ ํจํด ๋ถ์ (INSERT/UPDATE ๋น์จ) ๊ทธ๋์ ํต์ฌ์ "์ด ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ์ค์ ๋ก ์๋น์ค๊ฐ ๋๋ ค์ง๋๊ฐ?" ์ด ๋ถ๋ถ์ ์ง์คํ์๋ฉด ๋๋ ๊ฒ๋๋ค. ์ฝ๊ธฐ ์ฟผ๋ฆฌ๊ฐ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ๊ตณ์ด ์ฐ๊ธฐ ๋น์ฉ์ ๋๋ฆด ํ์๋ ์๊ธฐ ๋๋ฌธ์ด์์. ์ง๋ฌธ2 : ์ธ๋ฑ์ค ๋ถํ (split)์ด ์ค์ ๋ก ๋ฌธ์ ๊ฐ ๋๋ ๊ฒฝ์ฐ ์ฌ๋ฌ๋ถ๋ค์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ MySQL์ InnoDB๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ , ์ด InnoDB์ B-Tree ์ธ๋ฑ์ค๋ ์ฝ์ ํ๋ ๊ณผ์ ์์ ํ์ด์ง๊ฐ ๊ฐ๋ ์ฐจ๋ค๋ฉด ๋ถํ ์ด ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ์ด ๊ณผ์ ์์๋ ์ฌ๋ฌ๊ฐ์ง ์์ ์ด ์ผ์ด๋์ฃ ํ์ด์ง ๋ณต์ฌํฌ์ธํฐ ์ฌ์ ๋ ฌredo log ์ฆ๊ฐ์ ๊ธ ๋ฒ์ ํ์ฅ ๋ฑ๋ฑ ๊ทผ๋ฐ ์ฌ๊ธฐ์ ์ค์ํ๊ฑฐ๋ ์ด ๋ง์ ๊ณผ์ ์์ ์ฐ๋ฆฌ๋ ์ด ๋๊ฐ์ง์ ์ง์ค์ ํด์ผํ๋๊ฑฐ์์.PK๊ฐ AUTO_INCREMENT๋ผ๋ฉด โ ๋๋ถ๋ถ ์ฐ์ธก ์ฝ์ โ split ๋น๋ ๋ฎ์๋๋ค ํค(UUID ๋ฑ)๋ผ๋ฉด โ ์ค๊ฐ ์ฝ์ โ split ๋น๋ ๋์ ๊ทธ๋์ UUID๋ฅผ PK๋ก ์ฌ์ฉํ์ ๋์๋ ์ธ๋ฑ์ค๋ฅผ ์กฐ์ฌํ์ ์ผ ํ๊ณ , ์กฐํ๊ฐ ์๋์ ์ผ๋ก ๋ง๋ค๋ฉด ๊ทธ๋ฅ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ์ด๋ฒ๋ฆฌ๋ ๊ณผ์ ์ผ๋ก ์ดํดํ์๋ฉด ๋ฉ๋๋ค. ๋ฌด์์์ฑ๋ง์ ์กฐ์ฌํ๋ฉด ๋ ๊บผ ๊ฐ์์. ์ง๋ฌธ3 : ๋ผ์ด๋ธ ํ๊ฒฝ์์์ OPTIMZE TABLE ์ด๊ฑด ์ดํดํ์ ๊ฒ์ฒ๋ผ ์ตํ์ ์๋จ์ด ๋ง์ต๋๋ค. ์๋ํ๋ฉด ์ฌ์ค์ ํด๋น ๊ณผ์ ์ ์งํํ๋ฉด ํ ์ด๋ธ ์ฌ์์ฑ์ธ๋ฑ์ค ์ฌ๊ตฌ์ฑ๋ฐ์ดํฐ ์ฌ์ ๋ ฌ๋ฉํ๋ฐ์ดํฐ ๋ฝ ๋ฐ์์ด๋ฐ ๋ฌธ์ ๋ค์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ด์์.๋ฌผ๋ก 8.0์ด์์์๋ online DDL์ด ๊ฐ๋ฅํ์ฃ . ๊ทธ๋์ ๊ฐ๋ฅ์ ํ์ง๋ง ๊ฐ์์ค๋ฝ๊ฒ ๋ฆฌ์์ค ์ฌ์ฉ๋์ด ๊ธ์ฆํ๋ค๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋์ OPTIMZE TABLE์ด ์ด๋ค ๋ถ๋ถ์์ ์ํํ์ง ์ดํดํ์๊ณ ๋ด๊ฐ ์ด๊ฑธ ์ด ์ํฉ์ ์ ์ฉํด๋ ๋ฌธ์ ๊ฐ ์๋์ง ๊ฐ๊ด์ ์ธ ๋ถ๋ถ๋ค์ ๊ฒํ ํด๋ณด์๋ฉด ์ข์ง ์์๊น์ถ์ด์. ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค!!
- 0
- 2
- 61





