Skip to content

Latest commit

ย 

History

History
258 lines (176 loc) ยท 23.2 KB

data_type.md

File metadata and controls

258 lines (176 loc) ยท 23.2 KB

๋ฐ์ดํ„ฐ ํƒ€์ž…

์นผ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๊ธธ์ด๋ฅผ ์„ ์ •ํ•  ๋•Œ ๊ฐ€์žฅ ์ฃผ์˜ํ•  ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ €์žฅ๋˜๋Š” ๊ฐ’์˜ ์„ฑ๊ฒฉ์— ๋งž๋Š” ์ตœ์ ์˜ ํƒ€์ž… ์„ ์ •
  • ๊ฐ€๋ณ€ ๊ธธ์ด ์นผ๋Ÿผ์€ ์ตœ์ ์˜ ๊ธธ์ด ์„ ์ •
  • ์กฐ์ธ ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์นผ๋Ÿผ์€ ๋˜‘๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ์„ ์ •

๋ฌธ์ž์—ด(CHAR์™€ VARCHAR)

์ €์žฅ ๊ณต๊ฐ„

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');

image image

์—ฌ๊ธฐ์„œ ๋งŒ์•ฝ fd2 ์นผ๋Ÿผ์˜ ๊ฐ’์„ "ABCDE"๋กœ UPDATEํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด

  • CHAR(10) ํƒ€์ž…์—์„œ๋Š” fd2 ์นผ๋Ÿผ์„ ์œ„ํ•ด ๊ณต๊ฐ„์ด 10๋ฐ”์ดํŠธ๊ฐ€ ์ค€๋น„๋ผ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๋ƒฅ ๋ณ€๊ฒฝ๋˜๋Š” ์นผ๋Ÿผ์˜ ๊ฐ’์„ ์—…๋ฐ์ดํŠธ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.
  • VARCHAR(10) ํƒ€์ž…์—์„œ๋Š” fd2 ์นผ๋Ÿผ์— 4๋ฐ”์ดํŠธ ๋ฐ–์— ์ €์žฅํ•  ์ˆ˜ ์—†๋Š” ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ "ABCDE"์™€ ๊ฐ™์ด ๊ธธ์ด๊ฐ€ ๋” ํฐ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋  ๋•Œ๋Š” ๋ ˆ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๋‹ค๋ฅธ ๊ณต๊ฐ„์œผ๋กœ ์˜ฎ๊ฒจ์„œ(Row migration) ์ €์žฅ ํ•ด์•ผ ํ•œ๋‹ค.

๋ฌผ๋ก  ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ์ฒ˜๋Ÿผ ํ•ญ์ƒ ๊ฐ’์˜ ๊ธธ์ด๊ฐ€ ๊ณ ์ •์ ์ผ ๋•Œ๋Š” ๋‹น์—ฐํžˆ CHAR ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ๊ฐ’์ด 2~3๋ฐ”์ดํŠธ์”ฉ ์ฐจ์ด๊ฐ€ ๋‚˜๋”๋ผ๋„ ์ž์ฃผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๋ถ€์„œ ๋ฒˆํ˜ธ๋‚˜ ๊ฒŒ์‹œ๋ฌผ์˜ ์ƒํƒœ ๊ฐ’ ๋“ฑ์€ CHAR ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ž์ฃผ ๋ณ€๊ฒฝ๋ผ๋„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ €์žฅ ๊ณต๊ฐ„๊ณผ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ(Online DDL)

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 ๋ทฐ๋ฅผ ํ™•์ธํ•ด ๋ณด๋ฉด ๋œ๋‹ค.

utf8mb4 ๋ฌธ์ž ์ง‘ํ•ฉ ์ฝœ๋ ˆ์ด์…˜

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์„ ๊ณฑํ•ด์„œ ์ •์ˆ˜๋กœ ๋งŒ๋“ค์–ด ๊ทธ ๊ฐ’์„ ์ •์ˆ˜ ํƒ€์ž…์˜ ์นผ๋Ÿผ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

DECIMAL

๋ถ€๋™ ์†Œ์ˆ˜์ ์—์„œ ์œ ํšจ ๋ฒ”์œ„ ์ด์™ธ์˜ ๊ฐ’์€ ๊ฐ€๋ณ€์ ์ด๋ฏ€๋กœ ์ •ํ™•ํ•œ ๊ฐ’์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. ์ฆ‰, ๊ธˆ์•ก์ด๋‚˜ ๋Œ€์ถœ์ด์ž ๋“ฑ๊ณผ ๊ฐ™์ด ๊ณ ์ •๋œ ์†Œ์ˆ˜์ ๊นŒ์ง€ ์ •ํ™•ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ๋•Œ๋Š” 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ํƒ€์ž…์€ ์ €์žฅ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •์ ์ด๋ฏ€๋กœ ์ •๋ฐ€๋„๋ฅผ ์กฐ์ ˆํ•œ๋‹ค๊ณ  ํ•ด์„œ ์ €์žฅ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๊ฐ€ ๋ฐ”๋€Œ์ง€๋Š” ์•Š๋Š”๋‹ค.

์ž๋™ ์ฆ๊ฐ€(AUTO_INCREMENT) ์˜ต์…˜์„ ์‚ฌ์šฉ

ํ…Œ์ด๋ธ”์˜ 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 ํƒ€์ž…์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ์นผ๋Ÿผ์— ์ €์žฅ๋˜๋Š” ๋ฌธ์ž์—ด ๊ฐ’์ด ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๊ฐ€ ๋˜๋ฉด์„œ ๊ธฐ๋ณธ 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

SET ํƒ€์ž…๋„ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ์— ์ •์˜๋œ ์•„์ดํ…œ์„ ์ •์ˆซ๊ฐ’์œผ๋กœ ๋งคํ•‘ํ•ด์„œ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์€ ENUM๊ณผ ๋˜‘๊ฐ™๋‹ค. ๊ทธ๋Ÿฐ๋ฐ SET์€ ํ•˜๋‚˜์˜ ์นผ๋Ÿผ์— 1๊ฐœ ์ด์ƒ์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์‹ค์ œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. SET ํƒ€์ž…์€ ์•„์ดํ…œ์˜ ๊ฐ’์˜ ๋ฉค๋ฒ„ ์ˆ˜๊ฐ€ 8๊ฐœ ์ดํ•˜์ด๋ฉด 1๋ฐ”์ดํŠธ์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๋ฉฐ 9๊ฐœ์—์„œ 16๊ฐœ ์ดํ•˜์ด๋ฉด 2๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋˜‘๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ตœ๋Œ€ 8๋ฐ”์ดํŠธ๊นŒ์ง€ ์ €์žฅ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•œ๋‹ค.

TEXT์™€ BLOB

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 ์‹œ์ ์—๋งŒ ์นผ๋Ÿผ์˜ ๊ฐ’์ด ๊ณ„์‚ฐ๋จ

๊ฐ€์ƒ ์นผ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋Š” ๊ฐ€์ƒ ์นผ๋Ÿผ์„ ํฌํ•จํ•˜์ง€ ์•Š์ง€๋งŒ ํ•ด๋‹น ์ธ๋ฑ์Šค๋Š” ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋œ ๊ฐ€์ƒ ์นผ๋Ÿผ์˜ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ธ๋ฑ์Šค ๋ฆฌ๋นŒ๋“œ ์ž‘์—…์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์ƒ ์นผ๋Ÿผ๊ณผ ์Šคํ† ์–ด๋“œ ์นผ๋Ÿผ ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ•ด์•ผ ํ• ์ง€๋Š” ๊ฐ ์ฐจ์ด์ ์„ ์ด์šฉํ•ด ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์ƒ ์นผ๋Ÿผ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ์‹œ์ ์— ๋งค๋ฒˆ ๊ณ„์‚ฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ƒ ์นผ๋Ÿผ์˜ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์ด ๋ณต์žกํ•˜๊ณ  ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋ฉด ์Šคํ† ์–ด๋“œ ์นผ๋Ÿผ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๊ณ„์‚ฐ ๊ณผ์ •์ด ๋น ๋ฅธ ๋ฐ˜๋ฉด ์ƒ๋Œ€์ ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋งŽ์€ ์ €์žฅ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•œ๋‹ค๋ฉด ๊ฐ€์ƒ ์นผ๋Ÿผ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ €์žฅ ๊ณต๊ฐ„์˜ ์ ˆ์•ฝ๊ณผ ๋ฉ”๋ชจ๋ฆฌ์˜ ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

Reference

์œ„ ๊ธ€์€ ์ฑ… RealMySQL 8.0 2๊ถŒ์„ ๊ตฌ์ž…ํ•˜์—ฌ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.