์นผ๋ผ์ ๋ฐ์ดํฐ ํ์ ๊ณผ ๊ธธ์ด๋ฅผ ์ ์ ํ ๋ ๊ฐ์ฅ ์ฃผ์ํ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ ์ฅ๋๋ ๊ฐ์ ์ฑ๊ฒฉ์ ๋ง๋ ์ต์ ์ ํ์ ์ ์
- ๊ฐ๋ณ ๊ธธ์ด ์นผ๋ผ์ ์ต์ ์ ๊ธธ์ด ์ ์
- ์กฐ์ธ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉ๋๋ ์นผ๋ผ์ ๋๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ผ๋ก ์ ์
CHAR์ VARCHAR์ ๊ณตํต์ ์ ๋ฌธ์์ด์ ์ ์ฅํ ์ ์๋ ๋ฐ์ดํฐ ํ์ ์ด๋ผ๋ ์ ์ด๊ณ , ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ๊ณ ์ ๊ธธ์ด๋ ๊ฐ๋ณ ๊ธธ์ด๋๋ค.
ํ๋์ ๊ธ์๊ฐ CHAR ํ์ ์ ์ ์ฅ๋ ๋๋ ์ถ๊ฐ ๊ณต๊ฐ์ด ๋ ํ์ํ์ง ์์ง๋ง VARCHAR ํ์ ์ ์ ์ฅํ ๋๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ 1~2 ๋ฐ์ดํธ์ ๊ณต๊ฐ์ ์ถ๊ฐ๋ก ๋ ์ฌ์ฉํ๋ค. VARCHAR ํ์ ์ ๊ธธ์ด๊ฐ 255๋ฐ์ดํธ ์ดํ์ด๋ฉด 1๋ฐ์ดํธ๋ง ์ฌ์ฉํ๊ณ , 256๋ฐ์ดํธ ์ด์์ผ๋ก ์ค์ ๋๋ฉด 2๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ๋ค. VARCHAR ํ์ ์ ๊ธธ์ด ๊ด๋ฆฌ ์ต๋ ๋ฐ์ดํธ๋ 2๋ฐ์ดํธ๋ก, ์ฆ VARCHAR ํ์ ์ ์ต๋ ๊ธธ์ด๋ 65,536 ๋ฐ์ดํธ์ด๋ค.
์ฌ๋๋ค์ ๋ณดํต ๊ธธ์ด๊ฐ ๊ณ ์ ์ ์ผ ๋ CHAR๋ฅผ ์ ํํ๊ณ , ๊ธธ์ด๊ฐ ๊ฐ๋ณ์ ์ผ ๋ VARCHAR๋ฅผ ์ ํํ๋ค. ํ์ง๋ง ์ค์ ๋ก ๊ธธ์ด๊ฐ ์ ์ ์ด๋ ๊ฐ๋ณ์ ์ด๋๋ง์ผ๋ก CHAR์ VARCHAR ํ์ ์ ๊ฒฐ์ ํ๋ ๊ฒ์ ์ ์ ํ์ง ์๋ค.
- ์ ์ฅ๋๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๋๊ฐ ๋น์ทํ์ง
- ์นผ๋ผ์ ๊ฐ์ด ์์ฃผ ๋ณ๊ฒฝ๋๋์ง
CHAR์ VARCHAR ํ์ ์ ์ ํ ๊ธฐ์ค์ ๊ฐ์ ๊ธธ์ด๋ ์ค์ํ์ง๋ง, ํด๋น ์นผ๋ผ์ ๊ฐ์ด ์ผ๋ง๋ ์์ฃผ ๋ณ๊ฒฝ๋๋๋๊ฐ ๊ธฐ์ค์ด ๋ผ์ผ ํ๋ค.
CREATE TABLE tb_test (
fd1 INT NOT NULL,
fd2 CHAR(10) NOT NULL,
fd3 DATETIME NOT NULL
);
INSERT INTO tb_test (fd1, fd2, fd3) VALUES (1, 'ABCD', '2011-06-27 11:02:11');
์ฌ๊ธฐ์ ๋ง์ฝ fd2 ์นผ๋ผ์ ๊ฐ์ "ABCDE"๋ก UPDATEํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด
- CHAR(10) ํ์ ์์๋ fd2 ์นผ๋ผ์ ์ํด ๊ณต๊ฐ์ด 10๋ฐ์ดํธ๊ฐ ์ค๋น๋ผ ์์ผ๋ฏ๋ก ๊ทธ๋ฅ ๋ณ๊ฒฝ๋๋ ์นผ๋ผ์ ๊ฐ์ ์ ๋ฐ์ดํธ๋ง ํ๋ฉด ๋๋ค.
- VARCHAR(10) ํ์ ์์๋ fd2 ์นผ๋ผ์ 4๋ฐ์ดํธ ๋ฐ์ ์ ์ฅํ ์ ์๋ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ ธ ์๋ค. ๊ทธ๋์ "ABCDE"์ ๊ฐ์ด ๊ธธ์ด๊ฐ ๋ ํฐ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋ ๋๋ ๋ ์ฝ๋ ์์ฒด๋ฅผ ๋ค๋ฅธ ๊ณต๊ฐ์ผ๋ก ์ฎ๊ฒจ์(Row migration) ์ ์ฅ ํด์ผ ํ๋ค.
๋ฌผ๋ก ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ์ฒ๋ผ ํญ์ ๊ฐ์ ๊ธธ์ด๊ฐ ๊ณ ์ ์ ์ผ ๋๋ ๋น์ฐํ CHAR ํ์ ์ ์ฌ์ฉํด์ผ ํ๋ค. ๋ํ ๊ฐ์ด 2~3๋ฐ์ดํธ์ฉ ์ฐจ์ด๊ฐ ๋๋๋ผ๋ ์์ฃผ ๋ณ๊ฒฝ๋ ์ ์๋ ๋ถ์ ๋ฒํธ๋ ๊ฒ์๋ฌผ์ ์ํ ๊ฐ ๋ฑ์ CHAR ํ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ์์ฃผ ๋ณ๊ฒฝ๋ผ๋ ๋ ์ฝ๋๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ค๋ฅธ ์์น๋ก ์ด๋ํ๊ฑฐ๋ ๋ถ๋ฆฌ๋์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
VARCHAR ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ฉํ๋ ์นผ๋ผ์ ๊ธธ์ด๋ฅผ ๋๋ฆฌ๋ ์์ ์ ๊ธธ์ด์ ๋ฐ๋ผ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋ ์๋ ์์ง๋ง ์ด๋ค ๊ฒฝ์ฐ์๋ ํ ์ด๋ธ์ ๋ํด ์ฝ๊ธฐ ์ ๊ธ์ ๊ฑธ๊ณ ๋ ์ฝ๋๋ฅผ ๋ณต์ฌํ๋ ์์ ์ด ํ์ํ ์๋ ์๋ค.
CREATE TABLE test (
id INT PRIMARY KEY,
value VARCHAR(60)
) DEFAULT CHARSET=utf8mb4;
ALTER TABLE test MODIFY value VARCHAR(63), ALGORITHM=INPLACE, LOCK=NONE;
Query OK, 0 rows affected (0.00 sec)
ALTER TABLE test MODIFY value VARCHAR(64), ALGORITHM=INPLCAE, LOCK=NONE;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
value ์นผ๋ผ์ ๊ธธ์ด๋ฅผ VARCHAR(63)์ผ๋ก ๋๋ฆฌ๋ ๊ฒฝ์ฐ๋ ์ ๊ธ ์์ด ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋ณ๊ฒฝ๋์ง๋ง, VARCHAR(64)๋ก ๋๋ฆฌ๋ ๊ฒฝ์ฐ๋ INPLACE ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์คํค๋ง ๋ณ๊ฒฝ์ด ํ์ฉ๋์ง ์๋๋ค.
VARCHAR(64)๋ก ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด COPY ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์คํค๋ง ๋ณ๊ฒฝ์ ์คํํ์ผ๋ฉฐ, ์คํค๋ง ๋ณ๊ฒฝ ์๊ฐ๋ ์๋นํ ๋ง์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค. COPY ์๊ณ ๋ฆฌ์ฆ์ ์คํค๋ง ๋ณ๊ฒฝ์ ์ฝ๊ธฐ ์ ๊ธ๊น์ง ํ์๋ก ํ๋ค. ์ฆ ์คํค๋ง ๋ณ๊ฒฝ์ ํ๋ ๋์ test ํ ์ด๋ธ์๋ INSERT๋ UPDATE, DELETE๋ฅผ ์คํํ ์ ์๊ฒ๋๋ค.
์ด๋ฌํ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ VARCHAR ํ์ ์ ์ปฌ๋ผ์ด ๊ฐ์ง๋ ๊ธธ์ด ์ ์ฅ ๊ณต๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ด๋ค. utf8mb4 ๋ฌธ์ ์งํฉ์ ์ฌ์ฉํ๋ VARCHAR(60) ์นผ๋ผ์ ์ต๋ ๊ธธ์ด๊ฐ 240๋ฐ์ดํธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด ๊ฐ ๊ธธ์ด๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ด 1๋ฐ์ดํธ๋ฉด ๋์ง๋ง, VARCHAR(64) ํ์ ์ ์ ์ฅํ ์ ์๋ ๋ฌธ์์ด์ ํฌ๊ธฐ๊ฐ ์ต๋ 256 ๋ฐ์ดํธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ 2๋ฐ์ดํธ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค.
๋ฌธ์์ด ๊ธธ์ด๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๋ฐ๋๊ฒ ๋๋ฉด MySQL ์๋ฒ๋ ์คํค๋ง ๋ณ๊ฒฝ์ ํ๋ ๋์ ์ฝ๊ธฐ ์ ๊ธ์ ๊ฑธ์ด์ ์๋ฌด๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ๋ชปํ๋๋ก ๋ง๊ณ ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ๋ณต์ฌํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ค. ๋ ์ฝ๋ ๊ฑด์๊ฐ ๋ง์ ํ ์ด๋ธ์์ ์ฝ๊ธฐ ์ ๊ธ์ ํ์๋ก ํ๋ ์คํค๋ง ๋ณ๊ฒฝ์ ์คํํ๊ธฐ ์ํด ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ ๋๋ง๋ค ์๋น์ค์ ๊ฐ์ฉ์ฑ์ด ํผ์๋ ์ ์๋ค.
์ฝ๋ ์ด์ ์ ๋ฌธ์์ด ์นผ๋ผ์ ๊ฐ์ ๋ํ ๋น๊ต๋ ์ ๋ ฌ ์์๋ฅผ ์ํ ๊ท์น์ ์๋ฏธํ๋ค. MySQL์ ๋ชจ๋ ๋ฌธ์์ด ํ์ ์นผ๋ผ์ ๋ ๋ฆฝ์ ์ธ ๋ฌธ์ ์งํฉ๊ณผ ์ฝ๋ ์ด์ ์ ๊ฐ์ง๋ค. ๊ฐ ์นผ๋ผ์ ๋ํด ๋ ๋ฆฝ์ ์ผ๋ก ์ง์ ํ์ง ์์ผ๋ฉด MySQL ์๋ฒ๋ DB ๊ธฐ๋ณธ ๋ฌธ์ ์งํฉ๊ณผ ์ฝ๋ ์ด์ ์ด ์๋์ผ๋ก ์ค์ ๋๋ค.
๋ฌธ์ ์งํฉ์ 2๊ฐ ์ด์์ ์ฝ๋ ์ด์ ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ํ๋์ ๋ฌธ์ ์งํฉ์ ์ํ ์ฝ๋ ์ด์ ์ ๋ค๋ฅธ ๋ฌธ์ ์งํฉ๊ณผ ๊ณต์ ํด์ ์ฌ์ฉํ ์ ์๋ค. ๋ํ ํ ์ด๋ธ์ด๋ ์นผ๋ผ์ ๋ฌธ์ ์งํฉ๋ง ์ง์ ํ๋ฉด ํด๋น ๋ฌธ์ ์งํฉ์ ๊ธฐ๋ณธ ์ฝ๋ ์ด์ ์ด ํด๋น ์นผ๋ผ์ ์ฝ๋ ์ด์ ์ผ๋ก ์ง์ ๋๋ค.
-
utf8mb4_0900_ai_ci
- 3๊ฐ์ ํํธ๋ก ๊ตฌ์ฑ๋ ์ฝ๋ ์ด์ ์ด๋ฆ
- ์ฒซ ๋ฒ์งธ ํํธ: ๋ฌธ์ ์งํฉ์ ์ด๋ฆ
- ๋ ๋ฒ์งธ ํํธ: ํด๋น ๋ฌธ์ ์งํฉ์ ํ์ ๋ถ๋ฅ
- ์ธ ๋ฒ์งธ ํํธ: ๋๋ฌธ์๋ ์๋ฌธ์์ ๊ตฌ๋ถ ์ฌ๋ถ๋ฅผ ๋ํ๋ธ๋ค.
ci
์ด๋ฉด ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋ ์ฝ๋ ์ด์ ์ด๋ฉฐ,cs
์ด๋ฉด ๋์๋ฌธ์๋ฅผ ๋ณ๋์ ๋ฌธ์๋ก ๊ตฌ๋ถํ๋ ์ฝ๋ ์ด์ ์ด๋ค.
ai
๋๋as
๋ ์ก์ผํธ๋ฅผ ๊ฐ์ง ๋ฌธ์์ ๊ทธ๋ ์ง ์์ ๋ฌธ์๋ฅผ ๋์ผ ๋ฌธ์๋ก ํ๋จํ ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ธ๋ค.
-
uf8mb4_bin
- ์ฒซ ๋ฒ์งธ ํํธ: ๋ฌธ์ ์งํฉ์ ์ด๋ฆ
- ๋ ๋ฒ์จฐ ํํธ: ํญ์ bin ์ด๋ผ๋ ํค์๋๊ฐ ์ฌ์ฉ๋๋ค. bin์ ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ฉฐ ์ด์ง ๋ฐ์ดํฐ๋ก ๊ด๋ฆฌ๋๋ ๋ฌธ์์ด ์นผ๋ผ์ ๋ณ๋์ ์ฝ๋ ์ด์ ์ ๊ฐ์ง์ง ์๋๋ค.
ํ
์ด๋ธ์ ๊ตฌ์กฐ๋ SHOW CREATE TABLE
๋ช
๋ น์ผ๋ก ํ์ธํ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ์นผ๋ผ์ด ๋ํดํธ ๋ฌธ์ ์งํฉ์ด๋ ์ฝ๋ ์ด์
์ ์ฌ์ฉํ ๋๋ ๋ณ๋๋ก ํ์ํด์ฃผ์ง ์์ผ๋ฏ๋ก ํ์ธํ๊ธฐ ์ด๋ ต๋ค. ์ด๋๋ information_schema DB์ columns ๋ทฐ๋ฅผ ํ์ธํด ๋ณด๋ฉด ๋๋ค.
utf8_unicode_ci
์ฒ๋ผ ๋ณ๋์ ์ซ์ ๊ฐ์ด ๋ช
์๋์ด ์์ง ์๋ ์ฝ๋ ์ด์
์ด ์๊ณ , utf8mb4_0900_ai_ci
์ฒ๋ผ ์ซ์ ๊ฐ์ด ๋ช
์๋์ด ์๋ ์ฝ๋ ์ด์
์ด ์๋๋ฐ
์ด ์ซ์๋ ์ฝ๋ ์ด์
์ ์๊ณ ๋ฆฌ์ฆ ๋ฒ์ ์ ์๋ฏธํ๋ค. ๋ณ๋์ ์ซ์๊ฐ ๋ช
์๋์ด ์์ง ์์ ๊ฒฝ์ฐ UCA 4.0.0 ๋ฒ์ ์ ์๋ฏธํ๋ค.
utf8mb4_0900_ai_ci
์ ๊ฐ์ด ์ธ์ด ๋น์ข
์์ ์ธ ์ฝ๋ ์ด์
์ ๋ฌธ์ ์งํฉ์ ๊ธฐ๋ณธ ์ ๋ ฌ ์์์ ๋ง๊ฒ ์ ๋ ฌ ๋ฐ ๋น๊ต๊ฐ ์ํ๋๋ฉฐ, ์ธ์ด ์ข
์์ ์ธ ์ฝ๋ ์ด์
์
ํด๋น ์ธ์ด์์ ์ ์ํ ์ ๋ ฌ ์์์ ์ํด ์ ๋ ฌ ๋ฐ ๋น๊ต๊ฐ ์ํ๋๋ค. ๊ทธ๋์ ํน์ ์ธ์ด์ ์ข
์์ ์ธ ์ ๋ ฌ ์์๊ฐ ํ์ํ๋ค๋ฉด ๊ทธ ์ธ์ด์ ๋ง๋ ์ฝ๋ ์ด์
์ ์ฌ์ฉํด์ผ ํ๋ค.(utf8mb4_ja_0900_as_cs)
ํ์ง๋ง ๋ฒ์ฉ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ฉด utf8mb4_0900_ai_ci
๋ง์ผ๋ก๋ ์ถฉ๋ถํ๋ค.
UCA 9.0.0 ๋ฒ์ ์ ๊ทธ ์ด์ ๋ฒ์ ์ ์ฝ๋ ์ด์
๋ณด๋ค ๋น ๋ฅด๋ค๊ณ MySQL ๋ฉ๋ด์ผ์์ ์๊ฐํ๊ณ ์์ง๋ง ์ค์ ๋ก ํ
์คํธ๋ฅผ ํด๋ณด๋ฉด ๊ทธ๋ ์ง ์๋ค. ๋ํ UCA 9.0.0 ๋ฒ์ ์
์ฌ์ฉํ๋ ์ฝ๋ ์ด์
์ ๋ชจ๋ NO PAD
์ต์
์ผ๋ก ๋ฌธ์์ด ๋น๊ต ์์
์ด ์ฒ๋ฆฌ๋๋ค๋ ํน์ง์ด ์๋ค. ๊ทธ๋ ๋ค๊ณ ๋จ์ํ ๊ทธ ์ด์ ๋ฒ์ ์ UCA 4.0.0 ์ฝ๋ ์ด์
์ ์ ํํ๋ ๊ฒ์ ์ ์ ํ์ง ์์ผ๋ฉฐ ์ฝ๋ ์ด์
์ ํ์์ ๋ฐ๋ผ ๊ฒฐ์ ํด์ผ ํ๋ ๋ฌธ์ ์ด๋ค.
UCA 9.0.0 ์ฝ๋ ์ด์ ์ ์ต์ ์ ๋ ฌ ์์๋ฅผ ๋ฐ์ํ๊ณ ์๊ณ , ๋ฌธ์์ด ๋ค์ ์กด์ฌํ๋ ๊ณต๋ฐฑ๋ ์ ํจ ๋ฌธ์๋ก ์ทจ๊ธ๋์ด ๋น๊ต๋๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค. ์ด์ ์ฝ๋ ์ด์ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์๋ ํ๋ก๊ทธ๋จ์์ ๋ฌธ์ ์งํฉ๊ณผ ์ฝ๋ ์ด์ ์ ๋ณ๊ฒฝํ๋ ์์ ์ ์ํํ ์ ์๋ค. ์๋ก์ด ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ค๋ฉด ์ฑ๋ฅ๊ณผ ๊ด๊ณ์์ด UCA 9.0.0 ๊ธฐ๋ฐ์ ์ฝ๋ ์ด์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค.
์ซ์๋ฅผ ์ ์ฅํ๋ ํ์ ์ ๊ฐ์ ์ ํ๋์ ๋ฐ๋ผ ํฌ๊ฒ ์ฐธ๊ฐ(Exact value)๊ณผ ๊ทผ์ฟ๊ฐ ํ์ ์ผ๋ก ๋๋ ์ ์๋ค.
- ์ฐธ๊ฐ์ ์์์ ์ดํ ๊ฐ์ ์ ๋ฌด์ ๊ด๊ณ์์ด ๊ทธ ๊ฐ์ ๊ทธ๋๋ก ์ ์งํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฐธ๊ฐ์ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ ํ์ ์ผ๋ก๋ INTEGER๋ฅผ ํฌํจํด INT๋ก ๋๋๋ ํ์ ๊ณผ DECIMAL์ด ์๋ค.
- ๊ทผ์ฟ๊ฐ์ ํํ ๋ถ๋ ์์์ ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฐ์ ์๋ฏธํ๋ฉฐ, ์ฒ์ ์นผ๋ผ์ ์ ์ฅํ ๊ฐ๊ณผ ์กฐํ๋ ๊ฐ์ด ์ ํํ๊ฒ ์ผ์นํ์ง ์๊ณ ์ต๋ํ ๋น์ทํ ๊ฐ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ทผ์ฟ๊ฐ์ ๊ด๋ฆฌํ๋ ํ์ ์ผ๋ก๋ FLOAT์ DOUBLE์ด ์๋ค.
DBMS์์๋ ๊ทผ์ฟ๊ฐ์ ์ ์ฅํ ๋์ ์กฐํํ ๋์ ๊ฐ์ด ์ ํํ ์ผ์นํ์ง ์๊ณ , ์ ํจ ์๋ฆฟ์๋ฅผ ๋์ด์๋ ์์์ ์ดํ์ ๊ฐ์ ๊ณ์ ๋ฐ๋ ์ ์๋ค. ํนํ STATEMENT ํฌ๋งท์ ์ฌ์ฉํ๋ ๋ณต์ ์์๋ ์์ค ์๋ฒ์ ๋ ํ๋ฆฌ์นด ์๋ฒ ๊ฐ ๋ฐ์ดํฐ ์ฐจ์ด๊ฐ ๋ฐ์ํ ์๋ ์๋ค.
MySQL์์ FLOAT๋ DOUBLE๊ณผ ๊ฐ์ ๋ถ๋ ์์์ ํ์ ์ ์ ์ฌ์ฉํ์ง ์๋๋ค. ๋ํ ์ญ์ง ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ DECIMAL ํ์ ์ ์ด์ง ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ ํ์ ๋ณด๋ค ์ ์ฅ ๊ณต๊ฐ์ 2๋ฐฐ ์ด์ ํ์๋ก ํ๋ค. ๋งค์ฐ ํฐ ์ซ์ ๊ฐ์ด๋ ๊ณ ์ ์์์ ์ ์ ์ฅํด์ผ ํ๋ ๊ฒ์ด ์๋๋ผ๋ฉด ์ผ๋ฐ์ ์ผ๋ก INTEGER๋ BIGINT ํ์ ์ ์์ฃผ ์ฌ์ฉํ๋ค.
- TINYINT
- SMALLINT
- MEDIUMINT
- INT
- BIGINT
DECIMAL ํ์ ์ ์ ์ธํ๊ณ ์ ์๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฐ์ดํฐ ํ์ ์ผ๋ก๋ 5๊ฐ์ง๊ฐ ์๋ค. ์ ์ฅ ๊ฐ๋ฅํ ์ซ์ ๊ฐ์ ๋ฒ์๋ง ๋ค๋ฅผ ๋ฟ ๋ค๋ฅธ ์ฐจ์ด๋ ๊ฑฐ์ ์๋ค. ์ ๋ ฅ์ด ๊ฐ๋ฅํ ์์ ๋ฒ์ ๋ด์์ ์ต๋ํ ์ ์ฅ ๊ณต๊ฐ์ ์ ๊ฒ ์ฌ์ฉํ๋ ํ์ ์ ์ ํํ๋ฉด ๋๋ค.
MySQL์์๋ ๋ถ๋ ์์ฎ๋จธ์ ์ ์ฅํ๊ธฐ ์ํด FLOAT์ DOUBLE ํ์ ์ ์ฌ์ฉํ ์ ์๋ค. ๋ถ๋ ์์์ ์ ์ฌ์ฉํ๋ฉด ์ ํจ ์์์ ๊ฐ์ ์๋ณํ๊ธฐ ์ด๋ ต๊ณ ๊ทธ ๊ฐ์ ๋ฐ์ ธ์ ํฌ๋ค ์๋ค ๋น๊ต๋ฅผ ํ๊ธฐ๊ฐ ์ฝ์ง ์์ ํธ์ด๋ค. ๋ถ๋ ์์์ ์ ๊ทผ์ฟ๊ฐ์ ์ ์ฅํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋๋ฑ ๋น๊ต๋ ์ฌ์ฉํ ์ ์๋ค. ์ด ๋ฐ์๋ MySQL ๋งค๋ด์ผ์ ์ดํด๋ณด๋ฉด ๋ถ๋ ์์์ ์ ์ฌ์ฉํ ๋ ์ฃผ์ํ ๋ด์ฉ์ด ๋ง์ผ๋ฏ๋ก ์ฌ์ฉํ๊ธฐ ์ ์ ๋ฐ๋์ ํ์ธํ๋ ๊ฒ์ด ์ข๋ค.
๋ณต์ ์ ์ฐธ์ฌํ๋ MySQL ์๋ฒ์์ ๋ถ๋ ์์์ ์ ์ฌ์ฉํ ๋๋ ํน๋ณํ ์ฃผ์ํด์ผ ํ๋ค. ๋ถ๋ ์์์ ํ์ ์ ๋ฐ์ดํฐ๋ MySQL ์๋ฒ์ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ ํฌ๋งท์ด STATEMENT ํ์ ์ธ ๊ฒฝ์ฐ ๋ณต์ธ์์ ์์ค ์๋ฒ์ ๋ ํ๋ฆฌ์นด ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค.
๋ถ๋ ์์์ ๊ฐ์ ์ ์ฅํด์ผ ํ๋ค๋ฉด ์ ํจ ์์์ ์ ์๋ฆฟ์๋งํผ 10์ ๊ณฑํด์ ์ ์๋ก ๋ง๋ค์ด ๊ทธ ๊ฐ์ ์ ์ ํ์ ์ ์นผ๋ผ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ๋ ์๊ฐํด๋ณผ ์ ์๋ค.
๋ถ๋ ์์์ ์์ ์ ํจ ๋ฒ์ ์ด์ธ์ ๊ฐ์ ๊ฐ๋ณ์ ์ด๋ฏ๋ก ์ ํํ ๊ฐ์ ๋ณด์ฅํ ์ ์๋ค. ์ฆ, ๊ธ์ก์ด๋ ๋์ถ์ด์ ๋ฑ๊ณผ ๊ฐ์ด ๊ณ ์ ๋ ์์์ ๊น์ง ์ ํํ๊ฒ ๊ด๋ฆฌํด์ผ ํ ๋๋ FLOAT๋ DOUBLE ํ์ ์ ์ฌ์ฉํด์๋ ์ ๋๋ค. ๊ทธ๋์ ์์์ ์์น๊ฐ ๊ฐ๋ณ์ ์ด์ง ์์ ๊ณ ์ ์์์ ํ์ ์ ์ํด DECIMAL ํ์ ์ ์ ๊ณตํ๋ค.
DECIMAL ํ์ ์ ์ซ์ ํ๋๋ฅผ ์ ์ฅํ๋ ๋ฐ 1/2 ๋ฐ์ดํธ๊ฐ ํ์ํ๋ฏ๋ก ํ ์๋ฆฌ๋ ๋ ์๋ฆฟ์๋ฅผ ์ ์ฅํ๋ ๋ฐ 1๋ฐ์ดํธ๊ฐ ํ์ํ๊ณ ์ธ ์๋ฆฌ๋ ๋ค ์๋ฆฌ ์ซ์๋ฅผ ์ ์ฅํ๋ ๋ฐ๋ 2๋ฐ์ดํธ๊ฐ ํ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ DECIMAL ํ์ ๊ณผ BIGINT ํ์ ์ ๊ฐ์ ๊ณฑํ๋ ์ฐ์ฐ์ ๊ฐ๋จํ ํ ์คํธํด๋ณด๋ฉด ๋ฏธ์ธํ๊ฒ BIGINT ํ์ ์ด ๋ ๋น ๋ฅด๋ค๋ ์ฌ์ค์ ์ ์ ์๊ณ , ์์๊ฐ ์๋ ์ ์ซ๊ฐ์ ๊ด๋ฆฌํ๊ธฐ ์ํด DECIMAL์ ์ฌ์ฉํ๋ ๊ฑด ์ฑ๋ฅ์์ผ๋ก๋ ๊ณต๊ฐ ์ฌ์ฉ๋ฉด์์ ์ข์ง ์๋ค. ๋จ์ํ ์ ์๋ฅผ ๊ด๋ฆฌํ๊ณ ์ ํ๋ค๋ฉด INTEGER๋ BIGINT๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ถ๋ ์์์ ์ด๋ DECIMAL ํ์ ์ ์ด์ฉํด ์นผ๋ผ์ ์ ์ํ ๋๋ ํ์ ์ ์ด๋ฆ ๋ค์ ๊ดํธ๋ก ์ ๋ฐ๋๋ฅผ ํ์ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค. ์๋ฅผ ๋ค์ด DECIMAL(20, 5)๋ผ๊ณ ์ ์ํ๋ฉด ์ ์๋ถ๋ฅผ 15(=20-5)์๋ฆฌ๊น์ง, ์์๋ถ๋ฅผ 5์๋ฆฌ๊น์ง ์ ์ฅํ ์ ์๋ DECIMAL ํ์ ์ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ DECIMAL(20)์ด๋ผ๊ณ ์ ์ํ๋ ๊ฒฝ์ฐ ์์๋ถ ์์ด 20์๋ฆฌ๊น์ง ์ ์ฅํ ์ ์๋ ํ์ ์ ์นผ๋ผ์ ์์ฑํ๋ค. FLOAT๋ DOUBLEํ์ ์ ์ ์ฅ ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ์ ์ด๋ฏ๋ก ์ ๋ฐ๋๋ฅผ ์กฐ์ ํ๋ค๊ณ ํด์ ์ ์ฅ ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๋ฐ๋์ง๋ ์๋๋ค.
ํ ์ด๋ธ์ PK ๋ฅผ ๊ตฌ์ฑํ๋ ์นผ๋ผ์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ํฌ๊ฑฐ๋ PK๋ก ์ฌ์ฉํ ๋งํ ์นผ๋ผ์ด ์์ ๋๋ ์ซ์ ํ์ ์นผ๋ผ์ AUTO_INCREMENT ์ต์ ์ ์ฌ์ฉํด ์ธ์กฐ ํค๋ฅผ ์์ฑํ ์ ์๋ค. MySQL ์๋ฒ์ ์์คํ ์ค์ ์ ์ด์ฉํด AUTO_INCREMENT ์นผ๋ผ์ ์๋ ์ฆ๊ฐ๊ฐ์ด ์ผ๋ง๊ฐ ๋ ์ง ๋ณ๊ฒฝํ ์ ์๋ค.
AUTO_INCREMENT ์ต์ ์ ์ฌ์ฉํ ์นผ๋ผ์ ๋ฐ๋์ ๊ทธ ํ ์ด๋ธ์์ PK๋ ์ ๋ํฌ ํค์ ์ผ๋ถ๋ก ์ ์ํด์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ PK๋ ์ ๋ํฌ ํค๊ฐ ์ฌ๋ฌ ๊ฐ์ ์นผ๋ผ์ผ๋ก ๊ตฌ์ฑ๋๋ฉด AUTO_INCREMENT ์์ฑ์ ์นผ๋ผ๊ฐ์ด ์ฆ๊ฐํ๋ ํจํด์ด MyISAM๊ณผ InnoDB ์คํ ๋ฆฌ์ง ์์ง์์ ๊ฐ๊ฐ ๋ฌ๋ผ์ง๋ค.
- MyISAM ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ๋ ํ ์ด๋ธ์์๋ AUTO_INCREMENT ์นผ๋ผ์ด PK๋ ์ ๋ํฌ ํค์ ์๋ฌด ์์น์์๋ ์ฌ์ฉ๋ ์ ์๋ค.
- InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ๋ ํ ์ด๋ธ์์๋ AUTO_INCREMENT ์นผ๋ผ์ผ๋ก ์์๋๋ ์ธ๋ฑ์ค(PK๋ ์ผ๋ฐ ์ธ๋ฑ์ค)๋ฅผ ์์ฑํด์ผ ํ๋ค. ์ฆ AUTO_INCREMENT ์นผ๋ผ์ PK์ ๋ค์ชฝ์ ๋ฐฐ์นํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
AUTO_INCREMENT ์นผ๋ผ์ ํ ์ด๋ธ๋น ํ๋๋ง ์ฌ์ฉํ ์ ์๋ค.
MySQL 5.6๋ฒ์ ๋ถํฐ TIME ํ์ ๊ณผ DATETIME, TIMESTAMP ํ์ ์ ๋ฐ๋ฆฌ์ด ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๊ฒ ๋๋ค. ๊ทธ๋์ ์นผ๋ผ์ ์ ์ฅ ๊ณต๊ฐ ํฌ๊ธฐ๋ ๋ฐ๋ฆฌ์ด ๋จ์๋ฅผ ๋ช ์๋ฆฌ๊น์ง ์ ์ฅํ๋๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค. ๋ฐ๋ฆฌ์ด ๋จ์๋ 2์๋ฆฌ๋น 1๋ฐ์ดํธ์ฉ ๊ณต๊ฐ์ด ๋ ํ์ํ๋ค. ๊ทธ๋์ MySQL 8.0์์๋ ๋ง์ดํฌ๋ก์ด๊น์ง ์ ์ฅ ๊ฐ๋ฅํ DATETIME(6) ํ์ ์ 8๋ฐ์ดํธ(5๋ฐ์ดํธ+3๋ฐ์ดํธ)๋ฅผ ์ฌ์ฉํ๋ค.
MySQL์ ๋ ์ง ํ์ ์ ์นผ๋ผ ์์ฒด์ ํ์์กด ์ ๋ณด๊ฐ ์ ์ฅ๋์ง ์์ผ๋ฏ๋ก DATETIME์ด๋ DATEํ์ ์ ํ์ฌ DBMS ์ปค๋ฅ์ ์ ํ์์กด๊ณผ ๊ด๊ณ์์ด ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ ๋ ฅ๋ ๊ฐ์ ๊ทธ๋๋ก ์ ์ฅํ๊ณ ์กฐํํ ๋๋ ๋ณํ์์ด ๊ทธ๋๋ก ์ถ๋ ฅ๋๋ค. ํ์ง๋ง TIMESTAMP๋ ํญ์ UTC ํ์์กด์ผ๋ก ์ ์ฅ๋๋ฏ๋ก ํ์์กด์ด ๋ฌ๋ผ์ ธ๋ ๊ฐ์ด ์๋์ผ๋ก ๋ณด์ ๋๋ค.
๊ทธ๋ฐ๋ฐ MySQL ์๋ฒ์์ ์นผ๋ผ ํ์ ์ด TIMESTAMP๋ DATETIME์ด๋ ๊ด๊ณ์์ด, JDBC ๋๋ผ์ด๋ฒ๋ ๋ ์ง ๋ฐ ์๊ฐ ์ ๋ณด๋ฅผ MySQL ํ์์กด์์ JVM์ ํ์์กด์ผ๋ก ๋ณํํด์ ์ถ๋ ฅํ๋ค. ORM์ ์ฌ์ฉํ ๋๋ ORM์ด ์ฝ๋ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ ์๋์ผ๋ก ํ์นํด์ ์์ฉ ํ๋ก๊ทธ๋จ ์ฝ๋๋ก ๋ณํํ๊ธฐ ๋๋ฌธ์ DATETIME ํ์ ์ ์นผ๋ผ๊ฐ์ ์ด๋ค JDBC API๋ฅผ ์ด์ฉํด์ ํ์นํ๋์ง ํ ์คํธํ๋ ๊ฒ์ด ์ข๋ค.
ENUM ํ์
์ ๊ฐ์ฅ ํฐ ๋จ์ ์ ์นผ๋ผ์ ์ ์ฅ๋๋ ๋ฌธ์์ด ๊ฐ์ด ํ
์ด๋ธ์ ๊ตฌ์กฐ๊ฐ ๋๋ฉด์ ๊ธฐ๋ณธ ENUM ํ์
์ ์๋ก์ด ๊ฐ์ ์ถ๊ฐํด์ผ ํ๋ค๋ฉด ํ
์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ค.
์์ MySQL ์๋ฒ์์ ENUM ํ์
์ ์์ดํ
์ด ์๋ก ์ถ๊ฐ๋๋ฉด ํ
์ด๋ธ์ ํญ์ ๋ฆฌ๋น๋ํด์ผ ํ๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ก ์ธํด MySQL ์๋ฒ์์ ENUM ํ์
์ ๋ณ๋ก ์ฌ์ฉ๋์ง ์์๋ค.
ํ์ง๋ง 5.6๋ฒ์ ๋ถํฐ๋ ์๋ก ์ถ๊ฐ๋๋ ์์ดํ
์ด ENUM ํ์
์ ์ ์ผ ๋ง์ง๋ง์ผ๋ก ์ถ๊ฐ๋๋ ํํ
๋ผ๋ฉด ํ
์ด๋ธ์ ๊ตฌ์กฐ(๋ฉํ๋ฐ์ดํฐ) ๋ณ๊ฒฝ๋ง์ผ๋ก ์ฆ์ ์๋ฃ๋๋ค.
๋ง์ง๋ง์ ์๋ก์ด ์์ดํ ์ ์๋ก ์ถ๊ฐํ๋ ์์ ์ INSTANT ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฉํ๋ฐ์ดํฐ ๋ณ๊ฒฝ๋ง์ผ๋ก ์๋ฃ๋๋ค๋ ๊ฒ์ ์ ์ ์์ง๋ง, ๊ธฐ์กด ENUM ํ์ ์ ์์ดํ ๋ค์ด ์์๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์๋ก์ด ์์ดํ ์ด ์ถ๊ฐ๋๋ ๊ฒฝ์ฐ์๋ COPY ์๊ณ ๋ฆฌ์ฆ์ ์ฝ๊ธฐ ์ ๊ธ๊น์ง ํ์ํ๋ค. ํ ์ด๋ธ์ด ๋งค์ฐ ํฌ๋ค๋ฉด ๊ฐ๋ ์ฑ์ด ์ข ๋จ์ด์ง๋๋ผ๋ ์๋ก์ด ์์ดํ ์ ENUM ํ์ ์ ๋ง์ง๋ง์ ์ถ๊ฐํ๋ ๊ฒ์ด MySQL ์๋ฒ์ ๊ฐ์ฉ์ฑ์ ๋์ด๋ ๋ฐฉ๋ฒ์ด๋ค.
ENUM ํ์ ์ ํ ์ด๋ธ ๊ตฌ์กฐ์ ์ ์๋ ์ฝ๋ ๊ฐ๋ง ์ฌ์ฉํ ์ ์๊ฒ ๊ฐ์ ํ๋ค๋ ์ฅ์ ๋ ์์ง๋ง, ๋ ํฐ ์ฅ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ๋์คํฌ ์ ์ฅ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ์ค์ฌ์ค๋ค๋ ๊ฒ์ด๋ค. ํ ์ด๋ธ ๋ ์ฝ๋ ๊ฑด์๊ฐ ๋ง์ง ์๋ค๋ฉด ๋์คํฌ ์ฌ์ฉ๋์ ํฐ ์ฅ์ ์ด ์๋ ์๋ ์๋ค. ํ์ง๋ง ๋ ์ฝ๋๊ฐ ์ต ๋จ์๋ฅผ ๋์ด๊ฐ๋ค๋ฉด 10๊ธ์~20๊ธ์๋ฅผ ๋์ด์๋ ๋ฌธ์์ด ์นผ๋ผ๋ณด๋ค ENUM ํ์ ์ด ๋งค์ฐ ์์ 1~2GB ์ ์ฅ ๊ณต๊ฐ์ ์ค์ผ ์ ์๋ค. ์ด ์นผ๋ผ์ด ์ฌ๋ฌ ๊ฐ์ ์ธ๋ฑ์ค์ ์ฌ์ฉ๋๋ค๋ฉด ์ฉ๋์ ๋ช ๋ฐฐ๋ก ์ค์ด๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
๋์คํฌ์ ๋ฐ์ดํฐ๋ InnoDB ๋ฒํผ ํ๋ก ์ ์ฌ๋ผ์ผ ์ฟผ๋ฆฌ์์ ๋น๋ก์ ์ฌ์ฉ๋ ์ ์๊ธฐ ๋๋ฌธ์, ๋์คํฌ ๋ฐ์ดํฐ๊ฐ ํฌ๋ค๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ ๊ทธ๋งํผ ๋ง์ด ํ์ํด์ง๋ค๋ ์ด์ผ๊ธฐ๋ค. ๊ทธ๋งํผ ENUM์ ์ฅ์ ์ด ๋งค์ฐ ํฌ๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ ๊ฐ ํจ๊ณผ๋ฅผ ๋นผ๋๋ผ๋ ๋์คํฌ์ ์ฌ์ฉ๋์ด ์ ๋ค๋ฉด ๋ฐฑ์ ์ด๋ ๋ณต๊ตฌ ์๊ฐ์ ์ค์ผ ์ ์๊ธฐ ๋๋ฌธ์ ์ฅ์ ์ด ๋๋ค. ๋น์ฅ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ฐ ๋ฐฑ์ ํ์ผ์ ๋ณต์ฌํ๋๋ฐ 3~4์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๋ฉด ์ด ์๊ฐ๋์์ ์๋น์ค๊ฐ ๋ถ๊ฐ๋ฅํด์ง๋ค๋ ๊ฒ์ด๋ค. ENUM ํ์ ์ ๋๋์๋ผ๋ ๊ฐ๋ฅํ๋ฉด ๋์คํฌ์ ๋ฐ์ดํฐ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒ์ด ์ฑ๋ฅ๊ณผ ์ด์์ ๋ง์ ๋์์ด ๋๋ค.
SET ํ์ ๋ ํ ์ด๋ธ์ ๊ตฌ์กฐ์ ์ ์๋ ์์ดํ ์ ์ ์ซ๊ฐ์ผ๋ก ๋งคํํด์ ์ ์ฅํ๋ ๋ฐฉ์์ ENUM๊ณผ ๋๊ฐ๋ค. ๊ทธ๋ฐ๋ฐ SET์ ํ๋์ ์นผ๋ผ์ 1๊ฐ ์ด์์ ๊ฐ์ ์ ์ฅํ ์ ์๋ค. ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ ์ฅํ ์๋ ์์ง๋ง ์ค์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ ๊ฐ์ง๋ ๊ฒ์ ์๋๋ค. SET ํ์ ์ ์์ดํ ์ ๊ฐ์ ๋ฉค๋ฒ ์๊ฐ 8๊ฐ ์ดํ์ด๋ฉด 1๋ฐ์ดํธ์ ์ ์ฅ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ฉฐ 9๊ฐ์์ 16๊ฐ ์ดํ์ด๋ฉด 2๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ๊ณ ๋๊ฐ์ ๋ฐฉ์์ผ๋ก ์ต๋ 8๋ฐ์ดํธ๊น์ง ์ ์ฅ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ค.
MySQL์์ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ค๋ฉด TEXT๋ BLOB ํ์ ์ ์ฌ์ฉํด์ผ ํ๋๋ฐ, ์ด ๋ ํ์ ์ ๋ง์ ๋ถ๋ถ์์ ๊ฑฐ์ ๋๊ฐ์ ์ค์ ์ด๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค. ๊ฑฐ์ ์ ์ผํ ์ฐจ์ด์ ์ TEXT ํ์ ์ ๋ฌธ์์ด์ ์ ์ฅํ๋ ๋์ฉ๋ ์นผ๋ผ์ด๋ผ์ ๋ฌธ์ ์งํฉ์ด๋ ์ฝ๋ ์ด์ ์ ๊ฐ์ง๋ค๋ ๊ฒ์ด๊ณ , BLOB ํ์ ์ ์ด์ง ๋ฐ์ดํฐ ํ์ ์ด๋ผ์ ๋ณ๋์ ๋ฌธ์ ์งํฉ์ด๋ ์ฝ๋ ์ด์ ์ ๊ฐ์ง์ง ์๋๋ค๋ ๊ฒ์ด๋ค.
TEXT๋ BLOB ํ์ ์ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- ์นผ๋ผ ํ๋์ ์ ์ฅ๋๋ ๋ฌธ์์ด์ด๋ ์ด์ง ๊ฐ์ ๊ธธ์ด๊ฐ ์์ธกํ ์ ์์ด ํด ๋ TEXT๋ BLOB์ ์ฌ์ฉํ๋ค. ํ์ง๋ง ๋ค๋ฅธ DBMS์๋ ๋ฌ๋ฆฌ MySQL ์์๋ ๊ฐ์ ํฌ๊ธฐ๊ฐ 4000๋ฐ์ดํธ๋ฅผ ๋์ ๋ ๋ฐ๋์ BLOB์ด๋ TEXT๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ ์๋๋ค. MySQL์์๋ ๋ ์ฝ๋์ ์ ์ฒด ํฌ๊ธฐ๊ฐ 64KB๋ฅผ ๋์ง ์๋ ํ๋ ๋ด์์๋ VARCHAR๋ VARBINARY์ ๊ธธ์ด๋ ์ ํ์ด ์๋ค. ๊ทธ๋์ ์ฉ๋์ ๋ฐ๋ผ์๋ 4000 ๋ฐ์ดํธ ์ด์์ ๊ฐ์ ์ ์ฅํ๋ ์นผ๋ผ๋ VARCHAR๋ VARBINARY ํ์ ์ ์ด์ฉํ ์ ์๋ค.
- MySQL์์๋ ๋ฒ์ ์ ๋ฐ๋ผ ์กฐ๊ธ์ฉ ์ฐจ์ด๋ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ๋ ์ฝ๋๋ ์ ์ฒด ํฌ๊ธฐ๊ฐ 64KB๋ฅผ ๋์ด์ค ์ ์๋ค. VARCHAR๋ VARBINARY์ ๊ฐ์ ๊ฐ๋ณ ๊ธธ์ด ์นผ๋ผ์ ์ต๋ ์ ์ฅ ๊ฐ๋ฅ ํฌ๊ธฐ๋ฅผ ํฌํจํด 64KB๋ก ํฌ๊ธฐ๊ฐ ์ ํ๋๋ค. ๋ ์ฝ๋์ ์ ์ฒด ํฌ๊ธฐ๊ฐ 64KB๋ฅผ ๋์ด์์ ๋ ํฐ ์นผ๋ผ์ ์ถ๊ฐํ ์ ์๋ค๋ฉด ์ผ๋ถ ์นผ๋ผ์ TEXT๋ BLOB ํ์ ์ผ๋ก ์ ํํด์ผ ํ ์๋ ์๋ค.
MySQL ์๋ฒ์ ๊ฐ์ ์นผ๋ผ์ ํฌ๊ฒ ๊ฐ์ ์นผ๋ผ๊ณผ ์คํ ์ด๋ ์นผ๋ผ์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
CREATE TABLE tb_virtual_column {
id INT NOT NULL AUTO_INCREMENT,
price DECIMAL(10, 2) NOT NULL DEFAULT '0.00',
quantity INT NOT NULL DEFAULT 1,
total_price DECIMAL(10, 2) AS (quantity * price) VIRTUAL,
PRIMARY KEY (id)
);
CREATE TABLE tb_stored_column {
id INT NOT NULL AUTO_INCREMENT,
price DECIMAL(10, 2) NOT NULL DEFAULT '0.00',
quantity INT NOT NULL DEFAULT 1,
total_price DECIMAL(10, 2) AS (quantity * price) STORED,
PRIMARY KET (id)
);
๊ฐ์ ์นผ๋ผ๊ณผ ์คํ ์ด๋ ์นผ๋ผ ๋ชจ๋ ์นผ๋ผ ์ ์ ๋ค์ AS ์ ๋ก ๊ณ์ฐ์์ ์ ์ํ๋ค. ์ด๋ ๋ง์ง๋ง์ STORED ํค์๋๊ฐ ์ฌ์ฉ๋๋ฉด ์คํ ์ด๋ ์นผ๋ผ์ผ๋ก ์์ฑ๋๋ฉฐ, ๊ทธ ์ด์ธ์ ๊ฒฝ์ฐ์๋ ํญ์ ๊ฐ์ ์นผ๋ผ์ผ๋ก ์ ์๋๋ค. ์ฆ ์๋ฌด๋ฐ ํค์๋๋ ์ ์๋์ง ์์ผ๋ฉด MySQL ์๋ฒ๋ ๊ธฐ๋ณธ ๋ชจ๋์ธ VIRTUAL๋ก ์นผ๋ผ์ ์์ฑํ๋ค. ๊ฐ์ ์นผ๋ผ์ ๋ค๋ฅธ ์นผ๋ผ์ ๊ฐ์ ์ฐธ์กฐํด์ ๊ณ์ฐ๋ ๊ฐ์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ํญ์ AS ์ ๋ค์๋ ๊ณ์ฐ์์ด๋ ๋ฐ์ดํฐ ๊ฐ๊ณต์ ์ํ ํํ์์ ์ ์ํ๋ค.
- ๊ฐ์ ์นผ๋ผ
์นผ๋ผ์ ๊ฐ์ด ๋์คํฌ์ ์ ์ฅ๋์ง ์์
- ์นผ๋ผ์ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ ํ ์ด๋ธ ๋ฆฌ๋น๋๋ฅผ ํ์๋ก ํ์ง ์์
- ์นผ๋ผ์ ๊ฐ์ ๋ ์ฝ๋๊ฐ ์ฝํ๊ธฐ ์ ๋๋ BEFORE ํธ๋ฆฌ๊ฑฐ ์คํ ์งํ์ ๊ณ์ฐ๋์ด ๋ง๋ค์ด์ง
- ์คํ ์ด๋ ์นผ๋ผ
์นผ๋ผ์ ๊ฐ์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋์คํฌ์ ์ ์ฅ๋จ
- ์นผ๋ผ์ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ ๋ค๋ฅธ ์ผ๋ฐ ํ ์ด๋ธ๊ณผ ๊ฐ์ด ํ์ ์ ํ ์ด๋ธ ๋ฆฌ๋น๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ ๋จ
- INSERT์ UPDATE ์์ ์๋ง ์นผ๋ผ์ ๊ฐ์ด ๊ณ์ฐ๋จ
๊ฐ์ ์นผ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ํ ์ด๋ธ์ ๋ ์ฝ๋๋ ๊ฐ์ ์นผ๋ผ์ ํฌํจํ์ง ์์ง๋ง ํด๋น ์ธ๋ฑ์ค๋ ๊ณ์ฐ๋ ๊ฐ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์, ์ธ๋ฑ์ค๊ฐ ์์ฑ๋ ๊ฐ์ ์นผ๋ผ์ ๊ฒฝ์ฐ ๋ณ๊ฒฝ์ด ํ์ํ๋ค๋ฉด ์ธ๋ฑ์ค ๋ฆฌ๋น๋ ์์ ์ด ํ์ํ ์ ์๋ค. ๊ฐ์ ์นผ๋ผ๊ณผ ์คํ ์ด๋ ์นผ๋ผ ์ค ์ด๋ค ๊ฒ์ ์ ํํด์ผ ํ ์ง๋ ๊ฐ ์ฐจ์ด์ ์ ์ด์ฉํด ์ด๋ ต์ง ์๊ฒ ํ๋จํ ์ ์๋ค. ๊ฐ์ ์นผ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ์์ ์ ๋งค๋ฒ ๊ณ์ฐ๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์นผ๋ผ์ ๊ฐ์ ๊ณ์ฐํ๋ ๊ณผ์ ์ด ๋ณต์กํ๊ณ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ฉด ์คํ ์ด๋ ์นผ๋ผ์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ฑ๋ฅ ํฅ์์ ๋์์ด ๋ ์ ์๋ค. ๋ฐ๋๋ก ๊ณ์ฐ ๊ณผ์ ์ด ๋น ๋ฅธ ๋ฐ๋ฉด ์๋์ ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๋ง์ ์ ์ฅ ๊ณต๊ฐ์ ์ฐจ์งํ๋ค๋ฉด ๊ฐ์ ์นผ๋ผ์ ์ ํํ๋ ๊ฒ์ด ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฝ๊ณผ ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ๋์ผ ์ ์๋ค.
์ ๊ธ์ ์ฑ RealMySQL 8.0 2๊ถ์ ๊ตฌ์ ํ์ฌ ์ฝ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.