Buffer Pool
- InnoDB ๋ฒํผ ํ์ InnoDB์์ ๊ฐ์ฅ ํต์ฌ์ ์ธ ๋ถ๋ถ
- MySQL ์ฑ๋ฅ ํ๋์ ์ค์ํ ์ธก๋ฉด
- innodb_buffer_pool_size๋ก ์ค์ ํ๊ณ , ์ ์ฒด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ 50~80% ์์ค์ผ๋ก ์ค์
- ๋ฒํผ ํ ๋ฉ๋ชจ๋ฆฌ๋ ํ์ด์ง๊ณผ ์บ์ ํจ์จ์ฑ์ ์ํด LRU ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๋ฆฌ์คํธ ํํ
- ์ธ๋ฑ์ค ์ค๊ณ์ ์ ๋์ด ์์ง๋ง ์ฌ๋ก์ฐ ์ฟผ๋ฆฌ๊ฐ ํด๊ฒฐ๋์ง ์๋๋ค๋ฉด ์ด ๋ถ๋ถ์ ์์ฌํด ๋ด์ผ ํ๋ค.
- ์ฌ์ฉ๋๊ณ ์๋ ์ํ ํ์ธ ์ฟผ๋ฆฌ
SHOW STATUS LIKE '%innodb_buffer_pool%';
innodb_buffer_pool_size
- ๋ฒํผ ํ์ ํฌ๊ธฐ๊ฐ ํด์๋ก ์ฑ๋ฅ์ ์ ๋ฆฌํจ
- ๋ฒํผ ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ ํฐ ์์ผ๋ก ํ ๋น๋์ด ์๋ค๋ฉด innodb๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฒ๋ผ ๋์
- ๋์คํฌ์ ๋ฐ์ดํฐ ํ์ผ์ด๋ ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ํด ๋๋ ๊ณต๊ฐ + ์ฐ๊ธฐ ์์
์ ์ง์ฐ์์ผ ์ผ๊ด ์์
์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฒํผ ์ญํ
- SELECT๋ฅผ ์ํ ์บ์ ํจ๊ณผ๊ฐ ํฌ๋ค -> ์ฝ์ผ๋ ค๋ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด ๋์คํฌ ์์ ์ด ๋ฐ์ํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค!
- INSERT, UPDATE ๋ฐ DELETE์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ์ฟผ๋ฆฌ๋ ๋์คํฌ ์์ ์ ๋ฐ์์ํด -> ๋ฒํผ ํ์ด ์๋ค๋ฉด ์ด๋ ๊ฒ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์์ ์ฒ๋ฆฌํด์ ๋๋คํ ๋์คํฌ ์์ ํ์๋ฅผ ์ค์ผ ์ ์๋ค!
- => ๋ค๋ฅธ ๋ฒํผ์ ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ธํ๊ณ ๋ ๋๋ถ๋ถ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฒํผ ํ์ ํ ๋นํ๋ ๊ฒ์ด ์ข๋ค.
innodb_buffer_pool_chunk_size
- ๋ฒํผํ ์ฌ์ด์ฆ๋ฅผ ๊ฒฐ์ ํ๋ ์ญํ
- ๊ธฐ๋ณธ๊ฐ = 128M
- ์ฝ์ด ์๊ฐ ์ ๋ค๋ฉด ์ด ๊ฐ์ ๋๋ ค์ ๋ฒํผ ํ์ ํฌ๊ธฐ๋ฅผ ๋๋ ค์ผ ํจ
innodb_buffer_pool_instances
- ์ธ์คํด์ค ์๋ฅผ ๋๋ฆฌ๋ฉด ํธ๋์ญ์
๊ฐ Lock ๊ฒฝํฉ์ ์ค์ผ ์ ์์
- MySQL์ ๋ฉํฐ ์ฐ๋ ๋ ๊ตฌ์กฐ -> ์ฐ๋ ๋ ๊ฐ ๋ฒํผ ํ ์กฐ์์์ exclusive lock ์ฒ๋ฆฌ ํ์
- ๋ฒํผ ํ ์ ๊ทผ์ ํ๊ธฐ ์ํด ๋ฎคํ ์ค๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ฎคํ ์ค์ ๋ํ ๊ฒฝํฉ ๋ฐ์
- => ์ธ์คํด์ค ์๋ฅผ ๋๋ฆด์๋ก ๋ง์ ์์ ์ฐ๋ ๋๊ฐ ๋์์ ๋ฒํผ ํ์ ์ ๊ทผํ๋๋ผ๋ Lock ๊ฒฝํฉ์ ํผํ ์ ์๋ค.
- CPU ์ฝ์ด ์๊ฐ ๋ง์ ์์คํ
์ผ์๋ก ์ธ์คํด์ค ์๋ฅผ ๋๋ฆด ์ ์๋ค.
- ์ธ์คํด์ค ์ ๊ธฐ๋ณธ๊ฐ = 8
โญ๏ธ ๋ฒํผ ํ ํฌ๊ธฐ = innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances์ ๋ฐฐ์
innodb_buffer_pool_size๋ฅผ innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances์ ๊ฐ์ง ์์ ๊ฐ์ผ๋ก ๊ตฌ์ฑํ๋ฉด ๋ฒํผ ํ ํฌ๊ธฐ๋ ์๋์ผ๋ก innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances์ ๋ฐฐ์์ ๊ฐ๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ์ผ๋ก ์กฐ์ ๋ฉ๋๋ค.