MySQL ๊ฐ์ฒด - ์ธ๋ฑ์ค, ์ํ์ค
MySQL์์ ๋ฐ์ดํฐ ๊ฒ์์ ๋น ๋ฅด๊ฒ ํด์ฃผ๋ย ์ธ๋ฑ์ค์, ์๋์ผ๋ก ์์ฐจ์ ์ธ ์ซ์๋ฅผ ๋ง๋ค์ด์ฃผ๋ย ์ํ์ค์ ๋ํด ์ฝ๊ฒ ์ค๋ช
ํ๊ณ , ์ค์ ์ฑ๋ฅ ์ฐจ์ด๋ฅผ ์ค์ต์ผ๋ก ํ์ธํ๋ ์์์
๋๋ค.
๋ชฉ์ฐจ
1.
2.
3.
4.
5.
6.
7.
8.
์ธ๋ฑ์ค๋? [00:00:36]
โข
์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ย ๊ฒ์ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํด์ฃผ๋ ์๋ฃ ๊ตฌ์กฐ์
๋๋ค.
โข
์ฑ
์ ๋ชฉ์ฐจ๋ ์์ธ๊ณผ ๋น์ทํ ์ญํ ๋ก, ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋นจ๋ฆฌ ์ฐพ๊ฒ ๋์์ค์.
โข
์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒ์๊ณผ ์ ๋ ฌ์ด ๋นจ๋ผ์ง์ง๋ง, ๋ฐ์ดํฐ ์ฝ์
์ด๋ ์์ ์ ์ธ๋ฑ์ค๋ ํจ๊ป ์
๋ฐ์ดํธ๋์ด์ ์ฝ๊ฐ์ ์ถ๊ฐ ์์
๊ณผ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค.
์ธ๋ฑ์ค ์์ฑ๊ณผ ์ญ์ ๋ฐฉ๋ฒ [00:02:46]
โข
์ธ๋ฑ์ค๋ย CREATE INDEX ์ธ๋ฑ์ค๋ช
ON ํ
์ด๋ธ๋ช
(์ปฌ๋ผ๋ช
);์ผ๋ก ๋ง๋ญ๋๋ค.
โข
ํ ๊ฐ ์ปฌ๋ผ๋ฟ ์๋๋ผ ์ฌ๋ฌ ์ปฌ๋ผ์ ๋ฌถ์ด์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค ์๋ ์๊ณ , ์ค๋ณต ์๋ ์ ๋ํฌ ์ธ๋ฑ์ค๋ ์์ฑ ๊ฐ๋ฅํด์.
โข
์์ ์ ๋ฐ๋ก ์๊ณ ํ์ํ๋ฉด ์ญ์ ํ ๋ค์ ๋ง๋ญ๋๋ค. ์ญ์ ๋ย DROP INDEX ์ธ๋ฑ์ค๋ช
ON ํ
์ด๋ธ๋ช
;์ผ๋ก ํฉ๋๋ค.
โข
์ฌ๋ฌ ์ธ๋ฑ์ค๋ฅผ ํ๊บผ๋ฒ์ ์ญ์ ํ ๋ย ALTER TABLE ํ
์ด๋ธ๋ช
DROP INDEX ์ธ๋ฑ์ค๋ช
1, DROP INDEX ์ธ๋ฑ์ค๋ช
2;ย ์ฒ๋ผ ์ฌ์ฉํฉ๋๋ค.
์ธ๋ฑ์ค ์ ์ฉ ์ ํ ์ฑ๋ฅ ๋น๊ต ์ค์ต [00:04:36]
โข
์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ๊ธฐ ์ ๊ณผ ํ์ ์ฟผ๋ฆฌ ์คํ ์๊ฐ์ ๋น๊ตํด ๋ด
๋๋ค.
โข
์๋ก ์ง์ ๋ฐ์ดํฐ์์ ์ฑ(LastName)๊ณผ ์ฑ๋ณ(Gender) ์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ๊ณ , ์ธ๋ฑ์ค ์ ํ ์ฟผ๋ฆฌ ์คํ ์๊ฐ์ ์ธก์ ํฉ๋๋ค.
โข
EXPLAINย ๋ช
๋ น์ด๋ก ์ฟผ๋ฆฌ๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋์ง ํ์ธํ ์ ์๋๋ฐ,ย typeย ์ปฌ๋ผ์ดย ALL์ด๋ฉด ์ธ๋ฑ์ค ๋ฏธ์ฌ์ฉ,ย ref๋ย range๋ฉด ์ธ๋ฑ์ค ์ฌ์ฉ ์ค์์ ๋ปํฉ๋๋ค.
์ธ๋ฑ์ค ์ ๋ณด ํ์ธ๊ณผ ์ฟผ๋ฆฌ ์คํ ์๊ฐ ์ธก์ [00:05:09]
โข
์ฟผ๋ฆฌ ์คํ ์๊ฐ์ย SET profiling = 1;ย ํ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ,ย SHOW PROFILE;๋ก ํ์ธํฉ๋๋ค.
โข
์คํ ์๊ฐ, CPU ์ฌ์ฉ๋ ๋ฑ ์์ธ ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ด ์ธ๋ฑ์ค ํจ๊ณผ๋ฅผ ์์น๋ก ๋น๊ตํ๊ธฐ ์ข์์.
โข
๋ํย performance_schemaย ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ฉํด ๋ ์์ธํ ์ฟผ๋ฆฌ ์คํ ์ ๋ณด๋ฅผ ์กฐํํ ์๋ ์์ต๋๋ค.
์ธ๋ฑ์ค ์์ฑ, ์ญ์ ์ค์ต [00:22:37]
โข
์ค์ ๋กย CREATE INDEX๋ก ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค๊ณ ,ย EXPLAIN์ผ๋ก ์ฟผ๋ฆฌ ๊ณํ ๋ณํ๋ฅผ ํ์ธํฉ๋๋ค.
โข
์ธ๋ฑ์ค ์์ฑ ํ ์ฟผ๋ฆฌ ์คํ ์๊ฐ์ด ์ธ๋ฑ์ค ์์ฑ ์ ๋ณด๋ค ํ์คํ ์ค์ด๋๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
โข
๋ง์ง๋ง์ผ๋กย DROP INDEX๋ก ์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ๋ ๋ฐฉ๋ฒ๋ ์ค์ตํฉ๋๋ค.
์ํ์ค๋? [00:30:42]
โข
์ํ์ค๋ย ์๋์ผ๋ก ์์ฐจ์ ์ธ ์ซ์๋ฅผ ๋ง๋ค์ด๋ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์
๋๋ค.
โข
์ฃผ๋ก ๊ธฐ๋ณธ ํค ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, ์์ ์ซ์, ์ฆ๊ฐ ๋จ์, ์ต์/์ต๋๊ฐ, ๋ฐ๋ณต ์ฌ๋ถ(์ฌ์ดํด) ๋ฑ์ ์ค์ ํ ์ ์์ต๋๋ค.
โข
์๋ฅผ ๋ค์ด 1๋ถํฐ ์์ํด 3์ฉ ์ฆ๊ฐํ๊ฑฐ๋, ์ต๋๊ฐ์ ๋๋ฌํ๋ฉด ๋ค์ 1๋ถํฐ ์์ํ๋๋ก ์ค์ ๊ฐ๋ฅํด์.
MySQL์์ ์ํ์ค ์ง์ ํํฉ๊ณผ ๋์ [00:36:29]
โข
MySQL 8๋ฒ์ ๋ถํฐ ์ํ์ค ๊ฐ์ฒด๊ฐ ๋์
๋๋ค๊ณ ํ์ง๋ง, ์ค์ ๋ก๋ ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
โข
๋์ MySQL์์๋ย AUTO_INCREMENTย ์ต์
์ ์ฌ์ฉํด ๊ธฐ๋ณธ ํค ์ปฌ๋ผ์ ์๋ ์ฆ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
โข
์ํ์ค๋ฅผ ์ง์ ์ง์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ค๋ผํด, ๋ง๋ฆฌ์DB(10.3๋ฒ์ ์ด์) ๋ฑ์ด ์์ต๋๋ค.
์คํ ์ธํฌ๋ฆฌ๋จผํธ์ ํ
์ด๋ธ์ ์ด์ฉํ ์ํ์ค ๋์ฒด ๋ฐฉ๋ฒ [00:38:37]
โข
MySQL์์ ์ํ์ค ๋์ ย AUTO_INCREMENT๋ฅผ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
โข
๋๋ ๋ณ๋์ ํ
์ด๋ธ์ ๋ง๋ค์ด ์ซ์๋ฅผ ์ ์ฅํ๊ณ , ์
๋ฐ์ดํธํ๋ฉฐ ์์ฐจ ๋ฒํธ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค.
โข
์๋ฅผ ๋ค์ดย sequence_numberย ํ
์ด๋ธ์ ํ์ฌ ๋ฒํธ๋ฅผ ์ ์ฅํ๊ณ , ๋ฒํธ๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
โข
์ด ๋ฐฉ๋ฒ์ ์ง์ ์ํ์ค๋ฅผ ์ง์ํ๋ DB๋ณด๋ค๋ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์์ง๋ง, MySQL ํ๊ฒฝ์์ ์ํ์ค ๊ธฐ๋ฅ์ ํ๋ด ๋ผ ์ ์์ต๋๋ค.
๋ง๋ฌด๋ฆฌ ์์ฝ
์ด ์์์์๋ MySQL์์ย ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ฐ์ดํฐ ๊ฒ์ ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํค๋ ๋ฐฉ๋ฒ๊ณผ, ์ธ๋ฑ์ค ์์ฑ/์ญ์ ๋ฐ ์ฑ๋ฅ ์ธก์ ์ค์ต์ ๋ณด์ฌ์ค๋๋ค. ๋ํ, ์์ฐจ์ ์ธ ์ซ์๋ฅผ ์๋ ์์ฑํ๋ย ์ํ์คย ๊ฐ๋
๊ณผ MySQL์์ ์ํ์ค ์ง์ ํํฉ, ๊ทธ๋ฆฌ๊ณ ๋์ฒด ๋ฐฉ๋ฒ์ผ๋กย AUTO_INCREMENT์ ํ
์ด๋ธ์ ํ์ฉํ๋ ๋ฐฉ์์ ์ค๋ช
ํฉ๋๋ค. ์ธ๋ฑ์ค๋ ๊ฒ์์ ๋น ๋ฅด๊ฒ ํ๋ ๋ชฉ์ฐจ ๊ฐ์ ์ญํ ์ด๊ณ , ์ํ์ค๋ ๋ฒํธํ๋ฅผ ์๋์ผ๋ก ๋ฝ์์ฃผ๋ ๊ธฐ๊ณ๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํด๊ฐ ์ฌ์์!