์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- item15
- ์๋ฐ์์
- ๋ฐ์ฉ๋ ์ค๊ตญ์ด
- assert.notnull
- InnoDB์ํคํ ์ฒ
- Item6
- ์๋ฐ์์์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์๋ฐ์ฐ๋ ๋
- index full scan
- ์ํฐ๋ ๊ฐ๋ฐ์ํ์ฌ
- enum ์์ฑ์ ์ ๊ทผ ์ ํ์
- SVN
- ์ดํํฐ๋ธ์๋ฐ
- ์์ดํ 15
- ์ธ๋ฑ์ค์คํต์ค์บ
- hikari cp ์ค์
- index skip scan
- mysql
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฒฉ๋ฆฌ์์ค
- effectiveJava
- ์๋ผ์คํฑ์์น๋ฉ์ธ์ง์ฉ๋
- ๋น์ผ๊ฐ์ฒด์์ฑ
- ์๋ฐ
- ์ํฐ๋ ๋ณ์ข ๊ฐ๋ฐ์
- Hikari Connection Pool
- builder null
- ์์
- ์๋ฐ๋ผ์ด๋ธ์คํฐ๋
- ์ธ๋ฑ์คํ์ค์บ
- mysql์ํคํ ์ฒ
- Today
- Total
๋ชฉ๋ก๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (39)
โ๐ป๊ธฐ๋กํ๋ ๋ธ๋ก๊ทธ
vuser 200์ผ๋ก 5๋ถ๊ฐ ์ฑ๋ฅํ ์คํธ ์ 25๋ฒ์ HikariPool-1 - Connection is not available, request timed out after 30000ms. SQLTransientConnectionException์ ๋ง์ฃผํ์ต๋๋ค. ์ Exception์ด ๋ฐ์ํ๊ณ , ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์์๋ด ์๋ค. ์ด ๊ธ์ ์๋ ๋ชฉ์ฐจ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. Hikari Connection Pool ๋์ ๋ฐฉ์ Hikari CP Connection ํ๋ ๊ณผ์ Hikari CP Connection ๋ฐ๋ฉ ๊ณผ์ ๋ฌธ์ ์์ธ ๋ถ์ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ ์์ธ ๋ถ์ ์ ์ Hikari Connection pool ํ๋ ๋ฐ ๋ฐํ ๊ณผ์ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. Hikari Connection Pool ๋์ ๋ฐฉ์ ์์์ Hi..
์ฑ๋ฅ ํ ์คํธ ์ vuser ์๊ณ์น๋ฅผ ์ค์ ํ๊ณ , Scouter๋ฅผ ํตํ ๋ณ๋ชฉ๊ตฌ๊ฐ ๋ถ์ํ์ฌ TPS๋ฅผ ๊ฐ์ ํ ๊ฒฝํ์ ๊ณต์ ํฉ๋๋ค. Scouter์ XLog ๋ถ์ํ๊ธฐ Scouter์ xLog๋ฅผ ๋๋๊ทธํ๋ฉด ๊ฐ ์๋ต๋ง๋ค ์๋์ ๊ฐ์ ํญ๋ชฉ๋ค์ ๋ณผ ์ ์์ต๋๋ค. Elasped Time CPU SQL Count SQL Time API Count API Time ์์ ํญ๋ชฉ ์ค ์๋ต์๋ ๊ธฐ์ค(Elasped Time)์ผ๋ก ์ ๋ ฌํ์ฌ ๊ฐ ์ ์ผ ์ค๋ ๊ฑธ๋ฆฐ ๊ตฌ๊ฐ์ ํ์ธํ์ต๋๋ค. ๋์ ๋๋ ๊ตฌ๊ฐ์ ๋ ๊ตฌ๊ฐ์ด ์์์ต๋๋ค. (1) ๊ตฌ๊ฐ - Ngrinder์ RampUp ์ค์ ์ผ๋ก ์ธํ ์ด๊ธฐ ์๋ต์๋ ์ง์ฐ๊ตฌ๊ฐ์ผ๋ก ์ถ์ธกํ์ต๋๋ค. (2) ๊ตฌ๊ฐ - API Time์ด ์ฌ๋ผ๊ฐ์ฌ ์์ธ ํธ์ถ ๋ฉ์๋๋ฅผ ํ์ธํ์์ต๋๋ค. ํด๋น ๋ฉ์๋๋ ngrinder ํ ์คํธ A..
์ฑ๋ฅํ ์คํธ ์ค๋นํญ๋ชฉ๋ค์ ๊ณต์ ํฉ๋๋ค. ํ๋ ์ง์ ๊ณผ ๊ณ ์ ๋ณ์๋ฅผ ์ง์ ํ์ฌ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์งํํ์์ต๋๋ค. ์ฑ๋ฅ ํ ์คํธ ์ ๊ทผ ๋ฐฉ์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ์ ๋ ์ ์ฒด ์๋ต ์๊ฐ์์ ์ฐจ์งํ๋ ๋น์ค์ ๋ถ์ํ์ฌ ๊ฐ์ฅ ์ํฅ๋๊ฐ ๋์ ๋ถ๋ถ๋ถํฐ ์ง์ค ๋ถ์ ๋์์ผ๋ก ์ ํํ์ต๋๋ค. ์์คํ ์ค์ ์์์ ์ฌ์ฉ๋ ํ์ธ, ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์์์ ์์ ์ฌ์ฉ๋ ๋ฐ ์๋ต ์๊ฐ, ์ ๊ด ์๋ฒ์์ ํต์ , ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์ฑ๋ฅ ๋น์ค๋ฑ์ ๋ถ์์ํ์์ต๋๋ค. ์ฑ๋ฅ ํ ์คํธ ๋จ๊ณ ์๋ 5๋จ๊ณ๋ก ๊ตฌ์ฑํ์์ผ๋ฉฐ, ์ฒซ ํ ์คํธ ์ดํ์๋ ์๋๋ฆฌ์ค ๊ตฌ์ฑ์ ์ ์ธํ 4๋จ๊ณ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์ด๋ฃจ์ด์ก์ต๋๋ค. ์ฑ๋ฅํ ์คํธ ์๋๋ฆฌ์ค ๊ตฌ์ ์์คํ ์ ์ด๋ ๋ถ๋ถ์ ์ด๋ป๊ฒ ๋ถํ๋ฅผ ์ค๊ฒ์ธ์ง ๊ฒฐ์ ๋ถํ ์ํฉ์์ ์์คํ ์ ๋์ ์์ธก ํ์ํ ๋ฐ์ดํฐ ์ค๋น ํ ์คํธ ํ๊ฒฝ ๊ตฌ์ถ ์๋ฒ ์, ์๋ฒ ์คํ ๊ฒฐ์ ..
๋ฌธ์ ์ํฉ member ๊ฐ์ฒด ์์ฑ ์ ํธํ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด lombok์ @Builder์ ์ฌ์ฉํ์๋ค. member ํด๋์ค์ ํ์ํ ํ๋๋ฅผ ๋์์ผ๋ก ์์ฑ์ ์์ฑ ํ @Builder์ ๋ถ์ฌ builder ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฒ ํ์๋ค. @Builder public Member(String id, String password, String userName, String email) { this.id = id; this.password = password; this.userName = userName; this.email = email; } ํ์ง๋ง ํ๋์ null์ด ๋ค์ด์์ ๊ฒฝ์ฐ๊ฐ ๊ณ ๋ ค๋์ง ์์๋ค. @Builder์ ์ํด ์ปดํ์ผ ์ ์์ฑ๋ ์ด๋ ธํ ์ด์ ํ๋ก์ธ์ฑ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด ๋ณด์ public static ..
๊ฐ์ฒด ์์ฑ ๋น์ฉ์ด ๋น์ผ ๊ฐ์ฒด EffectiveJava item6 - ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ๋ผ ๋ผ๋ ๋ด์ฉ์ ํ์ฌ ์ฝ๋์ ์ ์ฉํ ๋ด์ฉ์ ์ ๋ฆฌํ์ฌ ๊ณต์ ํฉ๋๋ค. ์คํฐ๋ ์ ๋ฆฌ ๋ด์ฉ https://github.com/WanOnPreStudy/EffectiveJavaStudy/blob/main/Chapter2/item_6_%EA%B9%80%EC%A0%95%ED%9D%AC.md ์ฑ ์์๋ ์๋์ ๊ฐ์ด ์ค๋ช ํ๊ณ ์์ต๋๋ค. ๊ฐ์ฒด ์์ฑ ๋น์ฉ์ด ๋น์ผ ๊ฐ์ฒด๋ ๋ฐ๋ณตํด์ ์์ฑํ๊ธฐ๋ณด๋ค, ์บ์ฑํ์ฌ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๊ฐ์ฒด ์์ฑ ๋น์ฉ์ด ๋น์ผ ๊ฐ์ฒด = cpu ๋ฆฌ์์ค ์ฌ์ฉ ๅค ์ ๊ทํํ์์ ๊ฒฝ์ฐ ๊ฐ์ฒด ์์ฑ ์ ์์ฑ ๋น์ฉ์ด ๋น์ธ๋ค. ์ ๊ท ํํ์์ ํตํด ๋ฌธ์์ด์ ๊ฒ์ฌํ ๋ ๋ด๋ถ ๋ฉ์๋๋ฅผ ๋ค์ฌ๋ค๋ณด๋ฉด ์ ๊ทํํ์์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๋ด๋ถ์ ์ผ..
B-Tree(B(Balanced)-Tree)๋? Database์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์๋ฃ๊ตฌ์กฐ ๊ตฌ์กฐ ๋ฐ ํน์ฑ RDBMS์์ btree์ ๋ณํ์ธ B+Tree, B*-Tree ์ ํ๋ ์ฌ์ฉ ์ธ๋ฑ์ค๋ ํ ์ด๋ธ์ ํค ์นผ๋ผ๋ง ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ํค์นผ๋ผ์ ์ฝ์ด ์ค์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ณณ์ ๊ฐ์ ์กฐํํด์ผ ํ๋ค. ์ต์์ Root Node ์ค๊ฐ Branch Node ํ๋จ(์ค์ ๋ฐ์ดํฐ ์ปฌ๋ผ์ ์ฐพ์๊ฐ๋ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์์) Leaf Node B-Tree ์ธ๋ฑ์ค ํค ์ถ๊ฐ ๋ฐ ์ญ์ ์ธ๋ฑ์ค ํค ์ถ๊ฐ, ์ญ์ , ๋ณ๊ฒฝ ๋ฑ์ MySQL v5.5 ์ดํ (InnoDB์์ง) ์ฒด์ธ์ง ๋ฒํผ๋ฅผ ํตํด ์ง์ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ ์ธ๋ฑ์ค ํค ์ถ๊ฐ ์ ์ฅ๋ ํค ๊ฐ์ ์ด์ฉํด B-Tree๋ด๋ถ์ ์ ์ ํ ์์น ๊ฒ์ ์ ์ฅ๋ ์์น๊ฐ ์ ํด์ง๋ฉด ๋ฐ์ดํฐ์ ์์น๋ฅผ ๋ด๋ leaf Node์ ์ ..
ํธ๋์ญ์ Isolation์ค๋ช ์ ํ์ํ ์ฌ๋ฌ ์ฉ์ด๋ฅผ ๋จผ์ ์ ๋ฆฌํ์. Transaction ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ๊ธฐ๋ฅ db read, write์์ ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฌถ๋ ๋ฐฉ์ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ ์์ ์ด ์ฑ๊ณตํ๋ฉด commit, ์คํจ ์ rollback์ ํ๋ฏ๋ก ๋ถ๋ถ์ฑ๊ณต, ๋ถ๋ถ ์คํจ(Partial Update)์ ์ํ์ด ์์ Lock ๋์์ฑ์ ์ ์ดํ๊ธฐ ์ํ ๊ธฐ๋ฅ ์ฌ๋ฌ ์ปค๋ฅ์ ์์ ๋์์ ๋์ผํ ์์์ ์์ฒญํ ๊ฒฝ์ฐ ์์๋๋ก ํ๋์ ์ปค๋ฅ์ ๋ง ๋ณ๊ฒฝํ ์ ์๊ฒ ํ๋ ์ญํ Isolation level ๋์์ ํ๋ ๋๋ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ์งํ ๋ ๋, ๋ค๋ฅธ ํธ๋์ญ์ ์์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ธฐ์ค ์ผ๋ฐ์ ์ธ ์๋น์ค์์๋ Read Commited, Repeatable Read๋ฅผ ์ฌ์ฉ Transaction Isolation..
1. InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ ๊ธ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ธ๋ฑ์ค๋ก ๋ ์ฝ๋๋ฅผ ์ ๊ทผ๋ค. ๋ ์ฝ๋ ๋จ์์ ์ ๊ธ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ ์ฝ๋์ ๋ ์ฝ๋ ์ฌ์ด์ ๊ฐญ์ ์ ๊ทธ๋ ๋ฝ์ด ์กด์ฌ ๋ ์ฝ๋๋ฝ InnoDB์์ง์ ์ธ๋ฑ์ค์ ๋ ์ฝ๋๋ฅผ ์ ๊ทธ๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ฑ๋์ง ์์๋ InnoDB์์ง์์ ์๋์ผ๋ก ์์ฑ๋๋ ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ ์ฝ๋ ๋ฝ์ ์ํํ๋ค. ๊ฐญ๋ฝ ๋ ์ฝ๋์ ๋ค๋ฅธ ์ธ์ ํ ๋ ์ฝ๋ ์ฌ์ด๋ฅผ ์ ๊ทธ๋ฏ๋ก ์ฌ์ด์์ ๋ฐ์ดํฐ๊ฐ insert ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค. ๋ฅ์คํธ ํค ๋ฝ ๋ ์ฝ๋ ๋ฝ + ๊ฐญ ๋ฝ ์๋ ์ฆ๊ฐ ๋ฝ(Auto Increment Lock) Auto Increment ์ปฌ๋ผ์ ๋์์ ์ฌ๋ฌ ์นผ๋ผ์ insert ์ ํ ์ด๋ธ ์์ค์ผ๋ก lock์ด ์กํ๋ค. insert์์๋ง auto increment ์์ ์ด ์ํ๋๋ฏ๋ก update, d..