DevLog ๐Ÿ˜ถ

[Real MySQL 8.0] MySQL ์—”์ง„๊ณผ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„, ์ฟผ๋ฆฌ ์‹คํ–‰ ์ฒ˜๋ฆฌ ์ˆœ์„œ ๋ณธ๋ฌธ

๐Ÿ“–/Real MySQL 8.0

[Real MySQL 8.0] MySQL ์—”์ง„๊ณผ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„, ์ฟผ๋ฆฌ ์‹คํ–‰ ์ฒ˜๋ฆฌ ์ˆœ์„œ

dolmeng2 2023. 6. 11. 00:30

๐ŸŒฑ MySQL ์ „์ฒด ๊ตฌ์กฐ

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

show global status like 'handler%';

์š”๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ ํ•ธ๋“ค๋Ÿฌ API๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
 


 

๐ŸŒฑ MySQL Thread

MySQL ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, Foreground / background ์Šค๋ ˆ๋“œ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

select thread_id, name, type, processlist_user, processlist_host
from performance_schema.threads order by type, thread_id;

์—„์ฒญ ๋งŽ๊ธฐ๋Š” ํ•œ๋ฐ, ํ˜„์žฌ ๋‚˜๋Š” 38๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
์—ฌ๊ธฐ์„œ 4, 5ํ–‰์„ ๋ณด๋ฉด ๋™์ผํ•œ ์Šค๋ ˆ๋“œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ผํ•œ ์ž‘์—…์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋‚˜์˜จ๋‹ค.

ํŠนํžˆ ๋งˆ์ง€๋ง‰ 3๊ฐœ๋Š” foreground๋กœ ๋™์ž‘ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ์ค‘์—์„œ thread/sql/one_connection์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” foreground ์Šค๋ ˆ๋“œ์ด๋‹ค.
 

 
๐Ÿ’ฌ Foreground Thread

foreground thread์˜ ๊ฒฝ์šฐ ์ตœ์†Œ MySQL์— ์ ‘์†๋œ ํด๋ผ์ด์–ธํŠธ ์ˆ˜๋งŒํผ ์กด์žฌํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
๋ฐ์ดํ„ฐ๋ฅผ MySQL์˜ ๋ฐ์ดํ„ฐ ๋ฒ„ํผ๋‚˜ ์บ์‹œ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ค๊ณ , ์—†์œผ๋ฉด ์ง์ ‘ ๋””์Šคํฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ์„ ์ฝ์–ด์˜จ๋‹ค. ์ด๋•Œ, MyISAM ๊ฐ™์€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋””์Šคํฌ ์“ฐ๊ธฐ ์ž‘์—…๊นŒ์ง€ foreground๊ฐ€ ํ•˜์ง€๋งŒ, InnoDB์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๋ฒ„ํผ / ์บ์‹œ๊นŒ์ง€๋งŒ ๊ด€๋ฆฌํ•˜๊ณ  ๋””์Šคํฌ ์“ฐ๊ธฐ๋Š” background๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค.
 
์‹คํ–‰ ํ›„ ์ปค๋„ฅ์…˜ ์ข…๋ฃŒ ์‹œ ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋Š” ์Šค๋ ˆ๋“œ ์บ์‹œ๋กœ ๋Œ์•„๊ฐ€๋Š”๋ฐ, ๋งŒ์•ฝ ์Šค๋ ˆ๋“œ ์บ์‹œ์— ์ด๋ฏธ ์ผ์ • ๊ฐœ์ˆ˜ ์ด์ƒ์˜ ๋Œ€๊ธฐ ์ค‘์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์Šค๋ ˆ๋“œ ์บ์‹œ์— ๋„ฃ์ง€ ์•Š๊ณ  ์Šค๋ ˆ๋“œ ์ž์ฒด๋ฅผ ์ข…๋ฃŒ์‹œ์ผœ์„œ ์Šค๋ ˆ๋“œ ์บ์‹œ์— ์กด์žฌํ•˜๋Š” ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ๋„ ํ•œ๋‹ค.
๋ณดํ†ต, ํ•ด๋‹น ์Šค๋ ˆ๋“œ ์ˆ˜๋Š” thread_cache_size๋ผ๋Š” ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋กœ ์ปจํŠธ๋กค์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
 
 

๐Ÿ’ฌ Background Thread

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๊ฒฝ์šฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ •๋ง ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

- ์ธ์„œํŠธ ๋ฒ„ํผ (insert buffer) ๋ณ‘ํ•ฉ
- โญ๏ธ ๋””์Šคํฌ์— ๋กœ๊ทธ ๊ธฐ๋ก (Log Thread)
- โญ๏ธ ๋ฒ„ํผ ํ’€ (buffer pool)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ๊ธฐ๋ก (Write Thread)
- ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ๋กœ ์ฝ์–ด์˜ค๊ธฐ
- ์ž ๊ธˆ, ๋ฐ๋“œ๋ฝ ๋ชจ๋‹ˆํ„ฐ๋ง

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ log / write thread์˜ ๊ฒฝ์šฐ innodb_write_io_threads, innodb_read_io_threads ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋กœ ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค. ์“ฐ๊ธฐ ์Šค๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ 2~4๊ฐœ, ๋ณ„๋„์˜ ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ ์‹œ ๋””์Šคํฌ๋ฅผ ์ตœ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋งŒํผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
 
์ถ”๊ฐ€๋กœ, ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ ์ž‘์—…์€ ์ง€์—ฐ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ฝ๊ธฐ ์ž‘์—…์€ ์ง€์—ฐ ์ฒ˜๋ฆฌ๊ฐ€ ์•ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต DBMS์—์„œ ์“ฐ๊ธฐ ์ž‘์—…์€ ๋ฒ„ํผ๋ง์„ ํ†ตํ•ด ์ผ๊ด„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์กด์žฌํ•œ๋‹ค. ๋•๋ถ„์— CUD ์ฟผ๋ฆฌ ์ž‘์„ฑ ์‹œ ๋””์Šคํฌ์— ๋ฐ˜์˜๋  ๋•Œ๊นŒ์ง€ ์™„์ „ํžˆ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค. (InnoDB) ํ•˜์ง€๋งŒ, MyISAM์—์„œ๋Š” ํฌ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๊ฐ€ ์“ฐ๊ธฐ ์ž‘์—…๊นŒ์ง€ ํ•˜๋‹ค ๋ณด๋‹ˆ๊นŒ ์“ฐ๊ธฐ ๋ฒ„ํผ๋ง ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
 


 

๐ŸŒฑ MySQL Memory Allocation

MySQL์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ํฌ๊ฒŒ ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ์„ธ์…˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ (=๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ)์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.
 
๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ๊ฒฝ์šฐ MySQL ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜๋ฉด์„œ OS๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋˜๋ฉฐ, OS๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ์ •์ฑ…์ด ๋‹ค๋ฅด๋‹ค. ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ๋‹จ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๋งŒ ํ• ๋‹น๋ฐ›์œผ๋ฉฐ, ๋ชจ๋“  ์Šค๋ ˆ๋“œ์—๊ฒŒ ๊ณต์œ ๋œ๋‹ค.
 
๋ฐ˜๋ฉด, ์„ธ์…˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ๊ฒฝ์šฐ ์Šค๋ ˆ๋“œ๋‹น ํ•˜๋‚˜์”ฉ ์ƒ์„ฑ๋˜๋ฉฐ, ๊ณต์œ ๋˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ๋œ๋‹ค.
์ฟผ๋ฆฌ์˜ ์šฉ๋„๋ณ„๋กœ ๊ณต๊ฐ„์ด ํ• ๋‹น๋˜๊ณ , ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉด ์•„์˜ˆ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ž์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— (์ •๋ ฌ์ด๋‚˜ ์กฐ์ธ ๋ฒ„ํผ ๊ฐ™์€ ๊ฒฝ์šฐ) ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค. 
 
 

๐Ÿ’ฌ MySQL์—์„œ์˜ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณผ์ •

โญ๏ธ SqL ํŒŒ์„œ -> SQL ์˜ตํ‹ฐ๋งˆ์ด์ € -> SQL ์‹คํ–‰๊ธฐ -> ๋ฐ์ดํ„ฐ์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ž‘์—… -> ๋””์Šคํฌ

MySQL์—์„œ๋Š” MySQL ์—”์ง„์— ์˜ํ•ด SQL ์‹คํ–‰๊ธฐ๊นŒ์ง€ ์‹คํ–‰๋˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ์ž‘์—…์€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ์ฒ˜๋ฆฌํ•œ๋‹ค. ์–ด๋–ค ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋“  MySQL ์—”์ง„์ด ์‹คํ–‰ํ•˜๋Š” ๋ถ€๋ถ„์€ ๋Œ€๋ถ€๋ถ„ ๋น„์Šทํ•˜๋ฉฐ, ์–ด๋–ค ์‹์œผ๋กœ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š”์ง€๊ฐ€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๋ณ„๋กœ ๊ฐˆ๋ฆฐ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ด๋•Œ, ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ์ž‘์—…์€ ๋Œ€๋ถ€๋ถ„ 1๊ฑด์˜ ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
์ด๋•Œ, MySQL ์—”์ง„์€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด 'ํ•ธ๋“ค๋Ÿฌ'๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค. (์ถ”ํ›„ ๋‹ค์‹œ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.)
 

SHOW ENGINES;

์ด๊ฑฐ๋Š” MySQL ์„œ๋ฒ„์—์„œ ์ง€์›ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๋ชฉ๋ก์ด๋‹ค. ์—ฌ๊ธฐ์„œ support ์ปฌ๋Ÿผ์—๋Š” 4๊ฐ€์ง€์˜ ์˜ต์…˜์ด ์žˆ๋Š”๋ฐ, ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

- YES: MySQL ์„œ๋ฒ„์— ํฌํ•จ๋˜์–ด ์žˆ๊ณ , ์‚ฌ์šฉ ๊ฐ€๋Šฅ์œผ๋กœ ํ™œ์„ฑํ™”
- DEFAULT: YES์™€ ๋™์ผํ•œ๋ฐ ํ•„์ˆ˜ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ž„
- NO: MySQL ์„œ๋ฒ„์— ํฌํ•จ X, ์‚ฌ์šฉ ์‹œ ์žฌ๋นŒ๋“œ ์ง„ํ–‰ํ•ด์•ผ ํ•จ
- DISABLED: MySQL ์„œ๋ฒ„์— ํฌํ•จ์€ ๋˜์–ด ์žˆ๋Š”๋ฐ ๋น„ํ™œ์„ฑํ™”

 
๋˜ํ•œ, MySQL ์„œ๋ฒ„์—๋Š” ์—ฌ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด show plugins์œผ๋กœ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค!
์ฐธ๊ณ ๋กœ, MySQL 8.0๋ถ€ํ„ฐ๋Š” ์ปดํฌ๋„ŒํŠธ ์•„ํ‚คํ…์ฒ˜๋ผ๋Š” ๊ฒƒ์„ ์ง€์›ํ•˜๋Š”๋ฐ, ์ด๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌํ˜„๋˜์—ˆ๋‹ค.

- ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์˜ค์ง MySQL ์„œ๋ฒ„์™€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , ํ”Œ๋Ÿฌ๊ทธ์ธ๋ผ๋ฆฌ๋Š” ํ†ต์‹ ์ด ๋ถˆ๊ฐ€๋Šฅํ•จ
- MySQL ์„œ๋ฒ„์˜ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜์ง€ ์•Š์Œ
- ์ƒํ˜ธ ์˜์กด ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์—†์–ด์„œ ์ดˆ๊ธฐํ™”๊ฐ€ ์–ด๋ ค์›€

์„ค์น˜๋œ ์ปดํฌ๋„ŒํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

select * from mysql.component;

 


 

๐ŸŒฑ MySQL Query Execution

MySQL์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค. ์ฐจ๋ก€๋กœ ๋”ฐ๋ผ๊ฐ€๋ณด์ž.
 

 
๐Ÿ’ฌ ์ฟผ๋ฆฌ ํŒŒ์„œ (SQL Parser)

์‚ฌ์šฉ์ž ์š”์ฒญ์œผ๋กœ ๋“ค์–ด์˜จ ์ฟผ๋ฆฌ ๋ฌธ์žฅ์„ Token์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค.
์ฟผ๋ฆฌ ๋ฌธ์žฅ์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋Š” ์ด ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‚˜๊ฐ€๊ฒŒ ๋œ๋‹ค.
 

 
๐Ÿ’ฌ ์ „์ฒ˜๋ฆฌ๊ธฐ

ํŒŒ์„œ๋ฅผ ํ†ตํ•ด ๋‚˜์˜จ ํŠธ๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฟผ๋ฆฌ ๋ฌธ์žฅ์— ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
ํ…Œ์ด๋ธ” ์ด๋ฆ„์ด๋‚˜ ์ปฌ๋Ÿผ ์ด๋ฆ„, ๋‚ด์žฅ ํ•จ์ˆ˜ ์กด์žฌ ์—ฌ๋ถ€, ๊ฐ์ฒด์˜ ์ ‘๊ทผ ๊ถŒํ•œ ๋“ฑ์„ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•œ๋‹ค.
 
 

๐Ÿ’ฌ ์˜ตํ‹ฐ๋งˆ์ด์ €

์ฟผ๋ฆฌ ๋ฌธ์žฅ์„ ๊ฐ€์žฅ ์ €๋ ดํ•œ ๋น„์šฉ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ๋งค์šฐ ์ค‘์š”ํ•œ ๊ณผ์ •์ด๋‹ค.
 
 

๐Ÿ’ฌ ์‹คํ–‰ ์—”์ง„

ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ์š”์ฒญํ•ด์„œ ๋ฐ›์€ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉ์ž๋‚˜ ๋˜ ๋‹ค๋ฅธ ํ•ธ๋“ค๋Ÿฌ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์ž…๋ ฅ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
ํ•ธ๋“ค๋Ÿฌ๋Š” ์‹ค์ œ๋กœ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์‹คํ–‰ ์—”์ง„์ด ์˜ตํ‹ฐ๋งˆ์ด์ €์™€ ์‹คํ–‰๊ธฐ ์‚ฌ์ด์—์„œ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

ex) group by ์ฒ˜๋ฆฌ ๊ณผ์ •
์‹คํ–‰ ์—”์ง„์ด ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ์ž„์‹œ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์š”์ฒญ
-> ์‹คํ–‰ ์—”์ง„์€ where์ ˆ์— ๋Œ€ํ•œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ์œผ๋ผ๊ณ  ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ์š”์ฒญ
-> ์ฝ์–ด์˜จ ํ…Œ์ด๋ธ”์„ ์ž„์‹œ ํ…Œ์ด๋ธ”์—๊ฒŒ ์ €์žฅํ•˜๋ผ๊ณ  ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ์š”์ฒญ
-> ์ƒ์„ฑ๋œ ์ž„์‹œํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ํ•„์š”ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋ผ๊ณ  ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ์š”์ฒญ
-> ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์‹คํ–‰ ์—”์ง„์ด ์‚ฌ์šฉ์ž๋‚˜ ๋‹ค๋ฅธ ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ๋„˜๊ธด๋‹ค.

 
 
๐Ÿ’ฌ ํ•ธ๋“ค๋Ÿฌ (=์Šคํ† ๋ฆฌ์ง€ ์—”์ง„)

์‹คํ–‰ ์—”์ง„์˜ ์š”์ฒญ์— ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์˜ค๋Š” ์—ญํ• ์„ ์ง„ํ–‰ํ•œ๋‹ค.
์–ด๋–ค ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”์„ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€์— ๋”ฐ๋ผ์„œ InnoDB ์—”์ง„์„ ์‚ฌ์šฉํ• ์ง€, MyISAM ์—”์ง„์„ ์‚ฌ์šฉํ• ์ง€ (ํ˜น์€ ๊ทธ์™ธ) ์ฑ„ํƒํ•˜๊ฒŒ ๋œ๋‹ค.
 
 

๐Ÿ’ฌ ์ฟผ๋ฆฌ ์บ์‹œ

๊ทธ๋ฆผ์—๋Š” ์—†์ง€๋งŒ, MySQL์˜ ์ฟผ๋ฆฌ ์บ์‹œ๋Š” SQL ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œํ•˜๊ณ  ๋™์ผํ•œ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ํ…Œ์ด๋ธ”์„ ์ฝ๋Š” ๋Œ€์‹ ์— ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ, ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์บ์‹œ๋„ ํ•จ๊ป˜ ๊ฐฑ์‹ ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ๋œ ํ…Œ์ด๋ธ”์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์€ ์ „๋ถ€ ์‚ญ์ œํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค. ์ „๋ถ€ ์‚ญ์ œํ•˜๋‹ค ๋ณด๋‹ˆ ์„ฑ๋Šฅ์ƒ์—๋„ ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ, 8.0๋ถ€ํ„ฐ๋Š” ์ฟผ๋ฆฌ ์บ์‹œ ๊ธฐ๋Šฅ ์ž์ฒด๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค.
 

 
๐Ÿ’ฌ ์Šค๋ ˆ๋“œ ํ’€

MySQL ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ฒ„์ „์—์„œ๋Š” ์Šค๋ ˆ๋“œ ํ’€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” Percona Server์—์„œ ์ œ๊ณตํ•˜๋Š” ์Šค๋ ˆ๋“œ ํ’€ ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ณด์ž.
์Šค๋ ˆ๋“œ ํ’€์˜ ๊ฒฝ์šฐ ๋™์‹œ์— ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ๋ฅผ CPU๊ฐ€ ์ตœ๋Œ€ํ•œ ์ž˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€๊นŒ์ง€ ์ค„์—ฌ์„œ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์—, CPU ์‹œ๊ฐ„์„ ์ž˜ ํ™•๋ณดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์˜คํžˆ๋ ค ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜๋„ ์žˆ๋‹ค.
 
๐Ÿ’ก thread_pool_size
Percona Server์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ CPU ์ฝ”์–ด ์ˆ˜๋งŒํผ ์Šค๋ ˆ๋“œ ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•˜๋ฉฐ, thread_pool_size ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์กฐ์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
 
๐Ÿ’ก thread_pool_oversubscribe
๋งŒ์•ฝ, ์ด๋ฏธ ์Šค๋ ˆ๋“œ ํ’€์ด ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…์ด ์žˆ์œผ๋ฉด thread_pool_oversubscribe ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์–ผ๋งˆ๋‚˜ ๋” ์ถ”๊ฐ€๋กœ ์ฒ˜๋ฆฌํ• ์ง€ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค. (๋ฌผ๋ก , ๋ฌด์ž‘์ • ๋Š˜๋ ค๋„ ์ข‹์ง€ ์•Š๋‹ค. ๊ทธ๋งŒํผ ์Šค์ผ€์ค„๋งํ•ด์•ผ ํ•˜๋Š” ์Šค๋ ˆ๋“œ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง„๋‹ค.) ๊ธฐ๋ณธ๊ฐ’์€ 3์ด๋‹ค.
 
๐Ÿ’ก thread_pool_stall_limit
์Šค๋ ˆ๋“œ ๊ทธ๋ฃน ๋‚ด์˜ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์Šค๋ ˆ๋“œ ๊ทธ๋ฃน์— ์ƒˆ๋กœ์šด Worker Thread๋ฅผ ์ถ”๊ฐ€ํ• ์ง€, ์•„๋‹ˆ๋ฉด ๊ธฐ์กด ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด์ง€ ํŒ๋‹จํ•ด์•ผ ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ ํ’€ ๋‚ด์˜ ํƒ€์ด๋จธ ์Šค๋ ˆ๋“œ๋Š” ์Šค๋ ˆ๋“œ ๊ทธ๋ฃน์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ฒดํฌํ•˜์—ฌ thread_pool_stall_limit ๋ณ€์ˆ˜์— ์ •์˜๋œ ์ดˆ๋งŒํผ ์ž‘์—… ์Šค๋ ˆ๋“œ๊ฐ€ ์ฒ˜๋ฆฌ ์ค‘์ธ ์ž‘์—…์ด ๋๋‚˜์ง€ ์•Š์•˜์„ ๋•Œ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ถ”๊ฐ€ํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค. ๋‹น์—ฐํ•˜๊ฒŒ๋„ ์ด ์ˆ˜๋Š” ํ• ๋‹น ๊ฐ€๋Šฅํ•œ ์ „์ฒด ์Šค๋ ˆ๋“œ ์ˆ˜ (thread_pool_max_threads)๋ฅผ ๋„˜์„ ์ˆ˜ ์—†๋‹ค.
 

- ๊ทธ๋ ‡๋‹ค๋ฉด, thread_pool_stall_limit์„ 0์œผ๋กœ ์ƒ์„ฑํ•ด์„œ ๋ฐ”๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒŒ ์ข‹์ง€ ์•Š์„๊นŒ?
์ด๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ ํ’€์„ ์‚ฌ์šฉํ•˜๋Š” ์˜๋ฏธ ์ž์ฒด๊ฐ€ ์—†์–ด์ง€๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค. (๊ณ„์† ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“œ๋‹ˆ ํ’€์ด ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง)

 
๐Ÿ’ก ์„ ์ˆœ์œ„ / ํ›„์ˆœ์œ„ ํ
Percona Server์—์„œ๋Š” ์„ ์ˆœ์œ„ / ํ›„์ˆœ์œ„ ํ๋ฅผ ํ†ตํ•ด์„œ ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด๋‚˜ ์ฟผ๋ฆฌ๋ฅผ ์šฐ์„ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ๋„ ์žˆ๋‹ค. (thread_pool_high_prio_tickets)
 
์ด๋Š” ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ์ฟผ๋ฆฌ์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋ฉฐ, ์—ด๋ ค ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์ˆ˜๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
์ƒˆ๋กœ์šด ์ปค๋„ฅ์…˜์ด ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค '์šฐ์„ ์ˆœ์œ„ ํ‹ฐ์ผ“' ๊ฐ™์€ ๊ฒƒ์„ ํ• ๋‹นํ•˜์—ฌ ์„ ์ˆœ์œ„ ํ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋ฏธ ์‹œ์ž‘๋œ ์ปค๋„ฅ์…˜์˜ ๊ฒฝ์šฐ ์„ ์ˆœ์œ„ ํ์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ ๋ชจ๋“  ์ปค๋„ฅ์…˜์— ๋Œ€ํ•ด ์ด๋Ÿฐ ์Šค์ผ€์ค„๋ง์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด, ๋ณ€์ˆ˜ ๊ฐ’์„ 0์œผ๋กœ ํ• ๋‹นํ•˜๊ณ , ๊ฐ’์ด ํด์ˆ˜๋ก ๊ฐ๊ฐ์˜ ํŠธ๋žœ์žญ์…˜์€ ์„ ์ˆœ์œ„ ํ์— ๋“ค์–ด๊ฐˆ ๊ธฐํšŒ๋ฅผ ๋” ๋งŽ์ด ์–ป๊ฒŒ ๋œ๋‹ค.
 
๋ฐ˜๋Œ€๋กœ, ๋ชจ๋“  ์›Œํฌ ์Šค๋ ˆ๋“œ ์ˆ˜๊ฐ€ oversubscribe๊นŒ์ง€ ๋„๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ปค๋„ฅ์…˜์„ ์ œํ•œํ•˜์—ฌ์„œ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฏธ ์‹œ์ž‘๋œ ํŠธ๋žœ์žญ์…˜์„ ์šฐ์„ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌ๋  ๋•Œ๊นŒ์ง€ ์ƒˆ๋กœ์šด ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•„์„œ ์Šค๋ ˆ๋“œ ๊ทธ๋ฃน์ด ๊ณผ๋‹คํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
 
 

๐Ÿ’ฌ ํŠธ๋žœ์žญ์…˜ ์ง€์› ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ

DB ์„œ๋ฒ„์—์„œ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ ์ •๋ณด์™€ ์Šคํ† ์–ด๋“œ ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ ๋”•์…”๋„ˆ๋ฆฌ or ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค.
MySQL 5.7๊นŒ์ง€๋Š” FRM ํŒŒ์ผ์— ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ–ˆ์œผ๋‚˜, ์ด๋Š” MySQL ์„œ๋ฒ„๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ƒ์„ฑ, ๋ณ€๊ฒฝ ์‹œ ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š์•„์„œ ์ผ๊ด€์„ฑ์ด ์ž์ฃผ ๊นจ์ง€๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์˜€๋‹ค.
๊ทธ๋ž˜์„œ 8.0๋ถ€ํ„ฐ๋Š” ๋ชจ๋‘ InnoDB ํ…Œ์ด๋ธ”์— ์ €์žฅ๋˜๋ฉฐ, '์‹œ์Šคํ…œ ํ…Œ์ด๋ธ”' ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค. 

show databases;

 

์‹ค์ œ๋กœ, show databases๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ๋‚˜์˜ค๋Š” 'mysql'์ด๋ผ๋Š” DB์— ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
(mysql.ibd๋ผ๋Š” ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํŒŒ์ผ์— ๋Œ€ํ•ด ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค!)
 
์—ฌ๊ธฐ์„œ ์˜๋ฌธ์ธ ์ ์€, use tables๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋„ ์‹ค์ œ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๊ฐ€ ์ €์žฅ๋œ ํ…Œ์ด๋ธ”์„ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž„์˜๋กœ ์ˆ˜์ •ํ• ๊นŒ๋ด ์กฐํšŒ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“  ๊ฒƒ์ด๋ฉฐ, ์ด ๋Œ€์‹ ์— information_schema DB๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

select * from information_schema.tables;

์‹ค์ œ๋กœ ์ด๋ ‡๊ฒŒ ๋‚ด๊ฐ€ ์ƒ์„ฑํ–ˆ๋˜ ํ…Œ์ด๋ธ”์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
 

select * from mysql.tables;

๋ฐ˜๋ฉด์—, mysql DB๋ฅผ ํ†ตํ•ด์„œ ํ…Œ์ด๋ธ” ๋ชฉ๋ก์„ ํ™•์ธํ•˜๋ ค๊ณ  ๋ณด๋ฉด ์œ„์™€ ๊ฐ™์ด ๊ถŒํ•œ์ด ์—†๋‹ค๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋œฌ๋‹ค!
 
๊ทธ๋ ‡๋‹ค๋ฉด, ์ด๋ ‡๊ฒŒ innoDB ํ…Œ์ด๋ธ”๋กœ ๊ด€๋ฆฌ๋˜๋ฉด ์–ด๋–ค ๊ฒƒ์ด ์ข‹์„๊นŒ?
๋ฐ”๋กœ, '์›์ž์„ฑ'์„ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.
ํ…Œ์ด๋ธ”๋กœ ๊ด€๋ฆฌ๋œ๋‹ค๋Š” ๊ฒƒ์€ ์„ค์ •์ •๋ณด๊ฐ€ ํ…Œ์ด๋ธ”์— ์ปค๋ฐ‹๋˜๊ฑฐ๋‚˜, ํ˜น์€ ๋กค๋ฐฑ (Atomicity)๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์ฒ˜๋Ÿผ ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ–ˆ์„ ๋•Œ์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์ด ๊นจ์ง€๋Š” ์ผ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.
ํ•˜์ง€๋งŒ, innoDB๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ, ์—ฌ์ „ํžˆ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ SDI ํŒŒ์ผ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.
 


 
๋‹ค์Œ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

Comments