๋ชฉ๋ก๐/Real MySQL 8.0 (7)
DevLog ๐ถ
๐ฑ ๋์คํฌ ์ฝ๊ธฐ ๋ฐฉ์ ๐ฌ HDD (ํ๋ ๋์คํฌ ๋๋ผ์ด๋ธ) / SSD (์๋ฆฌ๋ ์ค๋ ์ดํธ ๋๋ผ์ด๋ธ) ๋ฉ๋ชจ๋ฆฌ์ ๋นํด ์ค์ ํ๋์จ์ด ์ฅ์น์ ๋ฐ์ ์ ๋น๊ต์ ๋๋ฆฌ๊ฒ ๋ฐ์ ํ๋ค๋ ์๋ฆฌ๋ฅผ ๋ค์ ์ ์ด ์์ ๊ฒ์ด๋ค. ํนํ HHD๋ ํ๋ํฐ(์ํ)์ ๋๋ ค์ ์ฝ๊ณ ๋ ์ฐ๋ค ๋ณด๋ ์ฑ๋ฅ์ด ๋งค์ฐ ๋๋ฆด ์๋ฐ์ ์๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋ฑ์ฅํ SSD์ ๊ฒฝ์ฐ ๊ธฐ์กด ํ์คํฌ ๋๋ผ์ด๋ธ์์ ๋ฐ์ดํฐ ์ ์ฅ์ฉ ํ๋ํฐ(์ํ)์ ์ ๊ฑฐํ๊ณ ๊ทธ ๋์ ํ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฅ์ฐฉํด์ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์๋ค. ํ๋์ ๋ฉ๋ชจ๋ฆฌ๋ ์ ์์ด ์์ด๋ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋์ง ์์ผ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค๋ ๋๋ฆฌ์ง๋ง ๊ทธ๋๋ ํ๋ ๋์คํฌ ๋๋ผ์ด๋ธ๋ณด๋ค๋ ํจ์ฌ ๋น ๋ฅด๋ค. ๐ฌ ๋๋ค I/O์ ์์ฐจ I/O ๋์คํฌ ์ฝ๊ธฐ ์ฐ์ฐ์์ '๋๋ค I/O'์ '์์ฐจ I/O'๋ผ๋ ๋ง์ ๋ค์ ์ ์ด ์์ ๊ฒ์ด๋ค. ๋๋ค ..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ด๋ฒ ํฌ์คํ ์์๋ InnoDB์ ์ธ๋ฑ์ค์ ๋ฝ์ ์๊ด๊ด๊ณ์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ๋ํด์ ์์๋ณด์. ๐ฑ ์ธ๋ฑ์ค์ ๋ฝ์ง๋ ํฌ์คํ ์์ ๋ ์ฝ๋ ๋ฝ์ ๋ํด ์ ๋ฆฌํ ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฉํธ๋ฅผ ๋จ๊ฒผ๋ค.innoDB์ ๊ฒฝ์ฐ ๋ ์ฝ๋ ์์ฒด๋ฅผ ์ ๊ทธ๋ ๊ฒ๋ณด๋ค๋, ์ธ๋ฑ์ค์ ๋ ์ฝ๋๋ฅผ ์ ๊ทผ๋ค.์ธ๋ฑ์ค๋ฅผ ์ ๊ทธ๊ธฐ ๋๋ฌธ์ ๋ ์ฝ๋ ๊ฒ์ ์ ๋ฐ๊ฒฌ๋ ๋ชจ๋ ๋ ์ฝ๋์ ๋ฝ์ ๊ฑธ๊ฒ ๋๋ค. ์๋ฅผ ๋ค์ด, crew ํ ์ด๋ธ์ age = 23์ธ ์ฌ๋์ด 100๋ช ์ด๋ผ๊ณ ์๊ฐํด๋ณด์. ์ด๋, age์๋ ์ธ๋ฑ์ค๊ฐ, name์๋ ์ธ๋ฑ์ค๊ฐ ๊ฑธ๋ ค์์ง ์์ ์ํ๋ค.SELECT COUNT(*) FROM crew WHERE age = 23; # result: 100 ํ์ง๋ง, age = 23์ด๋ฉด์ name = 'journey'์ธ ๊ฒฐ๊ณผ๋ 1๊ฐ๋ง ๋์จ๋ค๊ณ ๊ฐ์ ํด๋ณด์.SELEC..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ด๋ฒ ํฌ์คํ ์์๋ ํธ๋์ญ์ ์ ๋ํ ๊ฐ๋จํ ๊ฐ๋ ๊ณผ, MySQL๊ณผ InnoDB ์คํ ๋ฆฌ์ง์์ง์์ ์ ๊ณตํ๋ ๋ฝ์ ๋ํด์ ์์๋ณด์. ๐ฑ ํธ๋์ญ์ ํธ๋์ญ์ ์ ํ๋์ ๋ ผ๋ฆฌ์ ์ธ ์์ ์ ์ ์์ ํ ์ ์ฉ(commit)๋๊ฑฐ๋, ์๋ฌด๊ฒ๋ ์ ์ฉ๋์ง ์์ (rollback)์ ๋ณด์ฅํด์ผ ํ๋ค. InnoDB์ MyISAM ํ ์ด๋ธ์ ํธ๋์ญ์ ๊ด์ ์์๋ ์ฐจ์ด๋ฅผ ๋ณด์ด๋๋ฐ, ์ด๋ฅผ ํ์ธํด๋ณด์. ์ฐ์ , ์๋์ ๊ฐ์ด myISAM๊ณผ innoDB๋ฅผ ์ฌ์ฉํ 2๊ฐ์ ํ ์ด๋ธ์ ๋ง๋ค์.CREATE TABLE tb_myisam ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=MYISAM; CREATE TABLE tb_innodb ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=i..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ด๋ฒ ํฌ์คํ ์์๋ InnoDB์ ์ ๋ฐ์ ์ธ ์ํคํ ์ฒ ์ค์์ ๋์คํฌ ์์ญ์ ๋ํด์ ์์๋ณด์. ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ๋จํ๊ฒ๋ง ์ง๊ณ ๋์ด๊ฐ๊ณ ์ ํ๋ค. ๐ฑ Tablespaceํ ์ด๋ธ ์คํ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํฐ ๋ ผ๋ฆฌ์ ์ธ ๋จ์์ด๋ฉฐ, Segment -> Extent -> Page -> Row์ ๊ฐ์ ํํ๋ก ๊ตฌ์ฑ๋๋ค. MySQL์์ ํ ์ด๋ธ ์คํ์ด์ค๋ ์ ์ฅํ๋ ๋ฐ์ดํฐ์ ์ข ๋ฅ์ ๋ฐ๋ผ์ 5๊ฐ์ง๋ก ๋ถ๋ฅ๊ฐ ๊ฐ๋ฅํ๋ฐ, ์ด๋ ๋ค์๊ณผ ๊ฐ๋ค. - System tablespace - File-Per-Table tablespace - General Tablespace - Temporary Tablespace - Undo Tablespace ๐ฑ System tablespaceSystem tablespace์ ๊ฒฝ์ฐ My..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ด๋ฒ ํฌ์คํ ์์๋ InnoDB์ ์ ๋ฐ์ ์ธ ์ํคํ ์ฒ ์ค์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ํด์ ์์๋ณด์. ์๋นํ ๋ณต์กํ๊ธฐ ๋๋ฌธ์ ๋๋ต์ ์ธ ๋ด์ฉ๋ง ์ดํดํ๊ณ ๋์ด๊ฐ๋ ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํ๋ค. ๐ฑ InnoDB ๋ฒํผ ํ (Buffer Pool)์ ๊ทธ๋ฆผ์ MySQL 8.0 ๊ธฐ์ค InnoDB ๊ตฌ์กฐ๋ฅผ ๋ํ๋ธ ๊ทธ๋ฆผ์ด๋ค. ์ด์ค์์ ๋ฒํผ ํ์ ๊ฒฝ์ฐ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๊ฐ์ฅ ํต์ฌ์ ์ธ ๋ถ๋ถ์ด๋ค. ๋์คํฌ์ ๋ฐ์ดํฐ ํ์ผ, ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์๋ ํด๋ ์ ์๊ณ , ์ฐ๊ธฐ ์์ ์ ์ง์ฐ์์ผ์ ์ผ๊ด ์ฒ๋ฆฌ๋ ๊ฐ๋ฅํ๋ค.๐ก ๊ทธ๋ ๋ค๋ฉด ํฌ๊ธฐ๋ ์ด๋ ์ ๋๋ก ์ค์ ํด์ผ ํ ๊น? ๋ณดํต OS ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด 8๊ธฐ๊ฐ ์ดํ๋ผ๋ฉด 50% ์ ๋๋ง ๋ฒํผ ํ๋ก ์ค์ ํ๊ณ , ๋๋จธ์ง๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ ๊ณต๊ฐ์ผ๋ก ๋จ๊ฒจ๋๋ ๊ฒ์ด ์ข๋ค. ๋ง์ฝ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ ..
๐ฑ InnoDB ์คํ ๋ฆฌ์ง ์์ง ์ํคํ ์ฒMySQL์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์คํ ๋ฆฌ์ง ์์ง์ธ 'InnoDB'์ ๋ํ ์ํคํ ์ฒ๋ฅผ ์์๋ณด์.๊ทธ๋ฆผ์ด ๋ณต์กํ๊ธฐ๋ ํ์ง๋ง, ์ผ์ชฝ์ ์ด์ ์ ๋ดค๋ MySQL ์์ง์ด๊ณ , ์ค๋ฅธ์ชฝ์ด InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๊ตฌ์ฑ๋์ด๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ innoDB ์คํ ๋ฆฌ์ง ์์ง์ ํน์ง์ ๋ํด์ ์์๋ณด๋๋ก ํ์. 1. PK์ ์ํ ํด๋ฌ์คํฐ๋ง๊ธฐ๋ณธ์ ์ผ๋ก InnoDB์ ๋ชจ๋ ํ ์ด๋ธ์ PK๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋ฌ์คํฐ๋ง๋์ด ์ ์ฅ๋๋ค. ์ฌ๊ธฐ์ ํด๋ฌ์คํฐ๋ง๋๋ค๋ ๊ฒ์, PK ๊ฐ์ด ๋น์ทํ ๋ ์ฝ๋๋ผ๋ฆฌ ๋ฌถ์ด์ ์ ์ฅํ๋ ๊ฒ์ ์๋ฏธํ๋ค. PK ๊ฐ์ด ๋ ์ฝ๋์ ์ ์ฅ ์์น๋ฅผ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ ์คํ๊ฒ ๊ฒฐ์ ํด์ผ ํ๋ค. ์ผ๋ฐ์ ์ธ DBMS์์ ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค์ ๋ฆฌํ ๋ ธ๋์๋ ๋ฐ์ดํฐ์ ์ค์ง์ ์ธ ๋ฌผ๋ฆฌ ์ฃผ์๊ฐ ๋ค์ด๊ฐ์, ํด๋น ์ธ๋ฑ์ค์ ๋ฐ์ด..
๐ฑ MySQL ์ ์ฒด ๊ตฌ์กฐMySQL ์๋ฒ๋ ํฌ๊ฒ MySQL ์์ง๊ณผ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก ๋๋ ์ ์๋ค. MySQL ์์ง์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ ์ํ๊ณ , ์ฟผ๋ฆฌ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ปค๋ฅ์ ํธ๋ค๋ฌ์ SQL ํ์, ์ต์ง๋ง์ด์ ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ฟผ๋ฆฌ ๊ด๋ จ ์ฒ๋ฆฌ๋ ์ด๊ณณ์์ ํ๊ธฐ ๋๋ฌธ์, ๊ฑฐ์ '๋๋'์ ๊ฐ์ ์ญํ ์ ํ๋ฉด ๋๋ค๊ณ ์๊ฐํ์. ์คํ ๋ฆฌ์ง ์์ง์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฅผ ์ค์ ๋์คํฌ์ ์ ์ฅํ๊ฑฐ๋, ํน์ ๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์์ ์ ํ๋ฉฐ ํ๋์ MySQL ์๋ฒ๋ ์ฌ๋ฌ ๊ฐ์ ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ ์ ์๋ค. MySQL ์์ง๊ณผ ์คํ ๋ฆฌ์ง ์์ง์ ์๋ก 'ํธ๋ค๋ฌ API'๋ผ๋ ๊ฒ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ, ์ด๋ ์ ๋์ ๋ฐ์ดํฐ ์์ ์ด ์ผ์ด๋ฌ๋์ง ํ์ธํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค. show global s..