๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์Šคํ„ฐ๋””/Real MySQL

MySQL ์—”์ง„ ์•„ํ‚คํ…์ฒ˜ & InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์•„ํ‚คํ…์ฒ˜ ์ •๋ฆฌ (4.1 ~ 4.2)

Real MySQL 4.1 ~ 4.2 ํ•™์Šต ํ›„ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

 

4.1 MySQL ์—”์ง„ ์•„ํ‚คํ…์ฒ˜

4.1.1 MySQL ์˜ ์ „์ฒด ๊ตฌ์กฐ

- MySQL ์€ MySQL ์—”์ง„๊ณผ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

  • MySQL ์—”์ง„ - ์ปค๋„ฅ์…˜ ํ•ธ๋“ค๋Ÿฌ, SQL ํŒŒ์„œ, ์ „์ฒ˜๋ฆฌ๊ธฐ, ์˜ตํ‹ฐ๋งˆ์ด์ € ๊ฐ€ ์ค‘์‹ฌ์„ ์ด๋ฃฌ๋‹ค.
    • ์ปค๋„ฅ์…˜ ํ•ธ๋“ค๋Ÿฌ
      • ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ์˜ ์ ‘์† ๋ฐ ์ฟผ๋ฆฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ, ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—๊ฒŒ ์“ฐ๊ธฐ ๋˜๋Š” ์ฝ๊ธฐ๋ฅผ ์š”์ฒญ
      • 'SHOW GLOBAL STATUS LIKE Handler%'; ๋ช…๋ น์œผ๋กœ ๋ฐ์ดํ„ฐ ์ž‘์—…์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    • SQLํŒŒ์„œ - SQL๋ฌธ์žฅ์„ ์ชผ๊ฐœ์„œ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋ฅผ ์ฒดํฌํ•˜๊ณ  Parse Tree ๋ฅผ ๋งŒ๋“ฌ
    • ์ „์ฒ˜๋ฆฌ๊ธฐ - Parse Tree ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ SQL ๋ฌธ์žฅ๊ตฌ์กฐ์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ์ฒดํฌ
    • ์˜ตํ‹ฐ๋งˆ์ด์ € - ์ฟผ๋ฆฌ์˜ ์ตœ์ ํ™”๋œ ์‹คํ–‰์„ ๊ณ„ํš
  • ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ - ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฝ์–ด์˜จ๋‹ค.

- MySQL ์„œ๋ฒ„์—์„œ MySQL ์—”์ง„์€ 1๊ฐœ์ง€๋งŒ, ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • CREATE TABLE table_name (column_name, type) ENGINE=INNODB;

- ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋””์ŠคํฌI/O๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์บ์‹ฑ ๊ธฐ๋Šฅ์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๋‹ค.

  • MyISAM ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ - ํ‚ค ์บ์‹œ, InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ - InnoDB ๋ฒ„ํผ ํ’€ ๊ธฐ๋Šฅ์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๋‹ค.

 

4.1.2 MySQL ์Šค๋ ˆ๋”ฉ ๊ตฌ์กฐ

MySQL ์„œ๋ฒ„๋Š” ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ฐ˜์ด ์•„๋‹Œ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

ํฌ๊ฒŒ ํฌ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์™€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

 

- ํฌ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ

  • ์ตœ์†Œ MySQL์„œ๋ฒ„์— ์ ‘์†๋œ ํด๋ผ์ด์–ธํŠธ ์ˆ˜ ๋งŒํผ ์กด์žฌ
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ปค๋„ฅ์…˜์„ ์ข…๋ฃŒํ•˜๋ฉด ํ•ด๋‹น ์ปค๋„ฅ์…˜์„ ๋‹ด๋‹นํ•˜๋Š” ์Šค๋ ˆ๋“œ๋Š” ์Šค๋ ˆ๋“œ ์บ์‹œ๋กœ ๋˜๋Œ์•„๊ฐ„๋‹ค.
    • ์Šค๋ ˆ๋“œ ์บ์‹œ์— ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜๋Š” thread_cache_size ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋กœ ์„ค์ •.
    • ๋งŒ์•ฝ, ์ด ๊ฐ’์„ ๋„˜์–ด๊ฐ€๋ฉด ์ปค๋„ฅ์…˜์ด ์ข…๋ฃŒ๋œ ์Šค๋ ˆ๋“œ๋ฅผ ์บ์‹œ์— ๋„ฃ์ง€์•Š๊ณ  ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ MySQL์˜ ๋ฒ„ํผ๋‚˜ ์บ์‹œ์—์„œ ๊ฐ€์ ธ์˜ค๋ฉฐ, ์ด ๊ณณ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค.

- ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ

  • ์ฃผ๋กœ ๋ฒ„ํผ๋‚˜ ์บ์‹œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์“ฐ๋Š” ์ž‘์—…์„ ๋‹ด๋‹นํ•œ๋‹ค.
    • ๋กœ๊ทธ๋ฅผ ๋””์Šคํฌ๋กœ ์“ฐ๊ธฐ, InnoDB ๋ฒ„ํผ ํ’€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์“ฐ๊ธฐ, ์ž ๊ธˆ/๋ฐ๋“œ๋ฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ

* ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์ข…๋ฅ˜์— ๋”ฐ๋ฅธ ๋ฒ„ํผ๋ง ๊ธฐ๋Šฅ

InnoDB - ๋ฒ„ํผ๋ง ๊ธฐ๋Šฅ ํƒ‘์žฌ๋˜์„œ ์“ฐ๊ธฐ ์ž‘์—…์„ ์ผ๊ด„ ์ฒ˜๋ฆฌํ•จ -> ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Œ

MyISAM - ๋ฒ„ํผ๋ง ๊ธฐ๋Šฅ์ด ์—†์–ด์„œ ์“ฐ๊ธฐ ์ž‘์—… ๊ฑด๋‹น ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค. 

 

4.1.3 ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ๊ตฌ์กฐ

MySQL์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ๊ตฌ๋ถ„

 

- ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

  • ์ด ์˜์—ญ์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ OS๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋œ๋‹ค.
  • ์ƒ์„ฑ๋œ ๊ธ€๋กœ๋ฒŒ ์˜์—ญ์ด N๊ฐœ ์ด๋”๋ผ๋„ ๋ชจ๋“  ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ๊ณต์œ ๋œ๋‹ค.
  • ํ…Œ์ด๋ธ” ์บ์‹œ, InnoDB ๋ฒ„ํผ ํ’€, InnoDB ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค, InnoDB ๋ฆฌ๋‘ ๋กœ๊ทธ ๋ฒ„ํผ๊ฐ€ ์žˆ๋‹ค.
    • ํ…Œ์ด๋ธ” ์บ์‹œ : ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ” ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹ฑ
    • InnoDB ๋ฒ„ํผ ํ’€ : ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ ์ธ๋ฑ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹ฑ
    • InnoDB ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค : ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ํ•ด์‹œ ์ธ๋ฑ์Šค ์ƒ์„ฑํ•˜์—ฌ ์กฐํšŒ ์ด์  ์ œ๊ณต
    • InnoDB ๋ฆฌ๋‘ ๋กœ๊ทธ ๋ฒ„ํผ : ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ž„์‹œ ์ €์žฅํ•œ ํ›„, ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๋Š” ๋ฒ„ํผ

- ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

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

 

4.1.6 ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ตฌ์กฐ

ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ ์ž‘์—…์€ ์—ฌ๋Ÿฌ ํ•˜์œ„ ์ž‘์—…์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

๊ฐ ํ•˜์œ„ ์ž‘์—…์ด MySQL ์—”์ง„ ์˜์—ญ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€, ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ๊ตฌ๋ถ„ํ•  ์ค„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

 

- MySQL ์—”์ง„ ์˜์—ญ

  • ์ฟผ๋ฆฌ ํŒŒ์„œ
    • ์ฟผ๋ฆฌ ๋ฌธ์žฅ์„ ํ† ํฐ(๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„)๋กœ ๋ถ„๋ฆฌํ•ด ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ ๋‹ค.
    • ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋Š” ์ด ๊ณผ์ •์—์„œ ๋ฐœ๊ฒฌ๋˜๋ฉฐ, ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌ
  • ์ „์ฒ˜๋ฆฌ๊ธฐ
    • ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ด๋ธ”/์ปฌ๋Ÿผ ์ด๋ฆ„, ํ•จ์ˆ˜์™€ ๊ฐ™์€ ์กด์žฌ ์—ฌ๋ถ€, ์ ‘๊ทผ ๊ถŒํ•œ์„ ํ™•์ธํ•œ๋‹ค.
  • ์˜ตํ‹ฐ๋งˆ์ด์ €
    • ์ฟผ๋ฆฌ ๋ฌธ์žฅ์„ ์ €๋ ดํ•œ ๋น„์šฉ์œผ๋กœ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •
  • ์‹คํ–‰ ์—”์ง„(์ฟผ๋ฆฌ ์‹คํ–‰๊ธฐ)
    • ์‹คํ–‰ ์—”์ง„์€ ๊ฐ ํ•ธ๋“ค๋Ÿฌ(์Šคํ† ๋ฆฌ์ง€ ์—”์ง„)์—๊ฒŒ ์š”์ฒญํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๊ฑฐ๋‚˜, ๊ฒฐ๊ณผ๋ฅผ ๋‹ค๋ฅธ ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ์ค€๋‹ค.
    • Order By, Group By ๋“ฑ ๋ณต์žกํ•œ ์ฒ˜๋ฆฌ๋Š” MySQL ์—”์ง„์˜ ์ฒ˜๋ฆฌ ์˜์—ญ์ธ ์ด๊ณณ '์ฟผ๋ฆฌ ์‹คํ–‰๊ธฐ' ์—์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค.

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

  • MySQL ์‹คํ–‰ ์—”์ง„์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฝ์–ด ์˜ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

4.1.8 ์ฟผ๋ฆฌ ์บ์‹œ

์ฟผ๋ฆฌ ์บ์‹œ - SQL ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œํ•˜์—ฌ ์ฝ๊ธฐ ์„ฑ๋Šฅ์ด ์ข‹์•˜๋‹ค.

ํ•˜์ง€๋งŒ, ๋™์‹œ ์ฒ˜๋ฆฌ์‹œ์˜ ์„ฑ๋Šฅ ์ €ํ•˜์™€ ๋งŽ์€ ๋ฒ„๊ทธ์˜ ์›์ธ์œผ๋กœ 8.0 ์ดํ›„๋กœ๋Š” ๊ด€๋ จ ๊ธฐ๋Šฅ ๋ฐ ๋ณ€์ˆ˜๊ฐ€ ์™„์ „ํžˆ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค.

 

4.2 InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์•„ํ‚คํ…์ฒ˜

์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์ค‘ ๊ฑฐ์˜ ์œ ์ผํ•˜๊ฒŒ ๋ ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ์ž ๊ธˆ์„ ์ œ๊ณตํ•œ๋‹ค -> ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ์— ๋›ฐ์–ด๋‚˜๋ฉฐ ์•ˆ์ •์ 

4.2.1 ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค์— ์˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ๋ง

- InnoDB์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ”์€ ๊ธฐ๋ณธ์œผ๋กœ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ง๋˜์–ด ์ €์žฅ๋œ๋‹ค.

  • ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋“ค์€ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค ๊ฐ’์˜ ์ˆœ์„œ๋Œ€๋กœ ๋””์Šคํฌ์— ์ €์žฅ๋œ๋‹ค.
  • ์„ธ์ปจ๋”๋ฆฌ ์ธ๋ฑ์Šค๋Š” ๋ ˆ์ฝ”๋“œ์˜ ์ฃผ์†Œ ๋Œ€์‹  ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค์˜ ๊ฐ’์„ ๋…ผ๋ฆฌ์ ์ธ ์ฃผ์†Œ๋กœ ์‚ฌ์šฉ
  • ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ์ด์šฉํ•œ ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ”์€ ์ƒ๋‹นํžˆ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋‹ค.

- MyISAM ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ํด๋Ÿฌ์Šคํ„ฐ๋ง ํ‚ค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ณ , PK๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ์ธ๋ฑ์Šค๋Š” ๋ฌผ๋ฆฌ์ ์ธ ๋ ˆ์ฝ”๋“œ์˜ ์ฃผ์†Œ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.

 

4.2.2 ์™ธ๋ž˜ ํ‚ค ์ง€์›

InnoDB๋Š” ์ง€์›ํ•˜์ง€๋งŒ, MyISAM ๊ณผ MEMORY ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

InnoDB์—์„œ์˜ ์™ธ๋ž˜ํ‚ค ํŠน์ง•

  • ๋ถ€๋ชจ ํ…Œ์ด๋ธ”๊ณผ ์ž์‹ ํ…Œ์ด๋ธ” ๋ชจ๋‘ ํ•ด๋‹น ์นผ๋Ÿผ์— ์ธ๋ฑ์Šค ์ƒ์„ฑ์ด ํ•„์š”
  • ๋ณ€๊ฒฝ ์‹œ์—๋Š” ๋ฐ˜๋“œ์‹œ ๋ถ€๋ชจ/์ž์‹ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž ๊ธˆ์ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”๋กœ ์ „ํŒŒ๋œ๋‹ค.
    • ์ด๋กœ ์ธํ•ด ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ๋•Œ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ ์™ธ๋ž˜ํ‚ค ์กด์žฌ์— ์ฃผ์˜ํ•œ๋‹ค.

InnoDB์—์„œ์˜ ์™ธ๋ž˜ํ‚ค ์ฒดํฌ ํ•ด์ œ( ์„œ๋น„์Šค์— ๊ธด๊ธ‰ ์กฐ์น˜๋ฅผ ์œ„ํ•ด ์™ธ๋ž˜ํ‚ค ์ œ์•ฝ์กฐ๊ฑด์„ ๊บผ์•ผํ•  ๋•Œ )

  •  SET SESSION foreign_key_checks=OFF ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์„ธ์…˜์— ๋Œ€ํ•ด ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ OFF๋กœ ์„ค์ •ํ•˜๋ฉด ์™ธ๋ž˜ํ‚ค ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ฒดํฌ ์ž‘์—…์„ ์ผ์‹œ์ ์œผ๋กœ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ๋‹ค.
    • ๋งŒ์•ฝ, SESSION ์„ ๋นผ๋จน๋Š”๋‹ค๋ฉด GLOBAL ๋กœ ์ ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ ๋ฐ›์•„๋“ค์—ฌ MySQL์„œ๋ฒ„๋Š” ๋ชจ๋“  ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค ์ฒดํฌ๋ฅผ ๋„๊ฒŒ ๋˜๋‹ˆ ์ฃผ์˜ํ•˜์ž.

 

4.2.3 MVCC (Multi Version Concurrency Control)

- ๊ฐœ๋…

  • ์ž ๊ธˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ผ๊ด€๋œ ์ฝ๊ธฐ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•จ
  • InnoDB ๋Š” ์–ธ๋‘ ๋กœ๊ทธ(Undo log)๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฒ„์ „์ด ๋™์‹œ์— ๊ด€๋ฆฌ๋œ๋‹ค๋Š” ์˜๋ฏธ

- ์˜ˆ์‹œ

id = 1 ์ด๊ณ , name = '๊ทธ๋กœ๋ฐ‹' ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด "UPDATE table_name SET name='์›”๋ ˆ์Šค' WHERE id=1;" ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฑธ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

UPDATE ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋  ๋•Œ, MVCC๋ฅผ ํ†ตํ•ด ์ผ๊ด€๋œ ์ฝ๊ธฐ๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ณผ์ •

  • ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด, id = 1 ์ด๊ณ , name = '๊ทธ๋กœ๋ฐ‹'  ์„ InnoDB ๋ฒ„ํผ ํ’€์— ์ ์žฌํ•œ๋‹ค.
  • ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉด, id = 1 ์ด๊ณ , name = '๊ทธ๋กœ๋ฐ‹' ์„ ์–ธ๋‘ ๋กœ๊ทธ์— ๋ณต์‚ฌํ•˜๊ณ , id = 1 ์ด๊ณ , name='์›”๋ ˆ์Šค' ๋ฅผ InnoDB ๋ฒ„ํผ ํ’€์— ์ ์žฌํ•œ๋‹ค.
  • ๋งŒ์•ฝ, ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด READ_UNCOMMITTED ๋ผ๋ฉด ๋ณ€๊ฒฝํ•˜๋ ค๋Š”  id = 1 ์ด๊ณ , name='์›”๋ ˆ์Šค' ๋ฅผ ๋ฒ„ํผ ํ’€์—์„œ ์ฝ์–ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ๋งŒ์•ฝ, ๊ทธ ์ด์ƒ์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด๋ผ๋ฉด ๊ธฐ์กด ๊ฐ’์ธ id = 1 ์ด๊ณ , name = '๊ทธ๋กœ๋ฐ‹' ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

- ๊ฒฐ๋ก 

์ฆ‰, ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ( id = 1 ์ด๊ณ , name = '๊ทธ๋กœ๋ฐ‹' ) ์— ๋Œ€ํ•ด 2๊ฐœ์˜ ๋ฒ„์ „์ด ์œ ์ง€๋˜๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ์–ด๋Š ๋ฐ์ดํ„ฐ๊ฐ€ ์ฝ์–ด ์ง€๋Š”์ง€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๊ตฌ์กฐ์ด๋‹ค.

 

๋งŒ์•ฝ, ํŠธ๋žœ์žญ์…˜์ด ๊ธธ์–ด์ง€๋ฉด ์–ธ๋‘๋กœ๊ทธ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜์ง€ ๋ชปํ•˜๊ณ  ๋ฌดํ•œํžˆ ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋Š” MySQL ์„œ๋ฒ„๊ฐ€ ๋Š๋ ค์ง€๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

์–ธ๋‘ ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋Š” ์ด ์˜์—ญ์„ ํ•„์š”๋กœ ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์ด ์—†์„ ๋•Œ ๋น„๋กœ์†Œ ์‚ญ์ œ๋œ๋‹ค.

  • ๊ทธ๋Ÿฌ๋‹ˆ ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋๋‹ค๋ฉด ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ๋กค๋ฐฑ์ด๋‚˜ ์ปค๋ฐ‹์„ ํ†ตํ•ด ํŠธ๋žœ์žญ์…˜์„ ์™„๋ฃŒํ•˜์ž

 

4.2.5 ์ž๋™ ๋ฐ๋“œ๋ฝ ๊ฐ์ง€

InnoDB ๋Š” ๋ฐ๋“œ๋ฝ ๊ฐ์ง€ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ์‹œ 2๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜ ์ค‘ ์–ธ๋‘ ๋กœ๊ทธ ์–‘์ด ์ ์€ ํŠธ๋žœ์žญ์…˜์„ ๊ฐ•์ œ ์ข…๋ฃŒํ•œ๋‹ค, ์ด๋Š” ๋กค๋ฐฑ์„ ํ•ด๋„ ์–ธ๋‘ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•  ๋‚ด์šฉ์ด ์ ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

innodb_table_locks

  • ํ…Œ์ด๋ธ” ์ž ๊ธˆ์„ ํ™œ์„ฑํ™” ํ•˜๋Š” ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋กœ ํ…Œ์ด๋ธ” ๋‹จ์œ„ ๋ฐ๋“œ๋ฝ์„ ๊ฐ์ง€ํ•œ๋‹ค.

innodb_deadlock_detect

  • ๋ฐ๋“œ๋ฝ ๊ฐ์ง€ ์Šค๋ ˆ๋“œ์ธ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์ด๋‹ค.
  • ๋™์‹œ ์ฒ˜๋ฆฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋งค์šฐ ๋งŽ๊ฑฐ๋‚˜ ๊ฐ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ€์ง„ ์ž ๊ธˆ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋ฐ๋“œ๋ฝ ๊ฐ์ง€ ์Šค๋ ˆ๋“œ๋Š” ๋Š๋ ค์ง„๋‹ค.
  • ๋ฐ๋“œ๋ฝ ๊ฐ์ง€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋Š๋ ค์ง€๋ฉด ์„œ๋น„์Šค ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌ ์ค‘์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋Š๋ ค์ง„๋‹ค.

innodb_lock_wait_timeout

  • ๋ฐ๋“œ๋ฝ ๊ฐ์ง€ ์Šค๋ ˆ๋“œ๊ฐ€ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ผ์ณ์„œ OFFํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ๋“œ๋ฝ ์ƒํ™ฉ์—์„œ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ž๋™์œผ๋กœ ์š”์ฒญ์ด ์‹คํŒจํ•˜๋„๋ก ํ•œ๋‹ค.
  • ์ดˆ๋‹จ์œ„ ์„ค์ • ๊ฐ€๋Šฅ์ด๋ฉฐ, ๊ธฐ๋ณธ๊ฐ’ 50์ดˆ ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ฎ์€ ์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉํ•˜์ž

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ Google ์ด ์˜ค๋ผํด์— ์š”์ฒญํ•ด์„œ ์ƒ๊ธฐ๊ฒŒ ๋˜์—ˆ๋‹ค. Google ์€ ๋™์‹œ ์ฒ˜๋ฆฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋งค์šฐ ๋งŽ๊ณ , ํŠธ๋žœ์žญ์…˜์ด ๊ฐ€์ง„ ์ž ๊ธˆ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์„œ ๋ฐ๋“œ๋ฝ ๊ฐ์ง€ ์Šค๋ ˆ๋“œ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ๋‚ฎ์•„์กŒ์—ˆ๋‹ค.

์ฆ‰, PK ๋˜๋Š” ์„ธ์ปจ๋”๋ฆฌ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งค์šฐ ๋†’์€ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ์š”๊ตฌํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด innodb_deadlock_detect ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์„œ ์„ฑ๋Šฅ ๋น„๊ต๋ฅผ ํ•ด๋ณด๋Š” ๊ฒƒ๋„ ํ•œ ๊ธฐํšŒ๋ผ๊ณ  ํ•œ๋‹ค.

 

4.2.7 InnoDB ๋ฒ„ํผ ํ’€

๋ฒ„ํผ ํ’€์˜ ํฌ๊ธฐ ์„ค์ •

  • ์“ฐ๊ธฐ์ž‘์—…์„ ์ง€์—ฐ์‹œ์ผœ ์ผ๊ด„ ์ž‘์—…์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์„œ ๋””์Šคํฌ์˜ ๋žœ๋คI/O ๋ฅผ ์ค„์ธ๋‹ค.
  • ์šด์˜์ฒด์ œ์˜ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 8GB ๋ฏธ๋งŒ์ด๋ผ๋ฉด 50% ๋งŒ ๋ฒ„ํผํ’€ ๋กœ ์„ค์ •ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
  • 8GB ์ด์ƒ์ธ ๊ฒฝ์šฐ, ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ์˜ 50% ์—์„œ ์‹œ์ž‘ํ•ด์„œ ์กฐ๊ธˆ์”ฉ ์˜ฌ๋ ค๊ฐ€๋ฉฐ ์ตœ์ ์ ์„ ์ฐพ๋Š”๋‹ค.
  • innodb_buffer_pool_size ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋กœ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํ’€ ์‚ฌ์ด์ฆˆ๋ฅผ ํฌ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ์‹œ์Šคํ…œ ์˜ํ–ฅ๋„๊ฐ€ ํฌ์ง€ ์•Š์ง€๋งŒ, ํ’€ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์€ ์„œ๋น„์Šค ์˜ํ–ฅ์ด ๋งค์šฐ ํฐ ์ž‘์—…์ด๋‹ˆ ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜

 

4.2.9 ์–ธ๋‘ ๋กœ๊ทธ

  • ํŠธ๋žœ์žญ์…˜ ๋กค๋ฐฑ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์˜์—ญ์ด๋‹ค.
    • ๋งŒ์•ฝ, ํŠธ๋žœ์žญ์…˜์ด ๊ธธ์–ด์ง€๋ฉด ์–ธ๋‘๋กœ๊ทธ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜์ง€ ๋ชปํ•˜๊ณ  ๋ฌดํ•œํžˆ ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋Š” MySQL ์„œ๋ฒ„๊ฐ€ ๋Š๋ ค์ง€๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์–ธ๋‘ ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋Š” ์ด ์˜์—ญ์„ ํ•„์š”๋กœ ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์ด ์—†์„ ๋•Œ ๋น„๋กœ์†Œ ์‚ญ์ œ๋œ๋‹ค.
    • ๊ทธ๋Ÿฌ๋‹ˆ ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋๋‹ค๋ฉด ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ๋กค๋ฐฑ์ด๋‚˜ ์ปค๋ฐ‹์„ ํ†ตํ•ด ํŠธ๋žœ์žญ์…˜์„ ์™„๋ฃŒํ•˜์ž
  • MySQL 8.0 ๋ฒ„์ „์—์„œ ์•„๋ž˜ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์–ธ๋‘ ๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ ๊ฑด์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
SELECT count
FROM information_schema.innodb_metrics
WHERE SUBSYSTEM='transaction' AND NAME='trx_rseg_history_len';

 

4.2.10 ์ฒด์ธ์ง€ ๋ฒ„ํผ

INSERT, UPDATE ๋  ๋•Œ๋Š” ์ธ๋ฑ์Šค๋„ ์—…๋ฐ์ดํŠธ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์ด ์ž‘์—…์€ ๋””์Šคํฌ๋ฅผ ๋žœ๋คํ•˜๊ฒŒ ์ฝ๊ฒŒ ํ•˜์—ฌ ํ…Œ์ด๋ธ”์— ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ๋‹ค๋ฉด ์ด๋Š” ๋งŽ์€ ์ž์›์„ ์†Œ๋ชจํ•˜๊ฒŒ ๋œ๋‹ค.

 

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

 

- ํŠน์ง•

  • ๊ธฐ๋ณธ์ ์œผ๋กœ InnoDB ๋ฒ„ํผ ํ’€์˜ ๋ฉ”๋ชจ๋ฆฌ 25% ์ •๋„๊นŒ์ง€ ์‚ฌ์šฉํ•œ๋‹ค.(์„ค์ •์œผ๋กœ 50%๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค)
  • ์ฝ๊ธฐ ์ž‘์—…์ด ๋นˆ๋ฒˆํ•  ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ์œ ๋‹ˆํฌ ์ธ๋ฑ์Šค๋Š” ์ฒด์ธ์ง€ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.(์„ธ์ปจ๋”๋ฆฌ ์ธ๋ฑ์Šค์—๋งŒ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค)
    • ์ค‘๋ณตํ™•์ธ์„ ๋””์Šคํฌ์—์„œ ์ฆ‰์‹œ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ

 

4.2.11 ๋ฆฌ๋‘ ๋กœ๊ทธ

  • MySQL ์„œ๋ฒ„๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋์„ ๋•Œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๊ธฐ๋ก๋˜์ง€ ๋ชปํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์ง€ ์•Š๊ฒŒ ํ•ด์ฃผ๋Š” ์•ˆ์ „์žฅ์น˜
  • ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋ผ๋„ ๋ฐ์ดํ„ฐ๋Š” ์ฆ‰์‹œ ๋””์Šคํฌ๋กœ ๋™๊ธฐํ™” ๋˜์ง€ ์•Š์ง€๋งŒ, ๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” ํ•ญ์ƒ ๋””์Šคํฌ๋กœ ๊ธฐ๋ก๋œ๋‹ค.
  • MySQL 8.0 ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๊ฑฐ๋‚˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์ ์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ฆฌ๋‘๋กœ๊ทธ๋ฅผ ๋น„ํ™œ์„ฑํ™” ํ•ด์„œ ๋ฐ์ดํ„ฐ์˜ ์ ์žฌ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.
ALTER INSTANCE DISABLE INNODB REDO_LOG; // ๋ฆฌ๋‘๋กœ๊ทธ ๋น„ํ™œ์„ฑํ™”
LOAD DATA ... // ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ ์žฌ
ALTER INSTANCE ENABLE INNODB REDO_LOG; // ๋ฆฌ๋‘๋กœ๊ทธ ํ™œ์„ฑํ™”
  • SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_enabled'; ๋ฅผ ํ†ตํ•ด ๋ฆฌ๋‘๋กœ๊ทธ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

 

4.2.12 ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค

๊ฐœ๋…

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹Œ InnoDB ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์ฃผ ์š”์ฒญํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์ธ๋ฑ์Šค
  • innodb_adaptive_hash_index ๋กœ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • B-Tree ์˜ ๊ฒ€์ƒ‰์ธ ๋ฃจํŠธ๋…ธ๋“œ๋ถ€ํ„ฐ ๋ฆฌํ”„๋…ธ๋“œ๊นŒ์ง€ ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์„ ์ค„์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ๊ธฐ๋Šฅ
    • ์–ด๋–ป๊ฒŒ? ํ•ด์‹œ ์ธ๋ฑ์Šค์˜ Key๋Š” 'B-Tree ์ธ๋ฑ์Šค์˜ ๊ณ ์œ  ๋ฒˆํ˜ธ', Value ๋Š” 'B-Tree ์˜ ์‹ค์ œ ํ‚ค ๊ฐ’์ธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ' ์˜ ์กฐํ•ฉ์ด๋‹ค.

์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€๋˜๋Š” ๊ฒฝ์šฐ

  • ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ innoDB ๋ฒ„ํผ ํ’€ ํฌ๊ธฐ์™€ ๋น„์Šทํ•œ ๊ฒฝ์šฐ(๋””์Šคํฌ ์ฝ๊ธฐ๊ฐ€ ๋งŽ์ง€ ์•Š์€ ๊ฒฝ์šฐ)
  • ๋™๋“ฑ ์กฐ๊ฑด ๊ฒ€์ƒ‰( = ๋น„๊ต์™€ IN ์—ฐ์‚ฐ์ž)์ด ๋งŽ์€ ๊ฒฝ์šฐ
  • ์ฟผ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ์—๋งŒ ์ง‘์ค‘๋˜๋Š” ๊ฒฝ์šฐ

์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

  • ๋””์Šคํฌ ์ฝ๊ธฐ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ
  • ํŠน์ • ํŒจํ„ด์˜ ์ฟผ๋ฆฌ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ(join ์ด๋‚˜ LIKE ํŒจํ„ด)
  • ๋งค์šฐ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ํญ ๋„“๊ฒŒ ์ฝ๋Š” ๊ฒฝ์šฐ

ํŠน์ง•

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

 

์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค๊ฐ€ ๋„์›€์ด ๋˜๋Š”์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ํ•ด์‹œ ์ธ๋ฑ์Šค ํžˆํŠธ์œจ, ํ•ด์‹œ ์ธ๋ฑ์Šค๊ฐ€ ์‚ฌ์šฉ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„, ์„œ๋ฒ„์˜ CPU ์‚ฌ์šฉ๋Ÿ‰์„ ์ข…ํ•ฉํ•ด์„œ ํŒ๋‹จํ•ด์•ผ ํ•œ๋‹ค.