๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/๊ฐœ๋…

MySQL์˜ ์ „์ฒด ๊ตฌ์กฐ & ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ตฌ์กฐ

Amenable 2023. 6. 18. 22:29

  ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” 'MySQL์˜ ์ „์ฒด ๊ตฌ์กฐ'์™€ '์ฟผ๋ฆฌ ์‹คํ–‰ ๊ตฌ์กฐ'๋ฅผ ์‚ดํŽด๋ณด๊ณ ์ž ํ•œ๋‹ค. InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๊ณผ MyISAM ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์€ ์ดํ›„์˜ ๊ธ€๋“ค์„ ์ฐธ๊ณ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•˜์ž.

 

๐Ÿ“™ 1. MySQL์˜ ์ „์ฒด ๊ตฌ์กฐ

  MySQL(=MySQL ์„œ๋ฒ„)์€ ํฌ๊ฒŒ MySQL ์—”์ง„๊ณผ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. MySQL ์—”์ง„์€ ์‚ฌ๋žŒ์˜ ๋จธ๋ฆฌ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๊ณ , ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์†๊ณผ ๋ฐœ์˜ ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  MySQL์€ ์ผ๋ฐ˜ ์ƒ์šฉ RDBMS์™€ ๊ฐ™์ด ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ๋ถ€ํ„ฐ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค. MySQL ๊ณ ์œ ์˜ C API๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด JDBC, ODBC, .NET์˜ ํ‘œ์ค€ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ด์šฉํ•ด ๋‹ค์–‘ํ•œ ์–ธ์–ด๋กœ MySQL ์„œ๋ฒ„์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ง€์›ํ•œ๋‹ค.

 

  ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ์™€ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ์šด์˜์ฒด์ œ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ํ•˜๋“œ์›จ์–ด ๋ถ€๋ถ„์ด ์žˆ๋‹ค.

 

๐Ÿ“Œ 1. MySQL ์—”์ง„

  MySQL ์—”์ง„์€ ์š”์ฒญ๋œ SQL ๋ฌธ์žฅ์„ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜ ์ตœ์ ํ™”ํ•˜๋Š” ๋“ฑ DBMS์˜ ๋‘๋‡Œ์— ํ•ด๋‹นํ•˜๋Š” ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  MySQL ์—”์ง„์€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ์˜ ์ ‘์† ๋ฐ ์ฟผ๋ฆฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” '์ปค๋„ฅ์…˜ ํ•ธ๋“ค๋Ÿฌ', 'SQL ํŒŒ์„œ', '์ „์ฒ˜๋ฆฌ๊ธฐ', ๊ทธ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ์˜ ์ตœ์ ํ™”๋œ ์‹คํ–‰์„ ์œ„ํ•œ '์˜ตํ‹ฐ๋งˆ์ด์ €'๊ฐ€ ์ค‘์‹ฌ์„ ์ด๋ฃฌ๋‹ค.

  ๋˜ํ•œ, MySQL์€ ํ‘œ์ค€ SQL(ANSI SQL) ๋ฌธ๋ฒ•์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์ค€ ๋ฌธ๋ฒ•์— ๋”ฐ๋ผ ์ž‘์„ฑ๋œ ์ฟผ๋ฆฌ๋Š” ํƒ€ DBMS์™€ ํ˜ธํ™˜๋˜์–ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ 2. ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„

  ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋””์Šคํฌ ์Šคํ† ๋ฆฌ์ง€๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋ถ€๋ถ„์„ ๋‹ด๋‹นํ•œ๋‹ค. MySQL ์„œ๋ฒ„์—์„œ MySQL ์—”์ง„์€ ํ•˜๋‚˜์ง€๋งŒ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋Œ€ํ‘œ์ ์ธ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ MySQL ์„œ๋ฒ„์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต๋˜๋Š” InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๊ณผ MyISAM ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ์žˆ๋‹ค.

๐Ÿ“Œ 3. ํ•ธ๋“ค๋Ÿฌ API

  MySQL ์—”์ง„์˜ ์ฟผ๋ฆฌ ์‹คํ–‰๊ธฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ฑฐ๋‚˜ ์ฝ์–ด์•ผ ํ•  ๋•Œ๋Š” ๊ฐ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์— ์“ฐ๊ธฐ ๋˜๋Š” ์ฝ๊ธฐ๋ฅผ ์š”์ฒญํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ํ•ธ๋“ค๋Ÿฌ(Handler) ์š”์ฒญ์ด๋ผ ํ•˜๊ณ , ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ๋˜๋Š” API๋ฅผ ํ•ธ๋“ค๋Ÿฌ API๋ผ๊ณ  ํ•œ๋‹ค.

  ์ฆ‰, ํ•ธ๋“ค๋Ÿฌ API๋ฅผ ํ†ตํ•ด MySQL ์—”์ง„๊ณผ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ํ†ต์‹ ์„ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค.

 

 

  โญ MySQL ์„œ๋ฒ„์—์„œ MySQL ์—”์ง„์€ ์‚ฌ๋žŒ ์—ญํ• ์„ ํ•˜๊ณ  ๊ฐ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์ž๋™์ฐจ ์—ญํ• ์„ ํ•˜๋Š”๋ฐ, MySQL ์—”์ง„์ด ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ•ธ๋“ค๋Ÿฌ๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋˜๊ฒ ๋‹ค. โญ

 

 

๐Ÿ“™ 2. ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ตฌ์กฐ

  SQL ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด MySQL ์—”์ง„์˜ ์ฟผ๋ฆฌ ํŒŒ์„œ, ์ „์ฒ˜๋ฆฌ๊ธฐ, ์˜ตํ‹ฐ๋งˆ์ด์ €, ์ฟผ๋ฆฌ ์‹คํ–‰๊ธฐ๋ฅผ ๊ฑฐ์ณ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ์‹คํ–‰๋œ๋‹ค.

 

๐Ÿ“Œ 1. ์ฟผ๋ฆฌ ํŒŒ์„œ

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

  ์˜ˆ๋ฅผ ๋“ค์–ด, SELECT id, name FROM t_user WHERE status = 'ACTIVE' AND age > 18๋ผ๋Š” ์ฟผ๋ฆฌ ๋ฌธ์žฅ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค.

  ๋˜ํ•œ, ์ฟผ๋ฆฌ ๋ฌธ์ž์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋Š” ์ด ๊ณผ์ •์—์„œ ๋ฐœ๊ฒฌ๋˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค.

๐Ÿ“Œ 2. ์ „์ฒ˜๋ฆฌ๊ธฐ

  ์ „์ฒ˜๋ฆฌ๊ธฐ์—์„œ๋Š” ํŒŒ์„œ ๊ณผ์ •์—์„œ ๋งŒ๋“ค์–ด์ง„ ํŒŒ์„œ ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฟผ๋ฆฌ ๋ฌธ์žฅ์— ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ œ์ ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

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

๐Ÿ“Œ 3. ์˜ตํ‹ฐ๋งˆ์ด์ €

  ์˜ตํ‹ฐ๋งˆ์ด์ €๋ž€ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์œผ๋กœ ๋“ค์–ด์˜จ ์ฟผ๋ฆฌ ๋ฌธ์žฅ์„ ์–ด๋–ป๊ฒŒ ์ €๋ ดํ•œ ๋น„์šฉ์œผ๋กœ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, DBMS์˜ ๋‘๋‡Œ์— ํ•ด๋‹นํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ๋น„์šฉ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”์™€ ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  • ๋น„์šฉ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”
    SQL์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ๋งˆ๋ จํ•ด ๋‘๊ณ  ๊ฐ ๋ฐฉ๋ฒ•์˜ ๋น„์šฉ๊ณผ ํ…Œ์ด๋ธ” ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ํ†ตํ•ด์„œ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค.
  • ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”
    ์˜ตํ‹ฐ๋งˆ์ด์ €์— ๋‚ด์žฅ๋œ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค.

MySQL์„ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„์˜ RDBMS๋Š” ๋น„์šฉ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™” ๋ฐฉ์‹์œผ๋กœ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๋™์ž‘ํ•œ๋‹ค.

๐Ÿ“Œ 4. ์‹คํ–‰ ์—”์ง„

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

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

  ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ MySQL ์„œ๋ฒ„์˜ ๊ฐ€์žฅ ๋ฐ‘๋‹จ์—์„œ MySQL ์‹คํ–‰ ์—”์ง„์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ๋กœ ์ €์žฅํ•˜๊ณ  ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด ์˜ค๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค.

  MyISAM ํ…Œ์ด๋ธ”์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ธ๋“ค๋Ÿฌ๊ฐ€ MyISAM ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ๋˜๊ณ , InnoDB ํ…Œ์ด๋ธ”์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ธ๋“ค๋Ÿฌ๊ฐ€ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ๋œ๋‹ค.

 

 

  โญ MySQL์—์„œ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์˜ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์ด MySQL ์—”์ง„์—์„œ ์ฒ˜๋ฆฌ๋˜๊ณ , ๋งˆ์ง€๋ง‰ '๋ฐ์ดํ„ฐ ์ฝ๊ธฐ/์“ฐ๊ธฐ' ์ž‘์—…๋งŒ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค. โญ

 

ํ•ด๋‹น ๊ธ€์€
๋ฐฑ์€๋นˆ, ์ด์„ฑ์šฑ ๋‹˜์˜ 'Real MySQL 8.0',
์šฐ๊ธฐ ๋‹˜์˜ '[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ์šฐ๊ธฐ์˜ MySQL ์•„ํ‚คํ…์ฒ˜',
๋ฆญ ๋‹˜์˜ '[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๋ฆญ์˜ MySQL ์•„ํ‚คํ…์ฒ˜',
ShardingSphere์˜ 'Parse Engine'
์„ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋Œ“๊ธ€์ˆ˜0