Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
Tags
- ์๋ฐ๋ผ์ด๋ธ์คํฐ๋
- assert.notnull
- mysql์ํคํ ์ฒ
- ์ธ๋ฑ์คํ์ค์บ
- ์ํฐ๋ ๋ณ์ข ๊ฐ๋ฐ์
- item15
- hikari cp ์ค์
- ์๋ฐ์์
- enum ์์ฑ์ ์ ๊ทผ ์ ํ์
- ์ธ๋ฑ์ค์คํต์ค์บ
- ๋ฐ์ฉ๋ ์ค๊ตญ์ด
- SVN
- ์์ดํ 15
- ์๋ฐ์์์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๋ ์ด์
- effectiveJava
- index full scan
- InnoDB์ํคํ ์ฒ
- ์ดํํฐ๋ธ์๋ฐ
- ์๋ผ์คํฑ์์น๋ฉ์ธ์ง์ฉ๋
- ๋น์ผ๊ฐ์ฒด์์ฑ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฒฉ๋ฆฌ์์ค
- ์ํฐ๋ ๊ฐ๋ฐ์ํ์ฌ
- Item6
- Hikari Connection Pool
- ์์
- ์๋ฐ
- mysql
- ์๋ฐ์ฐ๋ ๋
- builder null
- index skip scan
Archives
- Today
- Total
โ๐ป๊ธฐ๋กํ๋ ๋ธ๋ก๊ทธ
MySQL - InnoDB & MyISAM ์คํ ๋ฆฌ์ง ์์ง ์ํคํ ์ฒ ๋ณธ๋ฌธ
728x90
|
InnoDB ์คํ ๋ฆฌ์ง ์์ง ์ํคํ ์ฒ
- ๋ ์ฝ๋๋ฅผ PK ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ ๋์คํฌ์ ๋ฐ์ดํฐ ์ ์ฅ
- PK๋ฅผ ํตํด์๋ง ๋ ์ฝ๋ ์ ๊ทผ ๊ฐ๋ฅ
- PK์ธ๋ฑ์ค ์๋ ์์ฑ
- PK๋ฅผ ํตํ ๋ฒ์ ๊ฒ์์ด ๋น ๋ฆ
- InnoDB๋ PK๋ฅผ ์ค์ ํ์ง ์์ผ๋ฉด ๋ด๋ถ์ ์ผ๋ก PK๋ฅผ ์๋ ์์ฑํ์ฌ ํด๋ฌ์คํฐ๋ง
- ๋จ, ์๋์ผ๋ก ์์ฑ๋ PK๋ ์ฌ์ฉ์๊ฐ ์ฌ์ฉ์ด ๋ถ๊ฐ
- MVCC(Multi Version Concurrency Control)
- Undo์์ญ์ ์ด์ฉํ์ฌ ํ๋์ ๋ ์ฝ๋์ ๋ํด ๋ค์ํ ๋ฒ์ ์ด ๊ด๋ฆฌ๋จ
- ๋ ์ฝ๋ ๋จ์์ ํธ๋์ญ์
์ง์
- ๋ฐ์ดํฐ COMMIT์ ์๋กญ๊ฒ ์์ฑ๋ ๋ฐ์ดํฐ๋ InnoDB Buffer Pool์ ๋ค์ด๊ฐ๋ค.
- id = 1์ hobby ์นผ๋ผ์ update ํ๋ฉด ๋ณ๊ฒฝ ์ ์ ์นผ๋ผ ๊ฐ์ undo log์ ๋ณต์ฌ๋๋ค.
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค๋ง๋ค ์กฐํ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๊ฒ ๋จ.
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค ๊ธ ์ฐธ๊ณ - 2022.10.19 - [DB] - Transaction Isolation ๋ ๋ฒจ
์ ๊ธ ์๋ ์ผ๊ด๋ ์ฝ๊ธฐ(Non-Locking Consistent Read)
InnoDB์์๋ MVCCํน์ง ๋๋ฌธ์ ์ฝ๊ธฐ ์์ ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๊ฐ์ง Lock์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฝ๊ธฐ ์์ ์ด ๊ฐ๋ฅ
๊ฒฉ๋ฆฌ์์ค์ด Serializable์ด ์๋๊ฒฝ์ฐ select์์ ์ ๋ค๋ฅธ ํธ๋์ญ์ ๋ณ๊ฒฝ ์๊ด์์ด ๋๊ธฐํ์ง ์๊ณ ์์ ์ ๋ฐ๋ก ์ํ
Undo์์ญ & Redo์์ญ
Undo๋ก๊ทธ ์์ญ | Redo๋ก๊ทธ ์์ญ |
๋ณ๊ฒฝ๋๊ธฐ ์ด์ ์ ๋ฐ์ดํฐ ๋ฐฑ์ | COMMIT์๋ฃ๋ ๋ฐ์ดํฐ ๋ฐฑ์ |
ํธ๋์ญ์ ๋ณด์ฅ (ROLLBACK ์ Undo์์ญ์ ๋ฐ์ดํฐ ๋ณต์) | ์๋ฒ ๋น์ ์ ์ข ๋ฃ ์ Redo๋ก๊ทธ์ ๋ฐฑ์ ๋ ๋ฐ์ดํฐ ๋ณต์ |
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ๋ง๊ฒ ๋ฐฑ์ ๋ ๋ฐ์ดํฐ ๋ณํ |
- MySQL 5.5๋ฒ์ ๊น์ง๋ Undo๋ก๊ทธ ์์ญ์ ์ฌ์ฉ ๊ณต๊ฐ์ด ํ๋ฒ ๋์ด๋๋ฉด MySQL ์๋ฒ๋ฅผ ์๋กญ๊ฒ ๊ตฌ์ถํ์ง ์๋ ์ด์ ์ค์ผ ์ ์์
- 8.0 ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋๋๋ฉด์ MySQL ์๋ฒ๊ฐ ํ์ํ ์์ ์ ์ฌ์ฉ ๊ณต๊ฐ์ ์๋์ผ๋ก ์ค์ฌ์ค๋ค.
InnoDB Buffer Pool![](https://blog.kakaocdn.net/dn/coJgK7/btrTZyBpECt/NixviHTHGIFiY1owv3mj8K/img.png)
- InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ํต์ฌ ๋ถ๋ถ
- MySQL5.7 ์ดํ๋ถํฐ๋ InnoDB ๋ฒํผ ํ ์ฌ์ด์ฆ ๋์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅ
InnoDB Buffer Pool ์ญํ
- ๋ฐ์ดํฐ ์บ์ฑ
- ๋์คํฌ์ ๋ฐ์ดํฐ ํ์ผ์ด๋ ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ฑํ๋ ๊ณต๊ฐ
- SQL ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ ์ผ์ ํฌ๊ธฐ ๋จ์๋ก ์บ์ฑ -> INDEX, ํ ์ด๋ธ ๋ฐ์ดํฐ ์บ์ฑ
- InnoDB๋ ์ผ์ ํฌ๊ธฐ๋ก ์บ์ฑํ ๋จ์ ํ์ด์ง ์ LRU์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ
- ์ฐ๊ธฐ ์ง์ฐ ๋ฒํผ
- Dirty Page : INSERT, UPDATE, DELETE๋ช ๋ น์ผ๋ก ๋ณ๊ฒฝ๋ ํ์ด์ง
- InnoDB๋ ๋๋ค I/O๋ฅผ ์ค์ด๊ธฐ ์ํด ์์ฑ๋ Dirty Page๋ฅผ ๋ชจ์๋ค๊ฐ ํ ๋ฒ์ ๋์คํฌ์ ๋ฐ์ -> Buffer์ญํ
- Adaptive Hash Index
- ์ธ๋ฑ์ค ํค, ํ์ด์ง ์ฃผ์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ์ธ๋ฑ์ค
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฃผ ์์ฒญํ๋ ๊ฐ์ ๋ํด InnoDB๊ฐ ์ธ๋ฑ์ค ์๋ ์์ฑ
- innodb_adaptive_hash_index์์คํ ๋ณ์๋ฅผ ์ด์ฉํ์ฌ ์๋์์ฑ ์ฌ๋ถ ํ์ฑํ ๋ฐ ๋นํ์ฑํ ๊ฐ๋ฅ
Buffer Pool ๊ตฌ์กฐ
๋ฒํผํ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ์ด์ง ํฌ๊ธฐ(์์คํ ๋ณ์์ ์ ์ฅ๋ ๊ฐ : innodb_page_size)์ ์กฐ๊ฐ์ผ๋ก ์ชผ๊ฐ ์ ์ฅ
๋ฒํผ ํ ํ์ด์ง ๊ด๋ฆฌ ์ ์๋์ ๊ฐ์ ์๋ฃ๊ตฌ์กฐ๋ก ๊ด๋ฆฌ
- LRU(Least Recently Used) ๋ฆฌ์คํธ
- ํ๋ฌ์(Flush) ๋ฆฌ์คํธ
- ํ๋ฆฌ(Free) ๋ฆฌ์คํธ
MyISAM ์คํ ๋ฆฌ์ง ์์ง ์ํคํ ์ฒ
- InnoDB์์๋ ๋ชจ๋ ํ
์ด๋ธ์ด PK๋ก ํด๋ฌ์คํฐ๋ง ๋์ง๋ง, MyISAM์์๋ ํด๋ฌ์คํฐ๋ง ํค ์ง์ํ์ง ์์
- MyISAM์์๋ ๋ ์ฝ๋๊ฐ PK์ ์๊ด์์ด insert์์ ๋๋ง๋ค ์์๋๋ก ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฅ๋๋ค.
- ๋ ์ฝ๋๋ ROWID๋ผ๋ ๋ฌผ๋ฆฌ์ ์ฃผ ์๊ฐ์ ๊ฐ์ง๋ฉฐ, PK์ ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค ๋ชจ๋ ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฅ๋ ๋ ์ฝ๋์ row Id๊ฐ์ ํฌ์ธํฐ๋ก ๊ฐ์ง
- ํ ์ด๋ธ ๋จ์ LOCK
- ํด๋ฌ์คํฐ๋ง, ํธ๋์ญ์ , ์ธ๋ ํค ์ง์ํ์ง ์์
- MyISAM์ ํค ์บ์๋ ์ธ๋ฑ์ค๋ง ์บ์ฑ
- ์ ๋ฌธ ๊ฒ์, ์ขํ ๊ฒ์ ์ง์
728x90
๋ฐ์ํ
'DB > RDBMS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
B-Tree (0) | 2023.01.29 |
---|---|
Transaction Isolation ๋ ๋ฒจ (0) | 2023.01.09 |
Mysql - InnoDB ์คํ ๋ฆฌ์ง ์์ง ์ ๊ธ (0) | 2022.12.31 |
Transaction & Lock (0) | 2022.12.24 |