์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์๋ฐ
- hikari cp ์ค์
- builder null
- assert.notnull
- ์ํฐ๋ ๊ฐ๋ฐ์ํ์ฌ
- index skip scan
- enum ์์ฑ์ ์ ๊ทผ ์ ํ์
- ์์ดํ 15
- ๋น์ผ๊ฐ์ฒด์์ฑ
- Hikari Connection Pool
- index full scan
- ์๋ฐ์ฐ๋ ๋
- ์๋ฐ์์์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์๋ผ์คํฑ์์น๋ฉ์ธ์ง์ฉ๋
- ์ธ๋ฑ์ค์คํต์ค์บ
- mysql
- effectiveJava
- mysql์ํคํ ์ฒ
- ์ธ๋ฑ์คํ์ค์บ
- item15
- ์ดํํฐ๋ธ์๋ฐ
- Item6
- SVN
- ์๋ฐ์์
- InnoDB์ํคํ ์ฒ
- ์ํฐ๋ ๋ณ์ข ๊ฐ๋ฐ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฒฉ๋ฆฌ์์ค
- ๋ฐ์ฉ๋ ์ค๊ตญ์ด
- ์์
- ์๋ฐ๋ผ์ด๋ธ์คํฐ๋
- Today
- Total
๋ชฉ๋กDB (6)
โ๐ป๊ธฐ๋กํ๋ ๋ธ๋ก๊ทธ
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/OiApT/btrXnkIwgSR/AK7HvRPbM3WQJttIeG4Qm0/img.png)
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..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/epSCr2/btrUViT2PLE/HwVjgoAGGTp3dQdxOg1fk1/img.png)
1. InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ ๊ธ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ธ๋ฑ์ค๋ก ๋ ์ฝ๋๋ฅผ ์ ๊ทผ๋ค. ๋ ์ฝ๋ ๋จ์์ ์ ๊ธ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ ์ฝ๋์ ๋ ์ฝ๋ ์ฌ์ด์ ๊ฐญ์ ์ ๊ทธ๋ ๋ฝ์ด ์กด์ฌ ๋ ์ฝ๋๋ฝ InnoDB์์ง์ ์ธ๋ฑ์ค์ ๋ ์ฝ๋๋ฅผ ์ ๊ทธ๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ฑ๋์ง ์์๋ InnoDB์์ง์์ ์๋์ผ๋ก ์์ฑ๋๋ ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ ์ฝ๋ ๋ฝ์ ์ํํ๋ค. ๊ฐญ๋ฝ ๋ ์ฝ๋์ ๋ค๋ฅธ ์ธ์ ํ ๋ ์ฝ๋ ์ฌ์ด๋ฅผ ์ ๊ทธ๋ฏ๋ก ์ฌ์ด์์ ๋ฐ์ดํฐ๊ฐ insert ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค. ๋ฅ์คํธ ํค ๋ฝ ๋ ์ฝ๋ ๋ฝ + ๊ฐญ ๋ฝ ์๋ ์ฆ๊ฐ ๋ฝ(Auto Increment Lock) Auto Increment ์ปฌ๋ผ์ ๋์์ ์ฌ๋ฌ ์นผ๋ผ์ insert ์ ํ ์ด๋ธ ์์ค์ผ๋ก lock์ด ์กํ๋ค. insert์์๋ง auto increment ์์ ์ด ์ํ๋๋ฏ๋ก update, d..
MySQL ๋์์ฑ(์ฌ๋ฌ ์์ฒญ์ด ํ๋์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ)์ ์ํฅ์ ๋ฏธ์น๋ ์์๋ค์ ์ฉ์ด๋ฅผ ๋จผ์ ์ ๋ฆฌํ์. Transaction ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ๊ธฐ๋ฅ db read, write์์ ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฌถ๋ ๋ฐฉ์ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ ์์ ์ด ์ฑ๊ณตํ๋ฉด commit, ์คํจ ์ rollback์ ํ๋ฏ๋ก ๋ถ๋ถ์ฑ๊ณต, ๋ถ๋ถ ์คํจ(Partial Update)์ ์ํ์ด ์์ Lock ๋์์ฑ์ ์ ์ดํ๊ธฐ ์ํ ๊ธฐ๋ฅ ์ฌ๋ฌ ์ปค๋ฅ์ ์์ ๋์์ ๋์ผํ ์์์ ์์ฒญํ ๊ฒฝ์ฐ ์์๋๋ก ํ๋์ ์ปค๋ฅ์ ๋ง ๋ณ๊ฒฝํ ์ ์๊ฒ ํ๋ ์ญํ Isolation level ๋์์ ํ๋ ๋๋ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ์งํ๋ ๋, ๋ค๋ฅธ ํธ๋์ญ์ ์์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ธฐ์ค ์ผ๋ฐ์ ์ธ ์๋น์ค์์๋ Read Commited, Repeatable Read๋ฅผ ์ฌ์ฉ My..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/d6tMCn/btrSSKRU9Sp/SkKBBAUY2KQkhMhyImeYD1/img.png)
MySQL 5.5์ดํ๋ถํฐ InnoDB์์ง์ด ๊ธฐ๋ณธ์์ง์ผ๋ก ์ฑํ MySQL 5.5๊น์ง MySQL ์์คํ ํ ์ด๋ธ์ MyISAM MySQL 8.0์ดํ๋ถํฐ๋ ๋ชจ๋ InnoDB ์์ง ์ฌ์ฉ, MyISAM์์๋ง ์ ๊ณตํ๋ ์ ๋ฌธ๊ฒ์, ์ขํ๊ฒ์๋ InnoDB์์ ์ ๊ณต InnoDB ์คํ ๋ฆฌ์ง ์์ง ์ํคํ ์ฒ ๋ ์ฝ๋๋ฅผ PK ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ ๋์คํฌ์ ๋ฐ์ดํฐ ์ ์ฅ PK๋ฅผ ํตํด์๋ง ๋ ์ฝ๋ ์ ๊ทผ ๊ฐ๋ฅ PK์ธ๋ฑ์ค ์๋ ์์ฑ PK๋ฅผ ํตํ ๋ฒ์ ๊ฒ์์ด ๋น ๋ฆ InnoDB๋ PK๋ฅผ ์ค์ ํ์ง ์์ผ๋ฉด ๋ด๋ถ์ ์ผ๋ก PK๋ฅผ ์๋ ์์ฑํ์ฌ ํด๋ฌ์คํฐ๋ง ๋จ, ์๋์ผ๋ก ์์ฑ๋ PK๋ ์ฌ์ฉ์๊ฐ ์ฌ์ฉ์ด ๋ถ๊ฐ MVCC(Multi Version Concurrency Control) Undo์์ญ์ ์ด์ฉํ์ฌ ํ๋์ ๋ ์ฝ๋์ ๋ํด ๋ค์ํ ๋ฒ์ ์ด ๊ด๋ฆฌ๋จ ๋ ์ฝ๋ ๋จ์์ ํธ๋์ญ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/SiUVz/btrSkDFMmqW/Zx2OS0kw2oyD4aNq6HrxW1/img.png)
MySQL ์ํคํ ์ฒ ๊ฐ์ MySQL ์ ์ ํด๋ผ์ด์ธํธ Mysql์ ๋๋ถ๋ถ ์ธ์ด์ ๋ํด ์ ์ API ์ ๊ณต + Shell MySQL ์๋ฒ = MySQL ์์ง + ์คํ ๋ฆฌ์ง ์์ง 1. MySQL ์๋ฒ ์ค๋ ๋ ๊ธฐ๋ฐ ์๋ = Foreground Thread + BackGround Thread Foreground Thread(ํด๋ผ์ด์ธํธ ์ค๋ ๋) MySQL ์๋ฒ์ ์ ์๋ ํด๋ผ์ด์ธํธ์ ์๋งํผ ์กด์ฌ Foreground Thread๋ ๋ฐ์ดํฐ ๋ฒํผ๋ ์บ์๋ก๋ถํฐ ๊ฐ์ ธ BackGround Thread 2. MySQL ์์ง ํด๋ผ์ด์ธํธ ์ ์, SQL ์์ฒญ, ์ฟผ๋ฆฌ ๋ถ์ ๋ฐ ์ต์ ํ ์ญํ ์๋ ๋ชจ๋๋ก ๊ตฌ์ฑ. ์์ธํ ๋ด์ฉ์ ๊ฐ ์์ง์ ์ํคํ ์ฒ์์ ์ค๋ช ์ฟผ๋ฆฌ ํ์ ์ ์ฒ๋ฆฌ๊ธฐ ์ตํฐ๋ง์ด์ ์คํ ์์ง 3. ์คํ ๋ฆฌ์ง ์์ง ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง์ ์ ์ฅ ๋ฐ ์ฝ..