์ค๋ ์งํํ ๋ด์ฉ๋ค ๐ง
์ต๊ทผ ๊ฒ์ ๊ธฐ๋ก ์กฐํ ์ฑ๋ฅ ๊ฐ์
์ค๋์ ์ต๊ทผ ๊ฒ์ ๊ธฐ๋ก ์กฐํ์ ์ธ๋ฑ์ค๋ ์ ์ฉํด ๋ณด๊ณ ๋ ๋์ค๋ ์ ์ฉํด ๋ณด๋ฉฐ ์ฑ๋ฅ ๊ฐ์ ์ ํ์ธํด ๋ดค๋ค.
๋จผ์ ๋ณตํฉ ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํด์ (userId, createdAt DESC)๋ก ์ค์ ํด ์ฃผ์๊ณ , ์ฑ๋ฅ์ด ๊ฐ์ ๋๋์ง ํ์ธํด ๋ณด์๋ค. ๋ณตํฉ ์ธ๋ฑ์ค๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ ์ด์ ๋ ๋ฐ์ดํฐ๋ฅผ userId๋ฅผ ํตํด ์ฐพ์์ค๊ณ ์ต๊ทผ ์ ์ฅ ๊ธฐ์ค์ผ๋ก ์์ 10๊ฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ createdAt DESC๋ฅผ ํจ๊ป ์ค์ ํ๋ฉด ์ ๋ ฌ ํ์ ์์ด ๊ฐ์ ธ์ฌ ์ ์๋ ์ฅ์ ์ด ์๋ค.
์ฑ๋ฅ์ ํ์ธํ ๊ฒฐ๊ณผ type์ด ALL์์ ref๋ก ๋ณ๊ฒฝ๋์๊ณ , Using where; Using filesort์์ Using index๋ก ๋ณ๊ฒฝ๋์๋ค. ์ค์ ์คํ ์๊ฐ๋ ์ฝ 23% ๊ฐ์ํ๋ ๊ฒ์ ํ์ธํ๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ ๋ฉ์ถ์ง ์๊ณ ์๊ฐ์ ํ๋ ๋ถ๋ถ์ด... ์ฌ์ฉ์๊ฐ ๊ฒ์์ด๋ฅผ ํตํด ์ฑ์ฉ ๊ณต๊ณ ๋ฅผ ๊ฒ์ํ๊ฒ ๋๋ฉด ๊ฒ์์ด๊ฐ History ํ
์ด๋ธ์ ์ถ๊ฐ๋ ํ
๋ฐ ์ด๋ ๊ฒ ์์ฃผ Insert๊ฐ ์ผ์ด๋๋ ํ
์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ๋ ๊ฒ์ด ๊ณผ์ฐ ๋ง์๊น..? ํ๋ ์๋ฌธ์ด ์๊ฒผ๋ค.
์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ํ
์ด๋ธ์ ์ฝ์
ํ ํ, ์ธ๋ฑ์ค ํ์ด์ง์๋ ํด๋น ๋ฐ์ดํฐ์ ํค๋ฅผ ๋ฐ์ํด์ผ ํ๋ฏ๋ก ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๊ณ B-Tree ๊ธฐ๋ฐ ์ธ๋ฑ์ค๋ ๊ท ํ์ ์ ์งํ๊ธฐ ์ํด ๋
ธ๋ ๋ถํ (Split)๊ณผ ์ฌ์กฐ์ (Rebalancing)์ด ๋ฐ์ํ ์ ์์ด์ ๋ ๋ง์ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํ ์ ์๋ค.
์ด๋ฌํ ์ด์ ๋ก Redis๋ฅผ ์ ์ฉํด์ Redis์ ๊ฒ์์ด๋ฅผ ์ ์ฅํด ๋๊ณ ์กฐํํ ๋ Redis์์ ์กฐํํ๋ค๋ฉด ๋น ๋ฅธ ์๋๋ก ํ์ธํ ์ ์์ง ์์๊น ์๊ฐํ๊ฒ ๋์๋ค.
๊ทธ๋์ ๋ฐ๋ก Redis๋ฅผ ์ ์ฉํด ๋ดค๋ค. ์ ์ฉํ๊ณ DB์์ ์กฐํํ๋ ๊ฒ๊ณผ Redis์์ ์กฐํํ๋ ๊ฒ์ ์๋ ์ฐจ์ด๋ฅผ ํ์ธํ๋ค.
Redis๋ฅผ ์ ์ฉํ๊ธฐ ์ ๊ณผ ํ๊ฐ ํ์คํ๊ฒ ์๋ ์ฐจ์ด๋ฅผ ๋ณด์๋ค. ์ด๋ฐ ๊ฒฐ๊ณผ๋ก Redis๋ฅผ ํ์คํ๊ฒ ์ ์ฉํ๊ฒ ๋์๊ณ , ๊ฒ์์ด๋ฅผ Redis์ ์ ์ฅํ๊ฒ ๋๋ฉด DB์๋ ๊ฒ์์ด๊ฐ ์ ์ฅ๋์ง ์๊ธฐ ๋๋ฌธ์ @Scheduler๋ฅผ ํ์ฉํด์ 30๋ถ๋ง๋ค DB์ ์กด์ฌํ์ง ์๋ ๊ฐ์ ์ ์ฅํ ์ ์๋๋ก ๋๊ธฐํํ๋ค. ๊ทธ๋ผ DB์๋ ๊ฐ์ด ์ต์ ํ๋๊ณ Redis์์๋ ๊ฐ์ด ์ต์ ํ๋์ด์ ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ง๋ค!
Redis๋ฅผ ์ฌ์ฉํ๋ฉด์ ํ์๋ค๋ง๋ค ์ฌ์ฉํ๋ ๋ฒ์ ์ด ๋ฌ๋๋๋ฐ, ์ด ๋ถ๋ถ๋ ์ฐพ์๋ณด๋ฉด์ ๋ญ๊ฐ ๋ ํจ์จ์ ์ธ์ง ์ ๋ฆฌํด ๋ณด์๋ค.
ํจ๊ป ์ฌ์ฉํ์ ๋์ ์ฅ์
- RedissonClinet๋ ๋ถ์ฐ ๋ฝ, ๋๊ธฐํ, ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ด๋ฆฌ์ ๊ฐ์ ์ด ์๋ค.
- RedisTemplate์ Spring Boot์์ ์ฐ๋, ๊ฐ๋จํ ์บ์ฑ, ๊ธฐ๋ณธ์ ์ธ Redis ๋ฐ์ดํฐ ์กฐ์์ ๋ ์ ํฉํ๋ค.
- ๊ทธ๋์ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ์ฅ์ ์ ์ต๋๋ก ํ์ฉํ ์ ์๋ค.
์ด๋ ๊ฒ ์ต๊ทผ ๊ฒ์ ์กฐํ์ ๋ํ ์ฑ๋ฅ ๊ฐ์ ์ ๋ง๋ฌด๋ฆฌํ๊ณ Elasticsearch๋ก ๋์ด๊ฐ๊ธฐ๋ก ํ๋ค.
์ค๋ ํ๋ฃจ ์ ๋ฆฌ โ๏ธ
๊ณ์ ์ฑ๋ฅ ๊ฐ์ ์ ๋ํด ์๊ฐํ๊ณ ์งํํ๋ ์ฐ์ต์ ํ ์ ์์๋ ๊ฒ ๊ฐ๋ค.
ํด๋น ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉด ์ ์ฌ์ฉํ๋์ง, ์ ์ฌ์ฉํ๋ฉด ์ ๋๋์ง์ ๋ํด ์ฐพ์๋ณด๊ณ ๊ณ ๋ฏผํ๋ ์ต๊ด์ ๊ธฐ๋ฅผ ์ ์์๊ณ ์์ง ๋ถ์กฑํ์ง๋ง ํ๋ก์ ํธ๋ฅผ ํตํด ์ฑ์ฅํ๊ณ ์๋ ๊ฒ ๊ฐ๋ค.
ElasticSearch๊น์ง ์ฌ์ฉํ๊ณ ๋๋ฉด ์ด๋ ์ ๋ ์ฑ๋ฅ ๊ฐ์ ์ด ๋ง๋ฌด๋ฆฌ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
๋ด์ผ ๊ณํ โฐ
- Elasticsearch ์ค์น ๋ฐ ์ค์
- Elasticsearch ๊ณต๋ถ
- ์ ์ฒด ํ์ด์ง ์กฐํ์ ์ ์ฉํด ๋ณด๊ธฐ
+ ์ถ๊ฐ ๊ณํ์ ์ธ์ ๋ ์๊ธธ ์ ์์ต๋๋ค~_~
'โ๏ธ Today I Learned(TIL) > ์คํ๋ฅดํ ๋ด์ผ๋ฐฐ์์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ TIL ] ์ต์ข ํ๋ก์ ํธ_Day 11 (1) | 2025.02.21 |
---|---|
[ TIL ] ์ต์ข ํ๋ก์ ํธ_Day 10 (0) | 2025.02.19 |
[ TIL ] ์ต์ข ํ๋ก์ ํธ_Day 8 (0) | 2025.02.18 |
[ TIL ] ์ต์ข ํ๋ก์ ํธ_Day 4 (1) | 2025.02.13 |
[ TIL ] ์ต์ข ํ๋ก์ ํธ_Day 2 (0) | 2025.02.11 |