ํ์ฌ์์ ๊ฐ๋ฐ์ ์งํํ๋ฉด์ ์ตํฐ๋ง์ด์ ๊ฐ ์ต์ ์ด๋ผ๊ณ ์๊ฐํ๋ ์คํ ๊ณํ๊ณผ ์ค์ ์ต์ ์ ์คํ ๊ณํ์ ์ข
์ข
์ฐจ์ด๊ฐ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.์ด๋, ๋ด๊ฐ ์งํํ๋ ๊ฐ์ ๋ฐฉํฅ์ ํด๋น ํ
์ด๋ธ์ ๋ํด ์ด๋ฏธ ์กด์ฌํ๋ ๋ค๋ฅธ ์ธ๋ฑ์ค๋ก ๋ณ๊ฒฝํ์ฌ ๊ฐ์ ๊ฐ๋ฅํ๊ฐ?์ธ๋ฑ์ค๋ฅผ ์์ ํ๊ฑฐ๋ ์๋ก ์ถ๊ฐํ์ฌ ๊ฐ์ ๊ฐ๋ฅํ๊ฐ? 1๋ฒ์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅํ ๋ถ๋ถ์ SQL์ ์ก์ธ์ค ๋ฐฉ์์ด๋ ์กฐ์ธ ์์, ์กฐ์ธ ๋ฐฉ์ ๋ํ Hint๋ฅผ ์ถ๊ฐํ์ฌ ๊ฐ์ ์ ์งํํ๊ณ ,1๋ฒ์ผ๋ก ํด๊ฒฐ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ฆ, 2๋ฒ์ ๊ฒฝ์ฐ์๋ ์ธ๋ฑ์ค์ ์์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๊ตฌ์ฑ ์ปฌ๋ผ์ ๋ณ๊ฒฝํ๋ ์์
์ ์งํํ๋ค. ํด๋น ๊ธ์์๋ 1๋ฒ์ ์ผ์ด์ค์ ์ ์ฉํ ์ตํฐ๋ง์ด์ ํํธ์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ๊ณ ์ ํ๋ค. ์ตํฐ๋ง์ด์ Hint์ค๋ธ์ ํธ ํต๊ณ์ ์์คํ
ํต๊ณ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ต์ ์ ํ๋ก์์ ๋ฅผ ๋ง๋๋ ์ตํฐ๋ง์ด์ ..
๐ข๏ธDatabase
๋จ๊ณ๋ณ๋ก ์ฑ์ฅํ์!ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ์ค, ์๋๊ฐ ๋๋ฆฐ ์ฟผ๋ฆฌ๋ค์ ์คํ๊ณํ์ ๋ถ์ํ์ฌ ์ถ์ถํ ๊ฒฝํ์ด ์๋ค.์คํ๊ณํ์์ ์ค์ํ ๊ฒ์ ์ฌ๋ฐ๋ฅธ ์ธ๋ฑ์ค๋ฅผ ํ๊ณ ์๋์ง, Cost๊ฐ ๋น์ ์์ ์ผ๋ก ๋์์ง ๋ฑ์ ํ์ธํ๋ค. ํด๋น ์์
์ ์งํํ๋ฉด์ Cost๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ณ์ฐ๋๋์ง ๊ถ๊ธํ์ฌ ์ฐพ์๋ณธ ๊ฒ์ ์ฌ๊ธฐ์ ์ ๋ฆฌํ๊ณ ์ ํ๋ค.์ตํฐ๋ง์ด์ ์ ํต๊ณ ์ ๋ณด์ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ์ธ์ฐ๊ธฐ๋ณด๋ค๋ ์คํ๊ณํ์์์ Cost๊ฐ ์ด๋ ํ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐ๋ ๊ฒ์ธ์ง ์ฐธ๊ณ ํ๋ ์ ๋๋ก ๋ฌํํ๊ฒ ์๊ฐํด์ผ ํ ๊ฒ ๊ฐ๋ค. ์ ํ๋์ ์นด๋๋๋ฆฌํฐ์ฐ์ , ์ตํฐ๋ง์ด์ ๊ฐ ์ฒ์์ผ๋ก ๊ณ์ฐํ๋ ์นด๋๋๋ฆฌํฐ๊ฐ ๋ฌด์์ธ์ง ์ ํ๋์ ํจ๊ป ์์๋ณด์. 1. ์ ํ๋ (Selectivity)๋ฐ์ดํฐ์์ ํน์ ๊ฐ์ ์ผ๋ง๋ ์ ์ ํํ ์ ์๋์ง์ ๋ํ ์งํ์ด๋ค.์ ํ๋๋ ๋ฎ์์๋ก ์ธ๋ฑ์ค ์ค์ ์ ์ข์ ์ปฌ๋ผ์ด๋ค.์ ํ๋ ..
์ต๊ทผ ํ๋ก์ ํธ์์ ๋ถ๋ฆฌ๋์ด ์๋ ์ฌ๋ฌ DB์ ๋ํด 2 Phase Commit์ ์ ์ฉํด์ผ ํ๋ ์ผ์ด ์๊ฒจ ์ ๋ฆฌํ๊ฒ ๋์๋ค.์ค๋ช
์ ์์ํ๊ธฐ์ ์์, ๊ฐ๋จํ๊ฒ ๋ถ์ฐ ํธ๋์ญ์
์ ๋ํด ์๊ธฐํ๊ณ ๋์ด๊ฐ๊ฒ ๋ค.๋ถ์ฐ ํธ๋์ญ์
์ ๊ธ๋ก๋ฒ ํธ๋์ญ์
์ด๋ผ๊ณ ๋ ํ๋ฉฐ, ํตํฉ๋์ด ๊ด๋ฆฌ๋๋ ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์
๋ฌถ์์ ์๋ฏธํ๋ค.์ด๋, 1๏ธโฃ ๋ถ์ฐ ํธ๋์ญ์
์ ํฌํจ๋๋ ํธ๋์ญ์
์ ์๋ก ๋์ผํ DB์ ์กด์ฌํ ์๋ ์๊ณ , 2๏ธโฃ ์๋ก ๋ค๋ฅธ DB์ ์กด์ฌํ ์๋ ์๋ค.XA Datasource์ 2 Phase Commit ์ด๋?XA๋ 2 Phase Commit์ ํตํ ๋ถ์ฐ ํธ๋์ญ์
์ฒ๋ฆฌ๋ฅผ ์ํด X/Open์์ ์ ์ํ ํ์ค์ด๋ค.๋ถ์ฐ ํธ๋์ญ์
์์ ์ฌ์ฉ๋๋ ๊ฐ๊ฐ์ DB์๋ ํ๋์ XA Datasource๊ฐ ์กด์ฌํ๊ณ , ์ด XA Datasource๊ฐ XA C..
MySQL์ ๊ฒฉ๋ฆฌ ์์ค ํธ๋์ญ์
์ ๊ฒฉ๋ฆฌ ์์ค(Isolation Level)์ด๋ ์ฌ๋ฌ ํธ๋์ญ์
์ด ๋์์ ์ฒ๋ฆฌ๋ ๋ ํน์ ํธ๋์ญ์
์ด ๋ค๋ฅธ ํธ๋์ญ์
์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐํํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๊ฒ ํ์ฉํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค. ๊ฒฉ๋ฆฌ ์์ค์ ํฌ๊ฒ 4๊ฐ์ง๋ก ๋๋๋ค. Read UNCOMMITTED Read COMMITTED REPEATABLE READ SERIALIZABLE 1๋ฒ๋ถํฐ 4๋ฒ๊น์ง ๋ค๋ก ๊ฐ์๋ก ๊ฐ ํธ๋์ญ์
๊ฐ์ ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ(๊ณ ๋ฆฝ) ์ ๋๊ฐ ๋์์ง๋ฉฐ, ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ๋ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ด์ง ์ ์๋ค. ๊ฒฉ๋ฆฌ ์์ค์ด ๋์์ง์๋ก MySQL ์๋ฒ์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ด ๋ง์ด ๋จ์ด์ง ๊ฒ์ผ๋ก ์๊ฐํ ์ ์์ง๋ง, ์ฌ์ค SERIALIZABLE ์์ค์ด ์๋๋ผ๋ฉด ํฌ๊ฒ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ์ง๋ ์์ผ๋ ์์ฌํด๋ ๋๋ค. ํ๋ ํน๋ณํ ๋ถ๋ถ์ด ์๋ค..
JOIN์ด ์ด๋ป๊ฒ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ํด ์ฟผ๋ฆฌ ํจํด๋ณ๋ก ์์๋ณด๊ณ ์ฃผ์์ฌํญ์ ๋ํด์ ์์๋ณด๊ณ ์ ํ๋ค. 1. JOIN์ ์์์ ์ธ๋ฑ์ค ์ธ๋ฑ์ค ๋ ์ธ์ง ์ค์บ์ ์ธ๋ฑ์ค๋ฅผ ํ์(Seek)ํ๋ ๋จ๊ณ์ ์ธ๋ฑ์ค๋ฅผ ์ค์บ(Scan)ํ๋ ๊ณผ์ ์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด์ ์ฟผ๋ฆฌํ๋ ์์
์์๋ ๊ฐ์ ธ์ค๋ ๋ ์ฝ๋์ ๊ฑด์๊ฐ ์๋์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค ์ค์บ ์์
์ ๋ถํ๊ฐ ์์ง๋ง ํน์ ์ธ๋ฑ์ค ํค๋ฅผ ์ฐพ๋ ์ธ๋ฑ์ค ํ์ ์์
์ ์๋์ ์ผ๋ก ๋ถํ๊ฐ ๋๋ค. ์กฐ์ธ ์์
์์ ๋๋ผ์ด๋น ํ
์ด๋ธ์ ์ฝ์ ๋๋ ์ธ๋ฑ์ค ํ์ ์์
์ ๋จ ํ ๋ฒ๋ง ์ํํ๊ณ , ๊ทธ ์ดํ๋ถํฐ๋ ์ค์บ๋ง ์คํํ๋ฉด ๋๋ค. ํ์ง๋ง ๋๋ฆฌ๋ธ ํ
์ด๋ธ์์๋ ์ธ๋ฑ์ค ํ์ ์์
๊ณผ ์ค์บ ์์
์ ๋๋ผ์ด๋น ํ
์ด๋ธ์์ ์ฝ์ ๋ ์ฝ๋ ๊ฑด์๋งํผ ๋ฐ๋ณตํ๋ค. ๋๋ผ์ด๋น ํ
์ด๋ธ๊ณผ ๋๋ฆฌ๋ธ ํ
์ด๋ธ์ด 1:1..
1. Redis Temporary Location For Speed ๋ฐ์ดํฐ์ ์๋ ์์ค๋ณด๋ค ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ก์ธ์คํ ์ ์๋ ์์ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์
์์ ์๋ ํฅ์์ ์ํด ์บ์๋ฅผ ์ด์ฉํ๋ค. ๋น์ฐํ ์๋๋ฅผ ๋์ด๋ ค๋ฉด ์๋ณธ์ ์ ๊ทผํ๋๊ฒ๋ณด๋ค ์บ์์ ์ ๊ทผํ๋๊ฒ ๋นจ๋ผ์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ์ ๋ฐ๋ณต์ ์ก์ธ์ค๊ฐ ๋ง์์ง์๋ก ์บ์๋ฅผ ์ฌ์ฉํ๋๊ฒ ์ ๋ฆฌํ๋ค. ์๋์ ๊ฐ์ ํน์ง์ ๊ฐ์ง๋ค. ๋จ์ํ key-value ๊ตฌ์กฐ In-memory ๋ฐ์ดํฐ ์ ์ฅ์ (RAM) ๋น ๋ฅธ ์ฑ๋ฅ ํ๊ท ์์
์๋ < 1ms ์ด๋น ์๋ฐฑ๋ง ๊ฑด์ ์์
๊ฐ๋ฅ ์ด์ธ์๋ ์ต์ ๋ฒ์ ์ Redis๋ ๋ฐ์ดํฐ ์ ์ฅ๋ฟ๋ง ์๋๋ผ PUB/SUB ๊ตฌ์กฐ๋ฅผ ํตํด ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ์ฉ๋๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. Redis๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฝ..