Skip to content

Latest commit

ย 

History

History
671 lines (521 loc) ยท 57.7 KB

Section4-2.md

File metadata and controls

671 lines (521 loc) ยท 57.7 KB

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

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-18 แ„‹แ…ฉแ„’แ…ฎ 9 06 09
  • InnoDB๋Š” MySQL์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์ค‘ ์œ ์ผํ•˜๊ฒŒ ๋ ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ์ž ๊ธˆ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ๋†’์€ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ์•ˆ์ •์ ์ด๋ฉฐ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋‹ค.

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

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

  • ์ฆ‰, ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค ๊ฐ’์˜ ์ˆœ์„œ๋Œ€๋กœ ๋””์Šคํฌ์— ์ €์žฅ๋œ๋‹ค.
  • ๋ชจ๋“  ์„ธ์ปจ๋”๋ฆฌ ์ธ๋ฑ์Šค๋Š” ๋ ˆ์ฝ”๋“œ์˜ ์ฃผ์†Œ ๋Œ€์‹  ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค์˜ ๊ฐ’์„ ๋…ผ๋ฆฌ์ ์ธ ์ฃผ์†Œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ์ด์šฉํ•œ ๋ ˆ์ธ์ง€ ์Šค์บ”์€ ์ƒ๋‹นํžˆ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš์—์„œ ๋‹ค๋ฅธ ๋ณด์กฐ ์ธ๋ฑ์Šค์— ๋น„ํ•ด ๋น„์ค‘์ด ๋†’๊ฒŒ ์„ค์ •๋œ๋‹ค. (์‹คํ–‰ ๊ณ„ํš์—์„œ ์„ ํƒ๋  ํ™•๋ฅ ์ด ๋†’๋‹ค) โžก๏ธ 8.8์žฅ์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃธ

MyISAM ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ํด๋Ÿฌ์Šคํ„ฐ๋ง ํ‚ค๋ฅผ ์ง€์›ํ•˜์ง€์•Š๋Š”๋‹ค.

  • MyISAM ํ…Œ์ด๋ธ”์—์„œ ํ”„๋Ÿฌ์ด๋จธ๋ฆฌ ํ‚ค์™€ ์„ธ์ปจ๋”๋ฆฌ ์ธ๋ฑ์Šค๋Š” ๊ตฌ์กฐ์ ์œผ๋กœ ์ฐจ์ด๊ฐ€ ์—†๋‹ค.
  • ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋Š” ์œ ๋‹ˆํฌ ์ œ์•ฝ์„ ๊ฐ€์ง„ ์„ธ์ปจ๋”๋ฆฌ ์ธ๋ฑ์Šค์ผ ๋ฟ์ด๋‹ค.
  • MyISAM ํ…Œ์ด๋ธ”์˜ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ์ธ๋ฑ์Šค๋Š” ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์†Œ๊ฐ’(ROWID)๋ฅผ ๊ฐ–๋Š”๋‹ค. โžก๏ธ 4.3.3์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃธ

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

์™ธ๋ž˜ ํ‚ค๋Š” InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๋ ˆ๋ฒจ์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ MyISAM, MEMORY ํ…Œ์ด๋ธ”์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

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

์™ธ๋ž˜ํ‚ค๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ์–ฝํžŒ๊ฒฝ์šฐ ์ˆ˜๋™ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ/์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ ๋“ฑ์˜ ์ž‘์—…์ด ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ธด๊ธ‰ํ•˜๊ฒŒ ๋ญ”๊ฐ€ ์กฐ์น˜๋ฅผ ํ•ด์•ผํ•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ foreign_key_checks ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ OFF๋กœ ์„ค์ •ํ•˜๋ฉด ์™ธ๋ž˜ ํ‚ค ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ฒดํฌ์ž‘์—…์„ ์ผ์‹œ์ ์œผ๋กœ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฉˆ์ถ”๋ฉด ๋ ˆ์ฝ”๋“œ ์ ์žฌ๋‚˜ ์‚ญ์ œ ๋“ฑ์˜ ์ž‘์—…๋„ ๋ถ€๊ฐ€์ ์ธ ์ฒดํฌ๊ฐ€ ํ•„์š”์—†๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
mysql> SET foreign_key_checks=OFF;
// ์ž‘์—…์‹คํ–‰
mysql> SET foreign_key_checks=ON;

์ด๋Š” GLOBAL, SESSION ๋ชจ๋‘ ์„ค์ •๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜์ด๋‹ค. ์ด๋Ÿฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋• ํ˜„์žฌ ์„ธ์…˜์—๋งŒ ์ ์šฉํ•ด์•ผํ•˜๋ฏ€๋กœ SESSIONํ‚ค์›Œ๋“œ๋ฅผ ๋ช…์‹œํ•˜๋˜์ง€ ์•„๋‹ˆ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ช…์‹œํ•˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค. ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฐ˜๋“œ์‹œ ํ˜„์žฌ ์„ธ์…˜์„ ์ข…๋ฃŒํ•˜๊ฑฐ๋‚˜, ์™ธ๋ž˜ํ‚ค ์ฒดํฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์ž.

ํ•˜์ง€๋งŒ ์ผ์‹œ์ ์œผ๋กœ ํ•ด์ œํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๊ฐ€ ๊นจ์ง„ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ด๋„๋˜๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค.

  • ๋งŒ์•ฝ ์™ธ๋ž˜ํ‚ค ์ฒดํฌ๋ฅผ ์ค‘์ง€ํ•œ ์ƒํƒœ์—์„œ ์™ธ๋ž˜ํ‚ค ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ๋ถ€๋ชจ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ–ˆ๋‹ค๋ฉด, ์ž์‹ ๋ ˆ์ฝ”๋“œ๋„ ์‚ญ์ œํ•ด์•ผํ•œ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ผ๊ด€์„ฑ์„ ๋งž์ถฐ์ค€ ํ›„ ๋‹ค์‹œ ์™ธ๋ž˜ํ‚ค ์ฒดํฌ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•ด์•ผํ•œ๋‹ค.

๋งŒ์•ฝ ์™ธ๋ž˜ํ‚ค ์ฒดํฌ๊ฐ€ ์ค‘์ง€๋˜์—ˆ๋‹ค๋ฉด ON DELETE CASCADE, ON UPDATE CASCADE ์˜ต์…˜์€ ๋ฌด์‹œ๋œ๋‹ค. ์ด๋Š” ์ž๋™์œผ๋กœ ์ž์‹ ํ…Œ์ด๋ธ”์— ๋งค์น˜๋˜๋Š” row์—๋„ ๋˜‘๊ฐ™์ด DELETE, UPDATE๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

4.2.3 MVCC(Multi Version Concurrency Control)

๋ ˆ์ฝ”๋“œ ๋ ˆ๋ฒจ์˜ ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜๋Š” DBMS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋ฉฐ, MVCC์˜ ๊ฐ€์žฅ ํฐ ๋ชฉ์ ์€ ์ž ๊ธˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ผ๊ด€๋œ ์ฝ๊ธฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์žˆ๋‹ค.

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

Isolation level์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์˜ˆ์‹œ

  1. ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.
mysql> CREATE TABLE member (
    m_id INT NOT NULL,
    m_name VARCHAR(20) NOT NULL,
    m_area VARCHAR(100) NOT NULL,
    PRIMARY KEY (m_id),
    INDEX ix_area (m_area)
    );
  1. ๋ ˆ์ฝ”๋“œ ํ•œ๊ฑด์„ INSERTํ•œ๋‹ค.
mysql> INSERT INTO member (m_id, m_name, m_area) VALUES (12, 'ํ™๊ธธ๋™', '์„œ์šธ');
mysql> COMMIT;
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-18 แ„‹แ…ฉแ„’แ…ฎ 9 48 48
  1. ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.
mysql> UPDATE member SET m_area = '๊ฒฝ๊ธฐ' where m_id = 12;
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-18 แ„‹แ…ฉแ„’แ…ฎ 9 50 30

update ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์ปค๋ฐ‹ ์‹คํ–‰ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„ ์—†์ด InnoDB ๋ฒ„ํผํ’€์€ ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ํŒŒ์ผ(๋””์Šคํฌ)๋Š” ์ฒดํฌํฌ์ธํŠธ๋‚˜ InnoDB์˜ Write ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์—…๋ฐ์ดํŠธ๋ผ์žˆ์„ ์ˆ˜ ๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜ ๋„ ์žˆ๋‹ค.

  • InnoDB๊ฐ€ ACID๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ InnoDB์˜ ๋ฒ„ํผํ’€๊ณผ ๋ฐ์ดํ„ฐํŒŒ์ผ์€ ๋™์ผํ•œ ์ƒํƒœ๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

์•„์ง COMMIT์ด๋‚˜ ROLLBACK์„ ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์กฐํšŒํ•˜๋ฉด ์–ด๋”” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ• ๊นŒ?

SELECT * FROM member where m_id = 12;
  • ์ด๋Š” ์‹œ์Šคํ…œ๋ณ€์ˆ˜(transaction_isolation)์— ์„ค์ •๋œ Isolation level(๊ฒฉ๋ฆฌ์ˆ˜์ค€)์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.
  • READ_UNCOMMITTED: ๋ฒ„ํผ ํ’€์ด ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • READ_COMMITTED or ๊ทธ ์ด์ƒ์˜ ๊ฒฉ๋ฆฌ: ์•„์ง ์ปค๋ฐ‹์ด ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„ํผ ํ’€์ด๋‚˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋Œ€์‹  ๋ณ€๊ฒฝ๋˜๊ธฐ ์ด์ „์˜ ๋‚ด์šฉ์„ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ๋Š” ์–ธ๋‘ ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ๊ทธ ์ด์ƒ์˜ ๊ฒฉ๋ฆฌ: REPEATABLE_READ, SERIALIZABLE

๊ทธ๋ž˜์„œ MVCC๋ž€

์ด๋Ÿฌํ•œ ๊ณผ์ •์„ DBMS์—์„œ๋Š” MVCC๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค. ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด 2๊ฐœ์˜ ๋ฒ„์ „์ด ์œ ์ง€๋˜๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ์–ด๋Š ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์—ฌ์ง€๋Š”์ง€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๊ตฌ์กฐ๋‹ค.

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

COMMIT & ROLLBACK

์œ„ ์ƒํƒœ์—์„œ ์ปค๋ฐ‹์„ ์‹คํ–‰ํ•˜๋ฉด, InnoDB๋Š” ๋”์ด์ƒ์˜ ๋ณ€๊ฒฝ ์ž‘์—… ์—†์ด ์ง€๊ธˆ์˜ ์ƒํƒœ๋ฅผ ์˜๊ตฌ์ ์ธ ๋ฐ์ดํ„ฐ๋กœ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆฐ๋‹ค.

ํ•˜์ง€๋งŒ ๋กค๋ฐฑ์„ ์‹คํ–‰ํ•˜๋ฉด InnoDB๋Š” ์–ธ๋‘ ์˜์—ญ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ ํ’€๋กœ ๋‹ค์‹œ ๋ณต๊ตฌํ•˜๊ณ , ์–ธ๋‘ ์˜์—ญ์˜ ๋‚ด์šฉ์„ ์‚ญ์ œํ•œ๋‹ค.

์ปค๋ฐ‹์„ ํ•œ๋‹ค๊ณ ํ•ด์„œ ์–ธ๋‘ ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋กœ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, ์–ธ๋‘ ์˜์—ญ์„ ํ•„์š”๋กœ ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์ด ์—†์„ ๋•Œ ์‚ญ์ œ๋œ๋‹ค.

4.2.4 ์ž ๊ธˆ ์—†๋Š” ์ผ๊ด€๋œ ์ฝ๊ธฐ(Non-Locking Consistent Read)

MVCC ๊ธฐ์ˆ ์„ ํ†ตํ•ด, ์ฝ๊ธฐ ์ž‘์—…์€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ž ๊ธˆ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • SERIALIZABLE๋ฅผ ์ œ์™ธํ•œ READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์—์„œ ์ˆœ์ˆ˜ํ•œ ์ฝ๊ธฐ(SELECT)๋Š” ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ๋ณ€๊ฒฝ ์ž‘์—…๊ณผ ๊ด€๊ณ„์—†์ด ์ž ๊ธˆ์„ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์‹คํ–‰ํ•œ๋‹ค.
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-18 แ„‹แ…ฉแ„’แ…ฎ 10 10 43

๋ณ€๊ฒฝ ํŠธ๋žœ์žญ์…˜์ด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ SELECT ์ž‘์—…์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋Š”๋‹ค. โžก๏ธ ์ž ๊ธˆ ์—†๋Š” ์ผ๊ด€๋œ ์ฝ๊ธฐ

  • ์˜ค๋žœ ์‹œ๊ฐ„ ํ™œ์„ฑ ์ƒํƒœ์ธ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ธํ•ด MySQL ์„œ๋ฒ„๊ฐ€ ๋Š๋ ค์ง€๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ
  • ์ด๋Ÿฐ ์ผ๊ด€๋œ ์ฝ๊ธฐ๋ฅผ ์œ„ํ•ด ์–ธ๋‘ ๋กœ๊ทธ๋ฅผ ์‚ญ์ œํ•˜์ง€ ๋ชปํ•˜๊ณ  ๊ณ„์† ์œ ์ง€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋‹ค.
  • ๋”ฐ๋ผ์„œ ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋๋‹ค๋ฉด ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ๋กค๋ฐฑ/์ปค๋ฐ‹์œผ๋กœ ํŠธ๋žœ์žญ์…˜์„ ์™„๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

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

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ž ๊ธˆ์ด ๊ต์ฐฉ ์ƒํƒœ์— ๋น ์ง€์ง€ ์•Š์•˜๋Š”์ง€ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•ด ์ž ๊ธˆ ๋Œ€๊ธฐ ๋ชฉ๋ก์„ ๊ทธ๋ž˜ํ”„(Wait-for List)ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

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

์ฐธ๊ณ ๋กœ ์ƒ์œ„ ๋ ˆ์ด์–ด์ธ MySQL ์—”์ง„์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ํ…Œ์ด๋ธ” ์ž ๊ธˆ(Lock Tables ๋ช…๋ น์œผ๋กœ ์ž ๊ธด ํ…Œ์ด๋ธ”)์€ ๋ณผ ์ˆ˜ ์—†์–ด์„œ ๋ฐ๋“œ๋ฝ ๊ฐ์ง€๊ฐ€ ๋ถˆํ™•์‹คํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.
์ด๋•Œ innodb_table_locks ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋ ˆ์ฝ”๋“œ ์ž ๊ธˆ๋ฟ ์•„๋‹ˆ๋ผ ํ…Œ์ด๋ธ” ์ž ๊ธˆ๊นŒ์ง€ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

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

์ด๋Ÿฐ ์ƒํ™ฉ์—์„  innodb_deadlock_detect๋ฅผ OFF๋กœ ์„ค์ •ํ•˜์—ฌ ๋ฐ๋“œ๋ฝ ๊ฐ์ง€ ์Šค๋ ˆ๋“œ์˜ ์ž‘๋™์„ ๋ฉˆ์ถ˜๋‹ค.

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

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

4.2.6 ์ž๋™ํ™”๋œ ์žฅ์•  ๋ณต๊ตฌ

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

์†์ƒ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ ๊ณผ์ •

  • InnoDB์˜ ๋กœ๊ทธํŒŒ์ผ์ด ์†์ƒ๋๋‹ค๋ฉด innodb_force_recovery๋ฅผ 6์œผ๋กœ ์„ค์ •ํ•˜๊ณ  MySQL์„œ๋ฒ„๋ฅผ ๊ธฐ๋™ํ•œ๋‹ค.
  • InnoDB ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ์†์ƒ๋๋‹ค๋ฉด innodb_force_recovery๋ฅผ 1๋กœ ์„ค์ •ํ•˜๊ณ  MySQL ์„œ๋ฒ„๋ฅผ ๊ธฐ๋™ํ•œ๋‹ค
  • ์–ด๋–ค ๋ถ€๋ถ„์ด ๋ฌธ์ œ์ธ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค๋ฉด, 1~6๊นŒ์ง€ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ MySQL์„ ์žฌ์‹œ์ž‘ํ•ด๋ณธ๋‹ค.
    • ๊ฐ’์ด ์ปค์งˆ์ˆ˜๋ก ๊ทธ๋งŒํผ ์‹ฌ๊ฐํ•œ ์ƒํ™ฉ์ด๊ธฐ๋•Œ๋ฌธ์— ์†์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง€๊ณ  ๋ณต๊ตฌ ๊ฐ€๋Šฅ์„ฑ์€ ์ž‘์•„์ง„๋‹ค.

์ผ๋‹จ MySQL ์„œ๋ฒ„๊ฐ€ ๊ธฐ๋™๋˜๊ณ  InnoDB ํ…Œ์ด๋ธ”์ด ์ธ์‹๋œ๋‹ค๋ฉด, mysqldump๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋Šฅํ•œ ๋งŒํผ ๋ฐฑ์—…ํ•˜๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ๋กœ MySQL ์„œ๋ฒ„์˜ DB์™€ ํ…Œ์ด๋ธ”์„ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

innodb_force_recovery๊ฐ€ 0์ด ์•„๋‹Œ ๋ณต๊ตฌ๋ชจ๋“œ์—์„œ๋Š” select ์ด์™ธ์˜ insert, update, delete ๊ฐ™์€ ์ฟผ๋ฆฌ๋Š” ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.

๊ทธ๋ž˜๋„ ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š์œผ๋ฉด ๋งˆ์ง€๋ง‰ ๋ฐฑ์—…์œผ๋กœ DB๋ฅผ ์ƒˆ๋กœ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด ์ตœ๋Œ€ํ•œ ์žฅ์•  ์‹œ์ ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.

4.2.7 InnoDB ๋ฒ„ํผํ’€

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„, ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด๋‚˜ ์ธ๋ฑ์Šค ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œํ•ด ๋‘๋Š” ๊ณต๊ฐ„์ด๋‹ค.

์“ฐ๊ธฐ ์ž‘์—…์„ ์ง€์—ฐ์‹œ์ผœ ์ผ๊ด„ ์ž‘์—…์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฒ„ํผ์—ญํ• ๋„ ๊ฐ™์ดํ•œ๋‹ค. ๋ฒ„ํผ๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋žœ๋คํ•œ ๋””์Šคํฌ ์ž‘์—…์˜ ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

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

์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ฒด ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ 80%์ •๋„๋ฅผ ๋ฒ„ํผํ’€๋กœ ์„ค์ •ํ•˜๋ผ๋Š” ๊ฒŒ์‹œ๋ฌผ๋„ ์žˆ์ง€๋งŒ, OS์™€ ํด๋ผ์ด์–ธํŠธ ์Šค๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉํ•  ๋ฉ”๋ชจ๋ฆฌ๋„ ์ถฉ๋ถ„ํžˆ ๊ณ ๋ คํ•ด์„œ ์„ค์ •ํ•ด์•ผํ•œ๋‹ค.

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

5.7๋ฒ„์ „๋ถ€ํ„ฐ๋Š” InnoDB ๋ฒ„ํผํ’€์˜ ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ์„ ๋ฌ๋‹ค.

  • ๋”ฐ๋ผ์„œ ํฌ๊ธฐ๋ฅผ ์ž‘์€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด ์กฐ๊ธˆ์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด ์ตœ์ ์ด๋‹ค.
  • ์ฒ˜์Œ MySQL ์„œ๋ฒ„๋ฅผ ์ค€๋น„ํ•œ๋‹ค๋ฉด, OS ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ 50% ์ •๋„๋งŒ ๋ฒ„ํผํ’€๋กœ ์„ค์ •ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๊ณต๊ฐ„์€ MySQL ์„œ๋ฒ„์™€ OS, ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์œผ๋กœ ํ™•๋ณดํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
    • ๊ทธ๋ฆฌ๊ณ  ์กฐ๊ธˆ์”ฉ ์˜ฌ๋ ค๊ฐ€์…˜์„œ ์ตœ์ ์ ์„ ์ฐพ๋Š”๋‹ค.

InnoDB ๋ฒ„ํผํ’€์€ innodb_buffer_pool_size ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋กœ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋™์ ์œผ๋กœ ๋ฒ„ํผํ’€ ํฌ๊ธฐ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ•˜์ง€๋งŒ ์ด๋Š” ํฌ๋ฆฌํ‹ฐ์ปฌํ•œ ๋ณ€๊ฒฝ์ด๋ฏ€๋กœ ํ•œ๊ฐ€ํ•œ ์‹œ์ ์— ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. (ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๋Š”๊ฑด ์˜ํ–ฅ๋„๊ฐ€ ํฌ์ง€ ์•Š์ง€๋งŒ, ์ค„์ด๋Š” ์ž‘์—…์€ ์˜ํ–ฅ๋„๊ฐ€ ๋งค์šฐ ํฌ๋‹ค.)
  • InnoDB๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ 128MB ์ฒญํฌ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์–ด ๊ด€๋ฆฌ๋˜๋ฉฐ, ๋ฒ„ํผํ’€์„ ์ค„์ด๊ฑฐ๋‚˜ ๋Š˜๋ฆฌ๋Š” ๋‹จ์œ„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

InnoDB ๋ฒ„ํผํ’€์€ ์ „ํ†ต์ ์œผ๋กœ ๋ฒ„ํผ ํ’€ ์ „์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ž ๊ธˆ(์„ธ๋งˆํฌ์–ด)๋กœ ์ธํ•ด ๋‚ด๋ถ€ ์ž ๊ธˆ ๊ฒฝํ•ฉ์„ ๋งŽ์ด ์œ ๋ฐœํ•ด์™”๋‹ค. ์ด๋Ÿฐ ๊ฒฝํ•ฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฒ„ํผํ’€์„ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ์ชผ๊ฐœ์–ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐœ์„ ๋๋‹ค.

  • ๋ฒ„ํผํ’€์ด ์ž‘์€ ๋ฒ„ํผํ’€๋กœ ์ชผ๊ฐœ์ง€๋ฉด์„œ, ์ž ๊ธˆ(์„ธ๋งˆํฌ์–ด)์ž์ฒด๋„ ๊ฒฝํ•ฉ์ด ๋ถ„์‚ฐ๋˜๋Š” ํšจ๊ณผ๋ฅผ ๋‚ธ๋‹ค.
  • innodb_buffer_pool_instance ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ฒ„ํผํ’€์„ ๋ฒ„ํผ ํ’€ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.
  • ๊ธฐ๋ณธ์€ 8๊ฐœ๋กœ ์ดˆ๊ธฐํ™”๋˜์ง€๋งŒ, ๋ฒ„ํผํ’€์„ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด 1GB ๋ฏธ๋งŒ์ด๋ผ๋ฉด 1๊ฐœ๋งŒ ์ƒ์„ฑ๋œ๋‹ค.
  • 40GB ์ดํ•˜๋ผ๋ฉด 8๊ฐœ๋ฅผ ์œ ์ง€ํ•˜๊ณ , ๋” ํฌ๋‹ค๋ฉด ๋ฒ„ํผ ํ’€ ์ธ์Šคํ„ด์Šค ๋‹น 5GB์ •๋„๊ฐ€ ๋˜๊ฒŒ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

4.2.7.2 ๋ฒ„ํผ ํ’€์˜ ๊ตฌ์กฐ

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ฒ„ํผ ํ’€์„ ํŽ˜์ด์ง€ ํฌ๊ธฐ(innodb_page_size ์‹œ์Šคํ…œ ๋ณ€์ˆ˜)์˜ ์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•  ๋•Œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด ๊ฐ ์กฐ๊ฐ์— ์ €์žฅํ•œ๋‹ค.

๋ฒ„ํผํ’€์˜ ํŽ˜์ด์ง€ ํฌ๊ธฐ ์กฐ๊ฐ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ LRU(Least Recently Used) ๋ฆฌ์ŠคํŠธ์™€ ํ”Œ๋Ÿฌ์‹œ(Flush) ๋ฆฌ์ŠคํŠธ, ํ”„๋ฆฌ(Free) ๋ฆฌ์ŠคํŠธ 3๊ฐœ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

ํ”„๋ฆฌ(Free) ๋ฆฌ์ŠคํŠธ

  • ๋น„์–ด ์žˆ๋Š” ํŽ˜์ด์ง€๋“ค์˜ ๋ชฉ๋ก. ์‚ฌ์šฉ์ž์˜ ์ฟผ๋ฆฌ๊ฐ€ ์ƒˆ๋กญ๊ฒŒ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด์™€์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ

LRU(Least Recently Used) ๋ฆฌ์ŠคํŠธ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-22 แ„‹แ…ฉแ„’แ…ฎ 6 34 03
  • LRU์™€ MRU(Most Recently Used) ๋ฆฌ์ŠคํŠธ๊ฐ€ ๊ฒฐํ•ฉ๋œ ํ˜•ํƒœ
  • Old ์„œ๋ธŒ๋ฆฌ์ŠคํŠธ ์˜์—ญ = LRU, New ์„œ๋ธŒ๋ฆฌ์ŠคํŠธ ์˜์—ญ = MRU

LRU ๋ฆฌ์ŠคํŠธ ๋ชฉ์ 

  • ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ํ•œ๋ฒˆ ์ฝ์–ด์˜จ ํŽ˜์ด์ง€๋ฅผ ์ตœ๋Œ€ํ•œ ์˜ค๋žซ๋™์•ˆ InnoDB ๋ฒ„ํผํ’€์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•ด ๋””์Šคํฌ ์ฝ๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ

[ InnoDB ์Šคํ† ๋ฆฌ์ง€์—”์ง„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ณผ์ • ]

  1. ํ•„์š”ํ•œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ๋ฒ„ํผ ํ’€์— ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
    • InnoDB ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰
    • ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค(B-Tree)๋ฅผ ์ด์šฉํ•ด ๋ฒ„ํผ ํ’€์—์„œ ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰
    • ๋ฒ„ํผ ํ’€์— ์ด๋ฏธ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ํฌ์ธํ„ฐ๋ฅผ MRU ๋ฐฉํ–ฅ์œผ๋กœ ์Šน๊ธ‰
  2. ๋””์Šคํฌ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋ฅผ ๋ฒ„ํผํ’€์— ์ ์žฌํ•˜๊ณ , ์ ์žฌ๋œ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ LRU ํ—ค๋” ๋ถ€๋ถ„์— ์ถ”๊ฐ€
  3. ๋ฒ„ํผ ํ’€์˜ LRU ํ—ค๋” ๋ถ€๋ถ„์— ์ ์žฌ๋œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ์‹ค์ œ๋กœ ์ฝํžˆ๋ฉด MRU ํ—ค๋” ๋ถ€๋ถ„์œผ๋กœ ์ด๋™
    • Read Ahead์™€ ๊ฐ™์ด ๋Œ€๋Ÿ‰ ์ฝ๊ธฐ์˜ ๊ฒฝ์šฐ, ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ๋ฒ„ํผ ํ’€๋กœ ์ ์žฌ๋Š” ๋˜์ง€๋งŒ ์‹ค์ œ ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ด๋Ÿฐ ๊ฒฝ์šฐ MRU๋กœ ์ด๋™๋˜์ง€ ์•Š์Œ
  4. ๋ฒ„ํผํ’€์— ์ƒ์ฃผํ•˜๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋Š” ์‚ฌ์šฉ์ž ์ฟผ๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ตœ๊ทผ์— ์ ‘๊ทผํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‚˜์ด(AGE)๊ฐ€ ๋ถ€์—ฌ๋œ๋‹ค.
    • ๋ฒ„ํผํ’€์— ์ƒ์ฃผํ•˜๋Š” ๋™์•ˆ ์˜ค๋žซ๋™์•ˆ ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ๋‚˜์ด๊ฐ€ ์˜ค๋ž˜๋˜๊ณ  ๊ฒฐ๊ตญ ๋ฒ„ํผํ’€์—์„œ ์ œ๊ฑฐ๋œ๋‹ค. โžก๏ธ Eviction
    • ์ฟผ๋ฆฌ์— ์˜ํ•ด ์‚ฌ์šฉ๋˜๋ฉด ๋‚˜์ด๋Š” ์ดˆ๊ธฐํ™”๋˜๊ณ  MRU์˜ ํ—ค๋” ๋ถ€๋ถ„์œผ๋กœ ์˜ฎ๊ฒจ์ง„๋‹ค.
  5. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ์ ‘๊ทผ๋๋‹ค๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์ธ๋ฑ์Šค ํ‚ค๋ฅผ ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค์— ์ถ”๊ฐ€

์ฆ‰, ๋ฒ„ํผ ํ’€ ๋‚ด๋ถ€์—์„œ ์ตœ๊ทผ ์ ‘๊ทผ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋Š” ์„œ๋กœ ๊ฒฝ์Ÿํ•˜๋ฉด์„œ MRU ๋˜๋Š” LRU๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ LRU์˜ ๋์œผ๋กœ ๋ฐ€๋ ค๋‚œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋“ค์„ ๋ฒ„ํผํ’€์—์„œ ์ œ๊ฑฐํ•˜์—ฌ ๋นˆ๊ณต๊ฐ„์„ ๋งŒ๋“ ๋‹ค.

๊ทธ๋ž˜์„œ ์ฒ˜์Œ ์ฝํžŒ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด MRU ์˜์—ญ์—์„œ ๊ณ„์† ์‚ด์•„๋‚จ๊ฒŒ๋˜๊ณ , ๋ฐ˜๋Œ€๋กœ ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด LRU ๋์œผ๋กœ ๋ฐ€๋Ÿฌ๋‚˜ InnoDB ๋ฒ„ํผํ’€์—์„œ ์ œ๊ฑฐ๋  ๊ฒƒ์ด๋‹ค.

ํ”Œ๋Ÿฌ์‹œ(Flush) ๋ฆฌ์ŠคํŠธ

๋””์Šคํฌ๋กœ ๋™๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ํŽ˜์ด์ง€(๋”ํ‹ฐ ํŽ˜์ด์ง€)์˜ ๋ณ€๊ฒฝ ์‹œ์  ๊ธฐ์ค€์˜ ํŽ˜์ด์ง€ ๋ชฉ๋ก์„ ๊ด€๋ฆฌํ•œ๋‹ค.

  • ๋””์Šคํฌ์—์„œ ์ฝ์€ ์ƒํƒœ ๊ทธ๋Œ€๋กœ ๋ณ€๊ฒฝ์ด ์—†๋‹ค๋ฉด ํ”Œ๋Ÿฌ์‹œ ๋ฆฌ์ŠคํŠธ์— ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ํ•˜์ง€๋งŒ ํ•œ๋ฒˆ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๊ฐ€ํ•ด์ง„ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋Š” ํ”Œ๋Ÿฌ์‹œ ๋ฆฌ์ŠคํŠธ์— ๊ด€๋ฆฌ๋˜๊ณ  ํŠน์ • ์‹œ์ ์ด ๋˜๋ฉด ๋””์Šคํฌ๋กœ ๊ธฐ๋ก๋ผ์•ผ ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด InnoDB๋Š” ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฆฌ๋‘ ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๊ณ , ๋ฒ„ํผ ํ’€์˜ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์—๋„ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•œ๋‹ค.
  • ๊ทธ๋ž˜์„œ ๋ฆฌ๋‘ ๋กœ๊ทธ์˜ ๊ฐ ์—”ํŠธ๋ฆฌ๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์™€ ์—ฐ๊ฒฐ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฆฌ๋‘ ๋กœ๊ทธ๊ฐ€ ๋””์Šคํฌ๋กœ ๊ธฐ๋ก๋๋‹ค๊ณ  ํ•ด์„œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ๋””์Šคํฌ๋กœ ๊ธฐ๋ก๋๋‹ค๋Š” ๊ฒƒ์„ ํ•ญ์ƒ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋ฐ˜๋Œ€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)

  • InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๋””์Šคํฌ์˜ ๋ฆฌ๋‘ ๋กœ๊ทธ์™€ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์˜ ์ƒํƒœ๋ฅผ ๋™๊ธฐํ™”ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์ฒดํฌ ํฌ์ธํŠธ๋Š” MySQL ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋  ๋•Œ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ๋ฆฌ๋‘ ๋กœ๊ทธ์˜ ์–ด๋Š๋ถ€๋ถ„๋ถ€ํ„ฐ ๋ณต๊ตฌ๋ฅผ ์‹คํ–‰ํ•ด์•ผํ• ์ง€ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€์ ์ด๋‹ค.

4.2.7.3 ๋ฒ„ํผ ํ’€๊ณผ ๋ฆฌ๋‘ ๋กœ๊ทธ

๋ฒ„ํผํ’€์€ ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๋งŒํผ ์„ค์ •ํ•  ์ˆ˜๋ก ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์ด ๋นจ๋ผ์ง„๋‹ค.

  • ๋ฌผ๋ก  ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ๋ฒ„ํผํ’€์— ์ ์žฌ๋  ์ •๋„์˜ ๊ณต๊ฐ„์ด๋ผ๋ฉด ๋Š˜๋ ค๋„ ์„ฑ๋Šฅ์— ๋„์›€์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋””์Šคํฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฒ„ํผ ํ’€ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ ์žฌ๋˜๋ฉด ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค.

๋ฒ„ํผํ’€์€ DB ์„œ๋ฒ„ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์บ์‹œ์™€ ์“ฐ๊ธฐ ๋ฒ„ํผ๋ง์ด๋ผ๋Š” 2๊ฐ€์ง€ ์šฉ๋„๊ฐ€์žˆ๋‹ค.

  • ๋ฒ„ํผํ’€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋Š˜๋ฆฌ๊ธฐ๋Š” ๋ฐ์ดํ„ฐ ์บ์‹œ ๊ธฐ๋Šฅ๋งŒ ํ–ฅ์ƒ ์‹œํ‚จ ๊ฒƒ.
  • ์“ฐ๊ธฐ ๋ฒ„ํผ๋ง์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒ„ํผํ’€๊ณผ ๋ฆฌ๋‘๋กœ๊ทธ์˜ ๊ด€๊ณ„๋ฅผ ์•Œ์•„์•ผํ•œ๋‹ค.

๋ฒ„ํผํ’€๊ณผ ๋ฆฌ๋‘๋กœ๊ทธ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-23 แ„‹แ…ฉแ„’แ…ฎ 11 26 25

๋ฒ„ํผํ’€ = ํด๋ฆฐ ํŽ˜์ด์ง€ + ๋”ํ‹ฐ ํŽ˜์ด์ง€

  • ํด๋ฆฐ ํŽ˜์ด์ง€: ๋””์Šคํฌ์—์„œ ์ฝ์€ ํ›„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€
  • ๋”ํ‹ฐ ํŽ˜์ด์ง€: ๋””์Šคํฌ์—์„œ ์ฝ์€ ํ›„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋œ ํŽ˜์ด์ง€
  • ์—ฌ๊ธฐ์„œ ๋”ํ‹ฐํŽ˜์ด์ง€๋Š” ๋ฐ์ดํ„ฐ ์ƒํƒœ๊ฐ€ ๋””์Šคํฌ์™€ ๋‹ค๋ฅด๊ธฐ๋•Œ๋ฌธ์—, ์–ธ์  ๊ฐ€๋Š” ๋””์Šคํฌ๋กœ ๊ธฐ๋ก๋˜์•ผํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ ๋ฒ„ํผํ’€์— ๋ฌดํ•œ์ • ๋จธ๋ฌด๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” 1๊ฐœ ์ด์ƒ์˜ ๊ณ ์ • ํฌ๊ธฐ ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•ด์„œ ์ˆœํ™˜๊ณ ๋ฆฌ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ฆ‰, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๊ณ„์† ๋ฐœ์ƒํ•˜๋ฉด ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก๋๋˜ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋Š” ์–ด๋Š ์ˆœ๊ฐ„ ์ƒˆ๋กœ์šด ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋กœ ๋ฎ์–ด์“ฐ์ธ๋‹ค.
  • ๊ทธ๋ž˜์„œ ์ „์ฒด ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„๊ณผ ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์„ ๊ตฌ๋ถ„ํ•ด์„œ ๊ด€๋ฆฌํ•ด์•ผํ•œ๋‹ค.
  • ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„ = ํ™œ์„ฑ ๋ฆฌ๋‘ ๋กœ๊ทธ(Active Redo Log) = ํ™”์‚ดํ‘œ๋ฅผ ๊ฐ€์ง„ ์—”ํŠธ๋ฆฌ๋“ค

โ“ ๋ฒ„ํผํ’€์— ์žˆ๋Š” ๋„ค๋ชจ = ๊ณ ์ • ํฌ๊ธฐ ํŒŒ์ผ(๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ), ๋ฆฌ๋‘ ๋กœ๊ทธ์— ์žˆ๋Š” ๋„ค๋ชจ = ๋ฆฌ๋‘ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ

LSN(Log Sequence Number): ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ๊ณต๊ฐ„์€ ๊ณ„์† ์ˆœํ™˜๋˜์–ด ์žฌ์‚ฌ์šฉ๋˜์ง€๋งŒ, ๋งค๋ฒˆ ๊ธฐ๋ก๋  ๋•Œ๋งˆ๋‹ค ๋กœ๊ทธ ํฌ์ง€์…˜์€ ๊ณ„์† ์ฆ๊ฐ€๋œ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.

  • InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ฒดํฌํฌ์ธํŠธ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ, ๋ฆฌ๋‘๋กœ๊ทธ์™€ ๋ฒ„ํผํ’€์˜ ๋”ํ‹ฐํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ๋กœ ๋™๊ธฐํ™”ํ•˜๋Š”๋ฐ
  • ์ด๋ ‡๊ฒŒ ๋ฐœ์ƒํ•œ ์ฒดํฌํฌ์ธํŠธ ์ค‘ ๊ฐ€์žฅ ์ตœ๊ทผ ์ฒดํฌํฌ์ธํŠธ ์ง€์ ์˜ LSN์ด ํ™œ์„ฑ ๋ฆฌ๋‘ ๋กœ๊ทธ ๊ณต๊ฐ„์˜ ์‹œ์ž‘์ ์ด ๋œ๋‹ค.
  • ํ•˜์ง€๋งŒ ํ™œ์„ฑ ๋ฆฌ๋‘ ๋กœ๊ทธ ๊ณต๊ฐ„์˜ ๋งˆ์ง€๋ง‰์€ ๊ณ„์† ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒดํฌํฌ์ธํŠธ์™€ ๋ฌด๊ด€ํ•œ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ตœ๊ทผ ์ฒดํฌํฌ์ธํŠธ์˜ LSN๊ณผ ๋งˆ์ง€๋ง‰ ๋ฆฌ๋‘ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ์˜ LSN์˜ ์ฐจ์ด๋ฅผ ์ฒดํฌํฌ์ธํŠธ ์—์ด์ง€(Checkpoint Age)๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ฆ‰, ์ฒดํฌํฌ์ธํŠธ ์—์ด์ง€๋Š” ํ™œ์„ฑ ๋ฆฌ๋‘ ๋กœ๊ทธ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ฅผ ์ผ์ปซ๋Š”๋‹ค.

๋”ํ‹ฐํŽ˜์ด์ง€๋Š” ํŠน์ • ๋ฆฌ๋‘๋กœ๊ทธ์—”ํŠธ๋ฆฌ์™€ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ , ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฒดํฌํฌ์ธํŠธ LSN๋ณด๋‹ค ์ž‘์€ ๋ฆฌ๋‘ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ์™€ ๊ด€๋ จ๋œ ๋”ํ‹ฐํŽ˜์ด์ง€๋Š” ๋ชจ๋‘ ๋””์Šคํฌ๋กœ ๋™๊ธฐํ™”๋ผ์•ผํ•œ๋‹ค.

  • ๋ฌผ๋ก  ์ฒดํฌํฌ์ธํŠธ LSN๋ณด๋‹ค ์ž‘์€ LSN๊ฐ’์„ ๊ฐ€์ง„ ๋ฆฌ๋‘ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋„ ๋””์Šคํฌ๋กœ ๋™๊ธฐํ™” ๋ผ์•ผํ•œ๋‹ค.

์˜ˆ์ œ

  1. InnoDB ๋ฒ„ํผํ’€์€ 100GB์ด๋ฉฐ ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ „์ฒด ํฌ๊ธฐ๋Š” 100MB์ธ ๊ฒฝ์šฐ
    • ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ 100MB๋ฐ–์— ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒดํฌํฌ์ธํŠธ ์—์ด์ง€๋„ ์ตœ๋Œ€ 100MB๋งŒ ํ—ˆ์šฉ๋œ๋‹ค.
    • ํ‰๊ท  ๋ฆฌ๋‘๋กœ๊ทธ์—”ํŠธ๋ฆฌ๊ฐ€ 4kb๋ผ๋ฉด 100MB/4KB = 25600๊ฐœ ์ •๋„์˜ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋งŒ ๋ฒ„ํผํ’€์— ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ 16KB๋ผ๋ฉด ํ—ˆ์šฉ๊ฐ€๋Šฅํ•œ ์ „์ฒด ๋”ํ‹ฐ ํŽ˜์ด์ง€ ํฌ๊ธฐ๋Š” 25600 * 16KB = 400MB ์ˆ˜์ค€๋ฐ–์— ์•ˆ๋œ๋‹ค.
    • ์ด ๊ฒฝ์šฐ ๋ฒ„ํผํ’€์˜ ํฌ๊ธฐ๋Š” ๋งค์šฐ ํฌ์ง€๋งŒ, ์‹ค์ œ ์“ฐ๊ธฐ ๋ฒ„ํผ๋ง์„ ์œ„ํ•œ ํšจ๊ณผ๋Š” ๊ฑฐ์˜ ๋ชป๋ณธ๋‹ค.
  2. InnoDB ๋ฒ„ํผํ’€์€ 100MG์ด๋ฉฐ ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ „์ฒด ํฌ๊ธฐ๋Š” 100GB์ธ ๊ฒฝ์šฐ
    • ์œ„ ๋ฐฉ์‹์œผ๋กœ ๊ณ„์‚ฐํ•˜๋ฉด ์ „์ฒด ๋”ํ‹ฐ ํŽ˜์ด์ง€ ํฌ๊ธฐ๊ฐ€ 400GB๊ฐ€ ๋œ๋‹ค.
    • ํ•˜์ง€๋งŒ ๋ฒ„ํผํ’€ ํฌ๊ธฐ๊ฐ€ 100MB์ด๊ธฐ ๋Œ€๋ฌธ์— ์ตœ๋Œ€ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ๋”์น˜ ํŽ˜์ด์ง€๋Š” 100MB๊ฐ€ ๋œ๋‹ค.

1๋ฒˆ์€ ์ž˜๋ชป๋œ ์„ค์ •์ด๋‹ค. 2๋ฒˆ์€ ์ด๋ก ์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ์—†์–ด๋ณด์ด์ง€๋งŒ, ์ด ์ƒํƒœ๋กœ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด ๊ธ‰์ž‘์Šค๋Ÿฌ์šด ๋””์Šคํฌ ์“ฐ๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

  • ๋ฒ„ํผํ’€์— ๋”ํ‹ฐ ํŽ˜์ด์ง€์˜ ๋น„์œจ์ด ๋„ˆ๋ฌด ๋†’์€ ์ƒํƒœ์—์„œ ๊ฐ‘์ž๊ธฐ ๋ฒ„ํผํ’€์ด ํ•„์š”ํ•ด์ง€๋Š” ์ƒํ™ฉ์ด ์˜ค๋ฉด InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋งค์šฐ ๋งŽ์€ ๋”ํ‹ฐํŽ˜์ด์ง€๋ฅผ ํ•œ๋ฒˆ์— ๊ธฐ๋กํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์˜จ๋‹ค.
  • ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฆฌ๋‘๋กœ๊ทธํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ์ ์ ˆํžˆ ์„ ํƒํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋ฉด 5~10GB ์ˆ˜์ค€์œผ๋กœ ์„ ํƒํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ๋Š˜๋ ค๊ฐ€๋ฉฐ ์ตœ์ ๊ฐ’์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๋ฒ„ํผํ’€ ํฌ๊ธฐ๊ฐ€ 100GB๋ผ๊ณ  ํ•ด์„œ ๋ฆฌ๋‘ ๋กœ๊ทธ์˜ ๊ณต๊ฐ„์ด 100GB๊ฐ€ ๋ผ์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” ๋ณ€๊ฒฝ๋ถ„๋งŒ ๊ฐ€์ง€๊ณ  ๋ฒ„ํผํ’€์€ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€ ํ†ต์งธ๋กœ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•ด๋„ ๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” ํ›จ์”ฉ ์ž‘์€ ๊ณต๊ฐ„๋งŒ ์žˆ์œผ๋ฉด๋œ๋‹ค.

๋ฒ„ํผํ’€๊ณผ ๋ฆฌ๋‘๋กœ๊ทธ ๋‹ค์‹œ ๊ณต๋ถ€ํ•„์š”ํ•จ..

  • ๋ฒ„ํผํ’€
  • ๋ฆฌ๋‘๋กœ๊ทธ ํŒŒ์ผ, ๋ฆฌ๋‘๋กœ๊ทธ ์—”ํŠธ๋ฆฌ
  • ์ฒดํฌํฌ์ธํŠธ ์—์ด์ง€

4.2.7.4 ๋ฒ„ํผ ํ’€ ํ”Œ๋Ÿฌ์‹œ(Buffer Pool Flush)

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ฒ„ํผํ’€์—์„œ ์•„์ง ๋””์Šคํฌ๋กœ ๊ธฐ๋ก๋˜์ง€ ์•Š์€ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋“ค์„ ์„ฑ๋Šฅ์ƒ์˜ ์•…์˜ํ–ฅ ์—†์ด ๋””์Šคํฌ์— ๋™๊ธฐํ™” ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ 2๊ฐœ์˜ ํ”Œ๋ž˜์‹œ ๊ธฐ๋Šฅ์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • ํ”Œ๋Ÿฌ์‹œ ๋ฆฌ์ŠคํŠธ(Flush_list)ํ”Œ๋Ÿฌ์‹œ
  • LRU ๋ฆฌ์ŠคํŠธ(LRU_list)ํ”Œ๋Ÿฌ์‹œ

4.2.7.4.1 ํ”Œ๋Ÿฌ์‹œ ๋ฆฌ์ŠคํŠธ ํ”Œ๋Ÿฌ์‹œ

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ฆฌ๋‘ ๋กœ๊ทธ ๊ณต๊ฐ„์˜ ์žฌํ™œ์šฉ์„ ์œ„ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ ์˜ค๋ž˜๋œ ๋ฆฌ๋‘ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐ„์„ ๋น„์›Œ์•ผ ํ•œ๋‹ค.

  • ์ด๋•Œ ๋ฆฌ๋‘ ๋กœ๊ทธ ๊ณต๊ฐ„์„ ์ง€์šฐ๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ๋ฒ„ํผํ’€์˜ ๋”ํ‹ฐ ํŽ˜์ด์ง€๊ฐ€ ๋จผ์ € ๋””์Šคํฌ๋กœ ๋™๊ธฐํ™”๋ผ์•ผ ํ•œ๋‹ค.
  • ์ด๋ฅผ ์œ„ํ•ด InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ”Œ๋Ÿฌ์‹œ ๋ฆฌ์ŠคํŠธ(Flush_list)ํ”Œ๋Ÿฌ์‹œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ
  • ์˜ค๋ž˜์ „์— ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋””์Šคํฌ์— ๋™๊ธฐํ™”ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ์ด๋•Œ ์–ธ์ œ๋ถ€ํ„ฐ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ํ•œ๋ฒˆ์— ๋””์Šคํฌ๋กœ ๊ธฐ๋กํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ์— ์˜ํ–ฅ์ด ๊ฒฐ์ •๋œ๋‹ค.
  • ์ด๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด InnoDB๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์‹œ์Šคํ…œ ๋ณ€์ˆ˜

  • innodb_page_cleaners
  • innodb_max_dirty_pages_pct_lwm
  • innodb_max_dirty_pages_pct
  • innodb_io_capacity
  • innodb_io_capacity_max
  • innodb_flush_neighbors
  • innodb_adaptive_flushing
  • innodb_daaptive_flushing_lwn

ํด๋ฆฌ๋„ˆ ์Šค๋ ˆ๋“œ(Cleaner Tread): ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ๋กœ ๋™๊ธฐํ™”ํ•˜๋Š” ์Šค๋ ˆ๋“œ

  • innodb_page_cleaners๋Š” ํด๋ฆฌ๋„ˆ ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜๋ฅผ ์กฐ์ •ํ•œ๋‹ค.
  • innodb_page_cleaners์ด ๋ฒ„ํผํ’€ ์ธ์Šคํ„ด์Šค ๊ฐœ์ˆ˜๋ณด๋‹ค ๋งŽ์€ ๊ฒฝ์šฐ innodb_buffer_pool_instances ์„ค์ •๊ฐ’์„ ํด๋ฆฌ๋„ˆ ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜์™€ ๋งž์ถฐ์ค€๋‹ค. (ํด๋ฆฌ๋„ˆ์Šค๋ ˆ๋“œ 1:1 ์ „๋‹ด)
  • ํ•˜์ง€๋งŒ innodb_page_cleaners๊ฐ€ ๋ฒ„ํผํ’€ ์ธ์Šคํ„ด์Šค ๊ฐœ์ˆ˜๋ณด๋‹ค ์ ์€ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ํด๋ฆฌ๋„ˆ ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ๋ฒ„ํผํ’€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๋™์ผํ•œ ๊ฐ’์œผ๋กœ ๋งž์ถฐ์ฃผ์ž.

InnoDB ๋ฒ„ํผํ’€์€ ๋ฒ„ํผํ’€์ด ๊ฐ€์ง„ ํŽ˜์ด์ง€ 90%๊นŒ์ง€ ๋”ํ‹ฐํŽ˜์ด์ง€๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

  • ํ•˜์ง€๋งŒ ์ด ๊ฐ’์ด ๋„ˆ๋ฌด ๋†’์„ ๊ฒฝ์šฐ innodb_max_dirty_pages_pct๋กœ ๋”ํ‹ฐํŽ˜์ด์ง€ ๋น„์œจ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋”ํ‹ฐํŽ˜์ด์ง€๋ฅผ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜๋ก ๋””์Šคํฌ ์“ฐ๊ธฐ ์ž‘์—…์„ ๋ฒ„ํผ๋งํ•จ์œผ๋กœ์จ ์—ฌ๋Ÿฌ๋ฒˆ ๋””์Šคํฌ ์“ฐ๊ธฐ๋ฅผ ํ•œ๋ฒˆ์œผ๋กœ ์ค„์ด๋Š” ํšจ๊ณผ๋ฅผ ๊ทน๋Œ€ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ๊ฐ’์„ ์œ ์ง€ํ•˜์ž.

InnoDB ๋ฒ„ํผํ’€์— ๋”ํ‹ฐํŽ˜์ด์ง€๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๋””์Šคํฌ ์“ฐ๊ธฐ ํญ๋ฐœ(Disk IO Burst)ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

  • innodb_io_capacity ์„ค์ •๊ฐ’ ๊ธฐ์ค€์œผ๋กœ ๋”ํ‹ฐํŽ˜์ด์ง€ ์“ฐ๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜์ง€๋งŒ, ๋””์Šคํฌ๋กœ ๊ธฐ๋ก๋˜๋Š” ๊ฐœ์ˆ˜๋ณด๋‹ค ๋งŽ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฒ„ํผํ’€์— ๋”ํ‹ฐํŽ˜์ด์ง€๊ฐ€ ๊ณ„์† ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๊ณ 
  • ์–ด๋Š์ˆœ๊ฐ„ 90% ๋น„์œจ์„ ๋„˜์–ด๊ฐ€๋ฉด InnoDB ์—”์ง„์€ ๊ธ‰์ž‘์Šค๋Ÿฝ๊ฒŒ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ๋กœ ๊ธฐ๋กํ•ด์•ผํ•œ๋‹ค๊ณ  ํŒ๋‹จํ•œ๋‹ค. โžก ๋””์Šคํฌ ์“ฐ๊ธฐ ํญ๋ฐœ(Disk IO Burst)ํ˜„์ƒ ๋ฐœ์ƒ
  • ์œ„ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด innodb_max_dirty_pages_pct_lwm ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ผ์ • ์ˆ˜์ค€ ์ด์ƒ์˜ ๋”ํ‹ฐํŽ˜์ด์ง€๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์กฐ๊ธˆ์”ฉ ๋””์Šคํฌ๋กœ ๊ธฐ๋กํ•˜๊ฒŒ ํ•œ๋‹ค.
  • ๊ธฐ๋ณธ๊ฐ’์€ 10% ์ˆ˜์ค€์ธ๋ฐ, ๋งŒ์•ฝ ํŽ˜์ด์ง€ ๋น„์œจ์ด ์–ผ๋งˆ ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ์—์„œ ๋””์Šคํฌ ์“ฐ๊ธฐ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์กฐ๊ธˆ ๋” ๋†’์€ ๊ฐ’์œผ๋กœ ์กฐ์ •ํ•˜์—ฌ ๋””์Šคํฌ ์“ฐ๊ธฐ ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

innodb_io_capacity, innodb_io_capacity_max๋Š” ๊ฐ DB์„œ๋ฒ„์—์„œ ์–ด๋Š์ •๋„์˜ ๋””์Šคํฌ ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฐ’์ด๋‹ค.

  • innodb_io_capacity: ๋””์Šคํฌ๊ฐ€ ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์˜ ๊ฐ’
  • innodb_io_capacity_max: ๋””์Šคํฌ๊ฐ€ ์ตœ๋Œ€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•  ๋•Œ ์–ด๋Š ์ •๋„์˜ ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ์„ค์ •
  • ์—ฌ๊ธฐ์„œ ์–ธ๊ธ‰ํ•˜๋Š” ์ฝ๊ณ  ์“ฐ๊ธฐ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋””์Šคํฌ ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„ ๋ฒ„ํผํ’€์˜ ๋”ํ‹ฐํŽ˜์ด์ง€ ์“ฐ๊ธฐ๊ฐ€ ํ•ด๋‹น
  • ํ•˜์ง€๋งŒ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์‚ฌ์šฉ์ž์˜ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ๋””์Šคํฌ ์ฝ๊ธฐ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.
  • ๋”ฐ๋ผ์„œ ํ˜„์žฌ ์žฅ์ฐฉ๋œ ๋””์Šคํฌ์˜ ์ตœ๋Œ€์ฒ˜๋ฆฌ๋Ÿ‰(ex 1000IOPS)์„ ๊ทธ๋Œ€๋กœ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์— ์„ค์ •ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

๊ด€๋ฆฌํ•ด์•ผํ•  ์„œ๋ฒ„๊ฐ€ ๋งŽ๋‹ค๋ฉด innodb_io_capacity, innodb_io_capacity_max ์„ค์ •์€ ์ƒ๋‹นํžˆ ๋ฒˆ๊ฑฐ๋กญ๋‹ค. ๊ทธ๋ž˜์„œ ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ”Œ๋Ÿฌ์‹œ(Adaptive flush)๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

  • ์ด๋Š” innodb_adaptive_flushing๋กœ ์ผœ๊ณ  ๋Œ ์ˆ˜ ์žˆ๋‹ค.
  • ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ”Œ๋Ÿฌ์‹œ๊ฐ€ ํ™œ์„ฑํ™” ๋˜๋ฉด, ์„ค์ •๊ฐ’์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋”ํ‹ฐํŽ˜์ด์ง€๋ฅผ ์–ด๋Š์ •๋„ ๋””์Šคํฌ๋กœ ๊ธฐ๋กํ•ด์•ผํ• ์ง€๋Š” ์‚ฌ์‹ค ์–ด๋Š์ •๋„๋กœ ๋”ํ‹ฐํŽ˜์ด์ง€๊ฐ€ ์ƒ์„ฑ๋˜๋Š”์ง€ ๋ถ„์„ํ•˜๋Š”๊ฒƒ์ด๋‹ค.
  • ์ด๋Š” ๊ฒฐ๊ตญ ๋ฆฌ๋‘ ๋กœ๊ทธ๊ฐ€ ์–ด๋Š์ •๋„๋กœ ์ฆ๊ฐ€ํ•˜๋Š”์ง€์™€ ๊ฐ™๋‹ค.
  • ๋”ฐ๋ผ์„œ ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ”Œ๋Ÿฌ์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฆฌ๋‘ ๋กœ๊ทธ์˜ ์ฆ๊ฐ€ ์†๋„๋ฅผ ๋ถ„์„ํ•ด ์ ์ ˆํ•œ ์ˆ˜์ค€์˜ ๋”ํ‹ฐ ํŽ˜์ด์ง€๊ฐ€ ๋ฒ„ํผํ’€์— ์œ ์ง€๋  ์ˆ˜ ์žˆ๋„๋ก ๋””์Šคํฌ ์“ฐ๊ธฐ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  • innodb_adaptive_flushing_lwn์€ ๊ธฐ๋ณธ 10%์ด๋ฉฐ, ์ „์ฒด ๋ฆฌ๋‘ ๋กœ๊ทธ ๊ณต๊ฐ„์—์„œ ํ™œ์„ฑ ๋ฆฌ๋‘ ๋กœ๊ทธ ๊ณต๊ฐ„์ด 10% ๋ฏธ๋งŒ์ด๋ฉด ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ”Œ๋Ÿฌ์‹œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋‹ค๊ฐ€ 10%๋ฅผ ๋„˜์–ด์„œ๋ฉด ๊ทธ๋•Œ๋ถ€ํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž‘๋™ํ•œ๋‹ค.

innodb_flush_neighbors๋Š” ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ์— ๊ธฐ๋กํ•  ๋•Œ ๋””์Šคํฌ์—์„œ ๊ทผ์ ‘ํ•œ ํŽ˜์ด์ง€ ์ค‘ ๋”ํ‹ฐํŽ˜์ด์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด, ํ•จ๊ป˜ ๋ฌถ์–ด์„œ ๊ธฐ๋กํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

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

4.2.7.4.2 LRU ๋ฆฌ์ŠคํŠธ ํ”Œ๋Ÿฌ์‹œ

LRU๋ฆฌ์ŠคํŠธ(LRU_list) ํ”Œ๋Ÿฌ์‹œ ํ•จ์ˆ˜ : LRU ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋“ค์„ ์ œ๊ฑฐํ•ด์„œ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋“ค์„ ์ฝ์–ด์˜ฌ ๊ณต๊ฐ„์„ ๋งŒ๋“ค๋•Œ ์‚ฌ์šฉ

  • LRU๋ฆฌ์ŠคํŠธ์˜ ๋๋ถ€๋ถ„๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ์ตœ๋Œ€ innodb_lru_scan_depth์— ์„ค์ •๋œ ๋งŒํผ ํŽ˜์ด์ง€๋“ค์„ ์Šค์บ”ํ•œ๋‹ค.
  • ์ด ๋•Œ ์Šค์บ”ํ•˜๋ฉด์„œ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋Š” ๋””์Šคํฌ์— ๋™๊ธฐํ™”ํ•˜๊ฒŒ ํ•˜๋ฉฐ, ํด๋ฆฐ ํŽ˜์ด์ง€๋Š” ์ฆ‰์‹œ ํ”„๋ฆฌ(Free)๋ฆฌ์ŠคํŠธ๋กœ ์˜ฎ๊ธด๋‹ค.
  • ๋ฒ„ํผํ’€ ์ธ์Šคํ„ด์Šค๋ณ„๋กœ ์ตœ๋Œ€ innodb_lru_scan_depth๊ฐœ์ˆ˜๋งŒํผ ์Šค์บ”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์งˆ์ ์œผ๋กœ LRU ๋ฆฌ์ŠคํŠธ์˜ ์Šค์บ”์€ innodb_buffer_pool_instance * innodb_lru_scan_depth ๋งŒํผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

4.2.7.5 ๋ฒ„ํผ ํ’€ ์ƒํƒœ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ

๋ฒ„ํผ ํ’€์— ์ฟผ๋ฆฌ๋“ค์ด ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜์–ด ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์ง€ ์•Š์•„๋„ ๋˜๋Š” ์ƒํƒœ๋ฅผ ์›Œ๋ฐ์—…(Warming Up)์ด๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

  • ๋ฒ„ํผํ’€ ์›Œ๋ฐ์—…์ด๋œ ์ƒํƒœ์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ์ƒํƒœ๋ณด๋‹ค ๋ช‡์‹ญ ๋ฐฐ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
  • MySQL5.5: ySQL ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค ์˜คํ”ˆ์ „ ๊ฐ•์ œ ์›Œ๋ฐ์—…์„ ์œ„ํ•ด ์ฃผ์š” ํ…Œ์ด๋ธ”๊ณผ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ํ’€์Šค์บ”์„ ํ•œ๋ฒˆ์”ฉ ์‹คํ–‰ํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ์˜คํ”ˆํ–ˆ์—ˆ๋‹ค.
  • MySQL5.6 ์ดํ›„: ๋ฒ„ํผ ํ’€ ๋คํ”„ ๋ฐ ์ ์žฌ๊ธฐ๋Šฅ ๋„์ž…๋˜์–ด innodb_buffer_pool_dump_now ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ํ˜„์žฌ ๋ฒ„ํผํ’€ ์ƒํƒœ๋ฅผ ๋ฐฑ์—…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด innodb_buffer_pool_load_now๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฑ์—…๋œ ๋ฒ„ํผํ’€ ์ƒํƒœ๋ฅผ ๋‹ค์‹œ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
// ์„œ๋ฒ„ ์…ง๋‹ค์šด ์ „ ๋ฒ„ํผ ํ’€์˜ ์ƒํƒœ ๋ฐฑ์—…
set GLOBAL innodb_buffer_pool_dump_now = ON;
// ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ ํ›„ ๋ฐฑ์—…๋œ ๋ฒ„ํผ ํ’€์˜ ์ƒํƒœ ๋ณต๊ตฌ
set GLOBAL innodb_buffer_pool_load_now = ON;

๋ฒ„ํผ ํ’€ ๋ฐฑ์—… ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ib_buffer_pool ์ด๋ฆ„์œผ๋กœ ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.

  • ์‹ค์ œ ํฌ๊ธฐ๋ฅผ ๋ณด๋ฉด ์•„๋ฌด๋ฆฌ ๋ฒ„ํผํ’€์ด ํฌ๋”๋ผ๋„ ๋ช‡์‹ญ MB ์ดํ•˜๋‹ค.
  • ์ด๋Š” ๋ฒ„ํผํ’€์˜ LRU ๋ฆฌ์ŠคํŠธ์—์„œ ์ ์žฌ๋œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์˜ ๋ฉ”ํƒ€์ •๋ณด๋งŒ ๊ฐ€์ ธ์™€์„œ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋ฅผ ๋‹ค์‹œ ๋ฒ„ํผํ’€๋กœ ๋ณต๊ตฌํ•˜๋Š” ๊ณผ์ •์€ ๋ฒ„ํผํ’€ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋Š” ๋ฐฑ์—…๋œ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋””์Šคํฌ์—์„œ ๊ฐ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋กœ ์ฝ์–ด์™€์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ๊ทธ๋ž˜์„œ ๋ณต๊ตฌํ•˜๋Š” ๊ณผ์ •์˜ ์ง„ํ–‰ ์ •๋„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ’์„ ์ง€์›ํ•œ๋‹ค.
show STATUS LIKE `innodb_buffer_pool_dump_status`

๋งŒ์•ฝ ์ ์žฌ์ž‘์—…์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ค ์ค‘๊ฐ„์— ๋ฉˆ์ถ”๊ณ ์ž ํ•œ๋‹ค๋ฉด innodb_buffer_pool_load_abort๋ฅผ ์ด์šฉํ•˜๋ฉด๋œ๋‹ค.

  • ๋ฒ„ํผํ’€ ๋ณต๊ตฌ๋Š” ์ƒ๋‹นํžˆ ๋งŽ์€ ๋””์Šคํฌ ์ฝ๊ธฐ๋ฅผ ํ•„์š”๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ณต๊ตฌ์ค‘์ธ ์ƒํƒœ์—์„œ ์„œ๋น„์Šค๋ฅผ ์žฌ๊ฐœํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์€ ์„ ํƒ์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋ณต๊ตฌ ๋„์ค‘์— ๊ธ‰ํžˆ ์„œ๋น„์Šค๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค๋ฉด ๋ณต๊ตฌ๋ฅผ ๋ฉˆ์ถœ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.
set GLOBAL innodb_buffer_pool_load_abort = ON;

์œ„ ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ํ•˜๋Š”๊ฒƒ์€ ์‚ฌ์‹ค ์‰ฝ์ง€์•Š๋‹ค. ๋”ฐ๋ผ์„œ MySQL ์„œ๋ฒ„๊ฐ€ ์…ง๋‹ค์šด ๋˜๊ธฐ ์ง์ „์— ๋ฒ„ํผํ’€ ๋ฐฑ์—…์„ ์‹คํ–‰ํ•˜๊ณ  ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ๋ฒ„ํผํ’€ ๋ณต๊ตฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

  • ์„ค์ • ๋ฐฉ๋ฒ•์€ innodb_buffer_pool_dump_at_shutdown, innodb_buffer_pool_load_at_startup์„ค์ •์„ MySQL ์„œ๋ฒ„ ์„ค์ • ํŒŒ์ผ์— ๋„ฃ์–ด๋‘๋ฉด๋œ๋‹ค.

๋ฒ„ํผํ’€ ๋ฐฑ์—… ํŒŒ์ผ์ด ๋ฐ˜๋“œ์‹œ ์…ง๋‹ค์šดํ•˜๊ธฐ ์ง์ „์˜ ํŒŒ์ผ์ผ ํ•„์š”๋Š”์—†๋‹ค. ib_buffer_poolํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์™€ ์‹ค์ œ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋งŒ ๋ฒ„ํผํ’€๋กœ ์ ์žฌํ•˜๊ธฐ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ๋‹ค.

4.2.7.6 ๋ฒ„ํผํ’€์˜ ์ ์žฌ ๋‚ด์šฉ ํ™•์ธ

MySQL 5.6 ์ดํ›„

  • MySQL 5.6๋ถ€ํ„ฐ information_schema๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ innodb_buffer_pageํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด ๋ฒ„ํผํ’€ ๋ฉ”๋ชจ๋ฆฌ์— ์–ด๋–ค ํ…Œ์ด๋ธ”์˜ ํŽ˜์ด์ง€๋“ค์ด ์ ์žฌ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ๋ฒ„ํผํ’€์ด ํฐ ๊ฒฝ์šฐ ์ƒ๋‹นํ•œ ๋ถ€ํ•˜๋ฅผ ์ผ์œผ์ผœ ์„œ๋น„์Šค ์ฟผ๋ฆฌ๊ฐ€ ๋Š๋ ค์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ , ์‹ค ์„œ๋น„์Šค์šฉ MySQL์„œ๋ฒ„๋Š” ๋ฒ„ํผํ’€ ์ƒํƒœ ํ™•์ธ์ด ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค.

MySQL 8.0 ๋ฒ„์ „

  • ์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•ด information_schema๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— innodb_cached_indexesํ…Œ์ด๋ธ”์ด ์ƒˆ๋กœ ์ถ”๊ฐ€๋๋‹ค.
  • ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค๋ณ„ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ฒ„ํผํ’€์— ์ ์žฌ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-24 แ„‹แ…ฉแ„’แ…ฎ 11 50 10
  • ์‘์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ์ „์ฒด(์ธ๋ฑ์Šค ํฌํ•จ)ํŽ˜์ด์ง€ ์ค‘ ๋Œ€๋žต ์–ด๋Š ์ •๋„ ๋น„์œจ์ด InnoDB ๋ฒ„ํผ ํ’€์— ์ ์žฌ๋ผ ์žˆ๋Š”์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-24 แ„‹แ…ฉแ„’แ…ฎ 11 55 32

4.2.8 Double Write Buffer

๋ฆฌ๋‘๋กœ๊ทธ๋Š” ๋ฆฌ๋‘๋กœ๊ทธ ๊ณต๊ฐ„์˜ ๋‚ญ๋น„๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด ํŽ˜์ด์ง€์˜ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ๋งŒ ๊ธฐ๋กํ•œ๋‹ค.

  • ๋”ฐ๋ผ์„œ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ ํŒŒ์ผ๋กœ ํ”Œ๋Ÿฌ์‹œํ•  ๋•Œ ์ผ๋ถ€๋งŒ ๊ธฐ๋ก๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ๊ทธ ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์€ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ํŽ˜์ด์ง€ ์ผ๋ถ€๋งŒ ๊ธฐ๋…๋˜๋Š” ํ˜„์ƒ์„ ํŒŒ์…œ ํŽ˜์ด์ง€(Partial page), ํ†ค ํŽ˜์ด์ง€(Torn page)๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ด๋Ÿฐ ํ˜„์ƒ์€ ํ•˜๋“œ์›จ์–ด์˜ ์˜ค์ž‘๋™์ด๋‚˜ ์‹œ์Šคํ…œ์˜ ๋น„์ •์ƒ ์ข…๋ฃŒ ๋“ฑ์œผ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Double-Write

์œ„ ๋ฌธ์ œ๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด Double-Write ๊ธฐ๋ฒ•์„ ์ด์šฉํ•œ๋‹ค.

A ~ E๊นŒ์ง€ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ๋กœ ํ”Œ๋Ÿฌ์‹œํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

  • ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜๊ธฐ ์ „์—, A ~ E๊นŒ์ง€ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ์šฐ์„  ๋ฌถ์–ด ํ•œ๋ฒˆ์˜ ๋””์Šคํฌ ์“ฐ๊ธฐ๋กœ Double-Wirte๋ฒ„ํผ์— ๊ธฐ๋กํ•œ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๊ฐ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ํŒŒ์ผ์˜ ์ ๋‹นํ•œ ์œ„์น˜์— ํ•˜๋‚˜์”ฉ ๋žœ๋ค์œผ๋กœ ์“ฐ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ Double Write๋ฒ„ํผ ๊ณต๊ฐ„์— ๊ธฐ๋ก๋œ ๋ณ€๊ฒฝ ๋‚ด์šฉ์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ์ •์ƒ์ ์œผ๋กœ ๊ธฐ๋ก๋˜๋ฉด ๋”์ด์ƒ ํ•„์š”๊ฐ€ ์—†์–ด์ง„๋‹ค.

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

Double Wirte๋Š” HDD์ฒ˜๋Ÿผ ์ž๊ธฐ ์›ํŒ์ด ํšŒ์ „ํ•˜๋Š” ์ €์žฅ์‹œ์Šคํ…œ์—์„œ๋Š” ํ•œ๋ฒˆ์˜ ์ˆœ์ฐจ ๋””์Šคํฌ ์“ฐ๊ธฐ๋ฅผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๋ถ€๋‹ด๋˜์ง€ ์•Š์ง€๋งŒ, SDD๊ฐ™์ด ๋žœ๋คIO๋‚˜ ์ˆœ์ฐจIO์˜ ๋น„์šฉ์ด ๋น„์Šทํ•œ ์ €์žฅ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ถ€๋‹ด์Šค๋Ÿฝ๋‹ค.

  • ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์ด ๋งค์šฐ ์ค‘์š”ํ•œ ์„œ๋น„์Šค์—์„œ๋Š” Double Wirte ํ™œ์„ฑํ™”๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ๋งŒ์•ฝ DB ์„œ๋ฒ„์„ฑ๋Šฅ์„ ์œ„ํ•ด InnoDB ๋ฆฌ๋‘ ๋กœ๊ทธ ๋™๊ธฐํ™” ์„ค์ •(innodb_flush_log_at_trx_commit)์„ ๊บผ๋†จ๋‹ค๋ฉด Double Write๋„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ MySQL ์„œ๋ฒ„๋Š” ๋ณต์ œ๋ฅผ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ๋ณธ์„ ์œ ์ง€ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๋น„์ •์ƒ ์ข…๋ฃŒ๊ฐ€ ๋˜๋ฉด ๋ฐฑ์—…๊ณผ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ๋ฅผ ์ด์šฉํ•ด ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
๋งŒ์•ฝ ๋ฌด๊ฒฐ์„ฑ์ด ๋ฏผ๊ฐํ•œ ์„œ๋น„์Šค๋ผ๋ฉด ๋ฆฌ๋‘๋กœ๊ทธ์™€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ ๋“ฑ ํŠธ๋žœ์žญ์…˜์„ Commitํ•˜๋Š” ์‹œ์ ์— ๋™๊ธฐํ™”ํ• ๊ฒƒ๋“ค์ด ๋งŽ๋‹ค๋Š” ์ ์„ ์ฃผ์˜ํ•˜์ž.
์ฆ‰, ๋ฆฌ๋‘๋กœ๊ทธ๋Š” ๋™๊ธฐํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ(innodb_flush_log_at_trx_commit 1์ด ์•„๋‹Œ ๊ฒฝ์šฐ) DoubleWrite๋งŒ ํ™œ์„ฑํ™”ํ•œ๋‹ค๋Š”๊ฒƒ์€ ์ž˜๋ชป๋œ ์„ ํƒ์ด๋‹ค.

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

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ํŠธ๋žœ์žญ์…˜๊ณผ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์„ ๋ณด์žฅํ•˜๊ธฐ์œ„ํ•ด DML๋กœ ๋ณ€๊ฒฝ๋˜๊ธฐ ์ด์ „ ๋ฒ„์ „์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„๋กœ ๋ฐฑ์—…ํ•œ๋‹ค. โžก ์–ธ๋‘๋กœ๊ทธ(Undo Log)

  • ํŠธ๋žœ์žญ์…˜ ๋ณด์žฅ
    • ํŠธ๋žœ์žญ์…˜์ด ๋กค๋ฐฑ๋˜๋ฉด ํŠธ๋žœ์žญ์…˜ ๋„์ค‘ ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์ „์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋Š”๋ฐ, ์ด๋•Œ ์–ธ๋‘๋กœ๊ทธ์— ๋ฐฑ์—…ํ•ด๋‘” ์ด์ „ ๋ฒ„์ „์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ณต๊ตฌํ•œ๋‹ค.
  • ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ๋ณด์žฅ
    • ํŠน์ • ์ปค๋„ฅ์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋„์ค‘ ๋‹ค๋ฅธ ์ปค๋„ฅ์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋ฉด, ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์— ๋งž๊ฒŒ ๋ณ€๊ฒฝ์ค‘์ธ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ์ง€ ์•Š๊ณ  ์–ธ๋‘ ๋กœ๊ทธ์— ๋ฐฑ์—…ํ•ด๋‘” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

์–ธ๋‘๋กœ๊ทธ๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜์ง€๋งŒ, ๊ด€๋ฆฌ ๋น„์šฉ๋„ ๋งŽ์ด ํ•„์š”ํ•˜๋‹ค.

4.2.9.1 ์–ธ๋‘ ๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ ๋ชจ๋‹ˆํ„ฐ๋ง

DML ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉด, ํŠธ๋žœ์žญ์…˜์„ ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์•„๋„ ์‹ค๋ฐ ๋ฐ์ดํ„ฐ ํŒŒ์ผ(๋ฐ์ดํ„ฐ/์ธ๋ฑ์Šค ๋ฒ„ํผ)๋‚ด์šฉ์€ ๋ณ€๊ฒฝ๋œ๋‹ค.

  • ๊ทธ๋ฆฌ๊ณ  ๋ณ€๊ฒฝ๋˜๊ธฐ ์ „ ๋ฐ์ดํ„ฐ๋Š” ์–ธ๋‘์˜์—ญ์— ๋ฐฑ์—…๋œ๋‹ค.
  • ์ด ์ƒํƒœ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ปค๋ฐ‹ํ•˜๋ฉด, ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜๊ณ  ๋กค๋ฐฑํ•˜๋ฉด ์–ธ์šฐ ์˜์œฝ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต๊ตฌ๋œ๋‹ค.

์–ธ๋‘๋กœ๊ทธ์˜ ๋ฐ์ดํ„ฐ์˜ ์šฉ๋„

  1. ํŠธ๋žœ์žญ์…˜ ๋กค๋ฐฑ ๋Œ€๋น„์šฉ
  2. ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ์œ ์ง€ํ•˜๋ฉด์„œ, ๋†’์€ ๋™์‹œ์„ฑ์„ ์ œ๊ณต

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€: ๋™์‹œ์— ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ/์กฐํšŒ ์‹œ ํ•œ ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—… ๋‚ด์šฉ์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์–ด๋–ป๊ฒŒ ๋ณด์ผ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€ 5.4.3์ ˆ

MySQL 5.5 ์ด์ „ ๋ฒ„์ „

  1. ํ•œ๋ฒˆ ์ฆ๊ฐ€ํ•œ ์–ธ๋‘๋กœ๊ทธ ๊ณต๊ฐ„์€ ๋‹ค์‹œ ์ค„์–ด๋“ค์ง€ ์•Š๋Š”๋‹ค.
  • 100GB ํ…Œ์ด๋ธ”์„ DELETE๋กœ ์‚ญ์ œํ•˜๋ฉด ์–ธ๋‘๋กœ๊ทธ๋Š” ํ…Œ์ด๋ธ” ํฌ๊ธฐ๋งŒํผ ์–ธ๋‘๋กœ๊ทธ์— ๋ณต์‚ฌํ•˜๋ฉฐ ๊ณต๊ฐ„ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚œ๋‹ค.
  1. ํŠธ๋žœ์žญ์…˜์ด ์˜ค๋žœ ์‹œ๊ฐ„ ์‹คํ–‰๋  ๊ฒฝ์šฐ ์–ธ๋‘๋กœ๊ทธ์–‘์€ ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•œ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋๋‹คํ•ด์„œ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์ด ์ƒ์„ฑํ•œ ์–ธ๋‘๋กœ๊ทธ๋ฅผ ์ฆ‰์‹œ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ A->B->C ์ˆœ์„œ๋Œ€๋กœ ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋˜์—ˆ๊ณ  B์™€ C์˜ ํŠธ๋žœ์žญ์…˜์€ ์™„๋ฃŒ๋˜์—ˆ์ง€๋งŒ A๋Š” ์•„์ง ํ™œ์„ฑํ•ญํƒœ์ผ ๊ฒฝ์šฐ
  • B, C ํŠธ๋žœ์žญ์…˜ ์™„๋ฃŒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด B, C ํŠธ๋žœ์žญ์…˜์ด ๋งŒ๋“  ์–ธ๋‘๋กœ๊ทธ๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.

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

MySQL 5.7, 8.0

์–ธ๋‘๋กœ๊ทธ๋ฅผ ๋Œ์•„๊ฐ€๋ฉด์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ค„์ด๋Š”๊ฒŒ ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค. ๋•Œ๋กœ๋Š” MySQL ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์— ์‚ฌ์šฉ ๊ณต๊ฐ„์„ ์ž๋™์œผ๋กœ ์ค„์—ฌ ์ฃผ๊ธฐ๋„ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ํŠธ๋žœ์žญ์…˜์ด ์žฅ์‹œ๊ฐ„ ํ™œ์„ฑํ™” ๋˜๋Š”๊ฒƒ์€ ์„ฑ๋Šฅ์ƒ ์ข‹์ง€ ์•Š๋‹ค. ๊ทธ๋ž˜์„œ ์–ธ๋‘๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€ ํ•ญ์ƒ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

// MySQL ์„œ๋ฒ„์˜ ๋ชจ๋“  ๋ฒ„์ „์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
show ENGINE INNODB STAUS \G
                         
// 8.0 ๋ฒ„์ „์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ช…๋ น
select count
from information_schema.innodb_metrics
where subsystem='transaction' and name='trx_rseg_history_len';

4.2.9.2 ์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ๊ด€๋ฆฌ

์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค(Undo Tablespace) = ์–ธ๋‘๋กœ๊ทธ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

  • MySQL 5.6 ์ด์ „: ์–ธ๋‘๋กœ๊ทธ๊ฐ€ ๋ชจ๋‘ ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค(ibdata.ibd)์— ์ €์žฅ๋จ. ํ•˜์ง€๋งŒ ์ด๋Š” ์„œ๋ฒ„๊ฐ€ ์ดˆ๊ธฐํ™”๋ ๋•Œ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ™•์žฅ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ๋‹ค.
  • MySQL 5.6 ์ดํ›„: innodb_undo_tablespaces ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๊ฐ€ ๋“ฑ์žฅํ•˜๊ณ  ์ด๋ฅผ 2๋ณด๋‹ค ํฐ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ๋”์ด์ƒ ์–ธ๋‘๋กœ๊ทธ๋ฅผ ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋ณ„๋„์˜ ์–ธ๋‘๋กœ๊ทธ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•œ๋‹ค.
    • ํ•˜์ง€๋งŒ 0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์—ฌ์ „ํžˆ ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค์— ์ €์žฅํ•จ.
  • MySQL 8.0: innodb_undo_tablespaces ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋Š” Deprecated๋˜์—ˆ์œผ๋ฉฐ, ์–ธ๋‘๋กœ๊ทธ๋Š” ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ์™ธ๋ถ€ ๋ณ„๋„ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก๋˜๋„๋ก ๊ฐœ์„ ๋˜์—ˆ๋‹ค.

์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ๊ตฌ์กฐ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-25 แ„‹แ…ฉแ„’แ…ฎ 8 26 10
  • ํ•˜๋‚˜์˜ ์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋Š” 1~128๊ฐœ์˜ ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ๋Š” 1๊ฐœ ์ด์ƒ์˜ ์–ธ๋‘ ์Šฌ๋กฏ(Undo Slot)์„ ๊ฐ€์ง„๋‹ค.
  • ํ•˜๋‚˜์˜ ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ๋Š” InnoDB์˜ ํŽ˜์ด์ง€ ํฌ๊ธฐ๋ฅผ 16byte๋กœ ๋‚˜๋ˆˆ ๊ฐ’์˜ ๊ฐœ์ˆ˜๋งŒํผ ์–ธ๋‘ ์Šฌ๋กฏ์„ ๊ฐ€์ง„๋‹ค.
  • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ํ•„์š”๋กœํ•˜๋Š” ์–ธ๋‘ ์Šฌ๋กฏ์˜ ๊ฐœ์ˆ˜๋Š” insert, update, delete ๋ฌธ์žฅ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ตœ๋Œ€ 4๊ฐœ๊นŒ์ง€ ์–ธ๋‘์Šฌ๋กฏ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์ž„์‹œํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์€ ๋Œ€๋ฝ 2๊ฐœ๋ฅผ ํ•„์š”๋กœํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด๋œ๋‹ค.
  • ๊ทธ๋ž˜์„œ ์ตœ๋Œ€ ๋™์‹œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ํŠธ๋žœ์žญ์…˜ ๊ฐœ์ˆ˜๋Š” ์•„๋ž˜ ์‹์œผ๋กœ ์˜ˆ์ธกํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ตœ๋Œ€ ๋™์‹œ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ = (InnoDB ํŽ˜์ด์ง€ ํฌ๊ธฐ) / 16 * (๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ ๊ฐœ์ˆ˜) * (์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ๊ฐœ์ˆ˜)

16KB InnoDB์˜ ๊ธฐ๋ณธ ์„ค์ •(innodb_undo_tablespaces=2, innodb_rollback_segent=128), ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๋Œ€๋žต 131072๊ฐœ ์ •๋„์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

  • 16 * 1024 / 16 * 128 * 2 / 2 = 131072
  • ๋ฌผ๋ก  ์ผ๋ฐ˜ ์„œ๋น„์Šค๊ฐ€ ์ด์ •๋„๊นŒ์ง€ ๋™์‹œ ํŠธ๋žœ์žญ์…˜์ด ํ•„์š”ํ•˜์ง„ ์•Š์ง€๋งŒ, ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ•ด์„œ ํฌ๊ฒŒ ๋ฌธ์ œ๋  ๊ฑด ์—†์œผ๋ฏ€๋กœ ๊ฐ€๋Šฅํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’์„ ์œ ์ง€ํ•˜์ž.

์–ธ๋‘๋กœ๊ทธ๊ณต๊ฐ„์ด ๋‚จ๋Š”๊ฑด ๋ฌธ์ œ๋˜์ง€ ์•Š์ง€๋งŒ, ์–ธ๋‘ ๋กœ๊ทธ ์Šฌ๋กฏ์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋Š” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ์–ธ๋‘๋กœ๊ทธ ๊ด€๋ จ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์ ์ ˆํžˆ ํ•„์š”ํ•œ ๋™์‹œ ํŠธ๋žœ์žญ์…˜ ๊ฐœ์ˆ˜์— ๋งž๊ฒŒ ์–ธ๋‘ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค์™€ ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผํ•œ๋‹ค.

MySQL 8.0์ด์ „๊นŒ์ง€๋Š” ํ•œ๋ฒˆ ์ƒ์„ฑ๋œ ์–ธ๋‘๋กœ๊ทธ ๋ณ€๊ฒฝ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์•˜์ง€๋งŒ 8.0๋ถ€ํ„ฐ๋Š” CREATE UNDO TABLESPACE, DROP TABLESPACE ๋ช…๋ น์–ด๋กœ ์–ธ๋‘ํ…Œ์ด๋ธ” ์ถ”๊ฐ€/์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-25 แ„‹แ…ฉแ„’แ…ฎ 8 56 36

๊ณผ๋„ํ•œ ์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ๊ณต๊ฐ„ ํ• ๋‹น

์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ๊ณต๊ฐ„์ด ๊ณผ๋„ํ•˜๊ฒŒ ํ• ๋‹น๋˜์–ด ์ด๋ฅผ ๋ฐ˜๋‚ฉํ•˜๋Š”๊ฒƒ์„ Undo tablespace truncate๋ผ๊ณ  ํ•œ๋‹ค.
์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค์˜ ๋ถˆํ•„์š”ํ•œ ๊ณต๊ฐ„์„ ์ž˜๋ผ๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉฐ, ๋‘๊ฐ€์ง€ ๋ชจ๋‘ 8.0๋ถ€ํ„ฐ ์ง€์›๋œ๋‹ค.

์ž๋™ ๋ชจ๋“œ: InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ํผ์ง€ ์Šค๋ ˆ๋“œ(Purge Thread)๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ๊นจ์–ด๋‚˜ ์–ธ๋‘ ๋กœ๊ทธ์—์„œ ๋ถˆํ•„์š”ํ•ด์ง„ ์–ธ๋‘ ๋กœ๊ทธ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…์„ ์‹คํ–‰ํ•œ๋‹ค.

  • innodb_undo_log_truncate๊ฐ€ on์œผ๋กœ ์„ค์ •๋˜๋ฉด ํผ์‹œ ์Šค๋ ˆ๋“œ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„์„ OS๋กœ ๋ฐ˜๋‚ฉํ•œ๋‹ค.
  • ๋” ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๋ ค๋ฉด innodb_purge_rseg_truncate_frequency๋ณ€์ˆ˜๊ฐ’์„ ์กฐ์ •ํ•˜๋ฉด๋œ๋‹ค.

์ˆ˜๋™๋ชจ๋“œ: innodb_undo_log_truncate๊ฐ€ off๋กœ ์„ค์ •๋˜์–ด ์–ธ๋‘๋กœ๊ทธํŒŒ์ผ ์ž˜๋ผ๋‚ด๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜

  • ์˜ˆ์ƒ๋ณด๋‹ค ์ž๋™๋ชจ๋“œ์—ฌ๋„ ๊ณต๊ฐ„ ๋ฐ˜๋‚ฉ์ด ๋ถ€์ง„ํ•œ๊ฒฝ์šฐ, ์–ธ๋‘ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํผ์ง€์Šค๋ ˆ๋“œ๋Š” ๋น„ํ™œ์„ฑ ์ƒํƒœ์˜ ์–ธ๋‘ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค๋ฅผ ์ฐพ์•„ ๋ถˆํ•„์š”ํ•œ ๊ณต๊ฐ„์„ ์ž˜๋ผ๋‚ด๋„ OS๋กœ ํ•ด๋‹น ๊ณค๊ฐ„์„ ๋ฐ˜๋‚ฉํ•œ๋‹ค.
  • ๋ฐ˜๋‚ฉ์ด ์™„๋ฃŒ๋˜๋ฉด ์–ธ๋‘ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋ฅผ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•œ๋‹ค.
  • ์ˆ˜๋™๋ชจ๋“œ๋Š” ์–ธ๋‘ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๊ฐ€ ์ตœ์†Œ 3๊ฐœ ์ด์ƒ์€๋ผ์•ผ ์ž‘๋™ํ•œ๋‹ค.
// ์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ๋น„ํ™œ์„ฑํ™”
alter undo tablespace tablespace_name set inactive;

// ํผ์ง€ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ๊ณต๊ฐ„์ด ๋ฐ˜๋‚ฉ๋˜๋ฉด ๋‹ค์‹œ ํ™œ์„ฑํ™”
alter undo tablespace tablespace_name set active;

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

RDBMS์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…๋ฟ ์•„๋‹ˆ๋ผ, ํ…Œ์ด๋ธ”์— ํฌํ•จ๋œ ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ์ž‘์—…๋„ ํ•„์š”ํ•˜๋‹ค.

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

์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์ „, ๋ฐ˜๋“œ์‹œ ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•ด์•ผ ํ•˜๋Š” ์œ ๋‹ˆํฌ ์ธ๋ฑ์Šค๋Š” ์ฒด์ธ์ง€ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

์ฒด์ธ์ง€ ๋ฒ„ํผ์— ์ž„์‹œ๋กœ ์ €์žฅ๋œ ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ ์กฐ๊ฐ์€ ์ดํ›„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ๋ณ‘ํ•ฉ๋œ๋‹ค. โžก ๋จธ์ง€ ์Šค๋ ˆ๋“œ

  • MySQL5.5 ์ด์ „: Insert์ž‘์—…์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฒ„ํผ๋ง ๊ฐ€๋Šฅ. ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ ์„ค์ • x
  • MySQL5.5 ์ดํ›„: innodb_change_buffering ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋กœ ์ฒด์ธ์ง€ ๋ฒ„ํผ ํ™œ์„ฑ/๋น„ํ™œ์„ฑํ™” ๊ฐ€๋Šฅ
  • MySQL8.0: Insert, Delete, Update์ž‘์—…๋„ ๋ฒ„ํผ๋ง ๊ฐ€๋Šฅ.

innodb_change_buffering

  • all: ๋ชจ๋“  ์ธ๋ฑ์Šค ๊ด€๋ จ ์ž‘์—…(inserts + deletes + purges) ๋ฒ„ํผ๋ง
  • none: ๋ฒ„ํผ๋ง ์•ˆํ•จ
  • insert: ์ธ๋ฑ์Šค์˜ ์ƒˆ๋กœ์šด ์•„์ดํ…œ ์ถ”๊ฐ€๋งŒ ๋ฒ„ํผ๋ง
  • deletes: ์ธ๋ฑ์Šค์˜ ๊ธฐ์กด ์•„์ดํ…œ ์‚ญ์ œ(์‚ญ์ œ๋๋‹ค๋Š” ๋งˆํ‚น)๋งŒ ๋ฒ„ํผ๋ง
  • changes: ์ถ”๊ฐ€/์‚ญ์ œ๋งŒ ๋ฒ„ํผ๋ง
  • purges: ์ธ๋ฑ์Šค์˜ ์•„์ดํ…œ ์˜๊ตฌ ์‚ญ์ œ๋งŒ ๋ฒ„ํผ๋ง(๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…)

์ฒด์ธ์ง€ ๋ฒ„ํผ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒ„ํผํ’€๋กœ ์„ค์ •๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ 25%๊นŒ์ง€๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ•„์š”ํ•˜๋‹ค๋ฉด 50%๊นŒ์ง€ ์‚ฌ์šฉํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฒด์ธ์ง€ ๋ฒ„ํผ๋ฅผ ์ค„์ด๊ฑฐ๋‚˜ ๋Š˜๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด innodb_change_buffer_max_size ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์— ๋น„์œจ์„ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

์ฒด์ธ์ง€ ๋ฒ„ํผ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉ์ค‘์ธ์ง€, ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฒ„ํผ๋งํ•˜๊ณ ์žˆ๋Š”์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

// ์ฒด์ธ์ง€ ๋ฒ„ํผ๊ฐ€ ์‚ฌ์šฉ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํฌ๊ธฐ
select event_name, current_number_of_btyes_used
from performance_schema.memory_summary_global_by_event_name
where event_name='memory/innodb/ibuf01buf';
// ์ฒด์ธ์ง€ ๋ฒ„ํผ ๊ด€๋ จ ์˜คํผ๋ ˆ์ด์…˜ ์ฒ˜๋ฆฌ ํšŸ์ˆ˜
show engine innodb status \G

4.2.11 ๋ฆฌ๋‘๋กœ๊ทธ ๋ฐ ๋กœ๊ทธ๋ฒ„ํผ

๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” ํŠธ๋žœ์žญ์…˜์˜ 4๊ฐ€์ง€ ์š”์†Œ์ธ ACID์˜ D(Durable)์— ํ•ด๋‹นํ•˜๋Š” ์˜์†์„ฑ๊ณผ ๊ฐ€์žฅ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋˜์–ด์žˆ๋‹ค.

  • ๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” ํ•˜๋“œ์›จ์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ๋“ฑ ๋ฌธ์ œ๋กœ ์ธํ•ด MySQL์„œ๋ฒ„๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋์„ ๋•Œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๊ธฐ๋ก๋˜์ง€ ๋ชปํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์žƒ์ง€ ์•Š๊ฒŒ ํ•ด์ฃผ๋Š”๊ฒŒ ์•ˆ์ „์žฅ์น˜๋‹ค.

MySQL์„œ๋ฒ„๋ฅผ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„ DB์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋กœ๊ทธ๋กœ ๋จผ์ € ๊ธฐ๋กํ•œ๋‹ค.

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

MySQL์„œ๋ฒ„๊ฐ€ ๋น„์ •์ƒ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์€ ์ผ๊ด€์„ฑ์ด ๊นจ์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

  1. ์ปค๋ฐ‹๋์ง€๋งŒ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๊ธฐ๋ก๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ
  2. ๋กค๋ฐฑ๋์ง€๋งŒ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ์ด๋ฏธ ๊ธฐ๋ก๋œ ๋ฐ์ดํ„ฐ

1๋ฒˆ์˜ ๊ฒฝ์šฐ ๋ฆฌ๋‘ ๋กœ๊ทธ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋ฉด๋œ๋‹ค. ํ•˜์ง€๋งŒ 2๋ฒˆ์€ ๋ฆฌ๋‘ ๋กœ๊ทธ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค.

  • ์ด๋•Œ ๋ณ€๊ฒฝ๋˜์ง€ ์ „ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ์–ธ๋‘ ๋กœ๊ทธ์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์™€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋ณต์‚ฌํ•˜๋ฉด๋œ๋‹ค.
  • ๊ทธ๋ ‡๋‹ค๊ณ  ๋ฆฌ๋‘๋กœ๊ทธ๊ฐ€ ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ๊ทธ ๋ณ€๊ฒฝ์ด ์ปค๋ฐ‹/๋กค๋ฐฑ/ํŠธ๋žœ์žญ์…˜์ค‘๊ฐ„ ์ƒํƒœ์˜€๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋ผ๋„ ํ•„์š”ํ•˜๋‹ค.

๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๋ฉด ์ฆ‰์‹œ ๋””์Šคํฌ๋กœ ๊ธฐ๋ก๋˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

  • ๊ทธ๋ž˜์•ผ ์„œ๋ฒ„๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋์„ ๋•Œ ์ง์ „๊นŒ์ง€์˜ ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹ ๋‚ด์šฉ์ด ๋ฆฌ๋‘ ๋กœ๊ทธ์— ๊ธฐ๋ก๋  ์ˆ˜ ์žˆ๊ณ , ๋ฆฌ๋‘ ๋กœ๊ทธ๋ฅผ ์ด์šฉํ•ด ์žฅ์•  ์ง์ „ ์‹œ์ ๊นŒ์ง€ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.
  • ํ•˜์ง€๋งŒ ์ปค๋ฐ‹๋  ๋•Œ๋งˆ๋‹ค ๋ฆฌ๋‘๋กœ๊ทธ๋ฅผ ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๋Š” ์ž‘์—…์€ ๋งŽ์€ ๋ถ€ํ•˜๋ฅผ ์œ ๋ฐœํ•œ๋‹ค.
  • ๊ทธ๋ž˜์„œ ๋ฆฌ๋‘๋กœ๊ทธ๋ฅผ ์–ด๋Š ์ฃผ๊ธฐ๋กœ ๋™๊ธฐํ™”ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” innodb_flush_log_at_trx_commit์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

innodb_flush_log_at_trx_commit

  • 0: 1์ดˆ์— ํ•œ๋ฒˆ์”ฉ ๋””์Šคํฌ๋กœ ๊ธฐ๋กํ•˜๊ณ  ๋™๊ธฐํ™”. ๋งŒ์•ฝ ์„œ๋ฒ„๊ฐ€ ๋น„์ •์ƒ ์ข…๋ฃŒ๋˜๋ฉด, ์ตœ๋Œ€ 1์ดˆ ๋™์•ˆ์˜ ํŠธ๋žœ์žญ์…˜์€ ์ปค๋ฐ‹๋๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝํ•œ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • 1: ๋งค๋ฒˆ ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹ ์‹œ ๋””์Šคํฌ๋กœ ๊ธฐ๋กํ•˜๊ณ  ๋™๊ธฐํ™”. ์ปค๋ฐ‹๋˜๋ฉด ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝํ•œ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ๋ผ์ง„๋‹ค.
  • 2: ๋งค๋ฒˆ ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹ ์‹œ ๋””์Šคํฌ๋กœ ๊ธฐ๋ก๋˜์ง€๋งŒ, 1์ดˆ์— ํ•œ๋ฒˆ์”ฉ ๋™๊ธฐํ™”. ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๋ฉด ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋กœ ๊ธฐ๋ก๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•œ๋‹ค.
    • ๊ทธ๋ž˜์„œ ์„œ๋ฒ„๊ฐ€ ๋น„์ •์ƒ ์ข…๋ฃŒ๋˜๋”๋ผ๋„ OS๊ฐ€ ์ •์ƒ ์ž‘๋™ํ•œ๋‹ค๋ฉด ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.
    • ์„œ๋ฒ„์™€ OS๋ชจ๋‘ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋ฉด ์ตœ๊ทผ 1์ดˆ๋™์•ˆ์˜ ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

0๊ณผ 2๋กœ ์„ค์ •ํ•ด๋†“์•„๋„, ๋งŒ์•ฝ DDL์ด ์‹คํ–‰๋˜๋ฉด ๋ฆฌ๋‘๋กœ๊ทธ๊ฐ€ ๋””์Šคํฌ๋กœ ๋™๊ธฐํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— 1์ดˆ๋ณด๋‹ค ์งง์„ ์ˆ˜๋Š”์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ ์ž‘์—…์€ ์ž์ฃผ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์€ ์•„๋‹ˆ๋ฏ€๋กœ, ๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” ์ตœ๋Œ€ 1์ดˆ ์ •๋„ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

innodb_flush_log_at_timeout

  • 0๊ณผ 2์ผ ๊ฒฝ์šฐ ๋””์Šคํฌ ๋™์‹œํ™” ์‹œ๊ฐ„๊ฐ„๊ฒฉ์„ ์œ„ ์‹œ์Šคํ…œ๋ณ€์ˆ˜๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐ๋ณธ 1์ดˆ์ด๋ฉฐ ์ผ๋ฐ˜์ ์ธ ์„œ๋น„์Šค์—์„œ ์ด ๊ฐ„๊ฒฉ์„ ๋ณ€๊ฒฝํ•  ์ด์œ ๋Š” ์—†์„ ๊ฒƒ์ด๋‹ค.

๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ๋“ค์˜ ์ „์ฒดํฌ๊ธฐ๊ฐ€ ๋ฒ„ํผํ’€์˜ ํšจ์œจ์„ฑ์„ ๊ฒฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ ์ค‘ํ•˜๊ฒŒ ๊ฒฐ์ •ํ•ด์•ผํ•œ๋‹ค.

  • innodb_log_files_size: ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ ํฌ๊ธฐ ๊ฒฐ์ •
  • innodb_log_files_in_group: ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ ๊ฐœ์ˆ˜ ๊ฒฐ์ •
  • ์ „์ฒดํฌ๊ธฐ = ํŒŒ์ผํฌ๊ธฐ * ํŒŒ์ผ๊ฐœ์ˆ˜
  • ์ „์ฒดํฌ๊ธฐ๋Š” ๋ฒ„ํผํ’€์˜ ํฌ๊ธฐ์— ๋งž๊ฒŒ ์„ ํƒ๋ผ์•ผ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ๋ฒ„ํผํ’€์— ๋ชจ์•˜๋‹ค๊ฐ€ ํ•œ๋ฒˆ์— ๋ชจ์•„ ๋””์Šคํฌ๋กœ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ DBMS ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ ๋ฆฌ๋‘ ๋กœ๊ทธ์˜ ๊ธฐ๋ก์ž‘์—…์ด ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๋Œ€ํ•œ ACID ์†์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์ˆ˜์ค€์—์„œ ๋ฒ„ํผ๋งํ•œ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋ฆฌ๋‘ ๋กœ๊ทธ ๋ฒ„ํผ๋ง์— ์‚ฌ์šฉ๋˜๋Š” ๊ณต๊ฐ„์ด ๋กœ๊ทธ ๋ฒ„ํผ๋‹ค.

๋กœ๊ทธ๋ฒ„ํผ

  • ๋กœ๊ทธ ๋ฒ„ํผ๋Š” ๊ธฐ๋ณธ๊ฐ’์ด 16MB ์ˆ˜์ค€์—์„œ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•˜๋‹ค.
  • ํ•˜์ง€๋งˆ BLOB์ด๋‚˜ TEXT์™€ ๊ฐ™์ด ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์ฃผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ ๋” ํฌ๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ACID ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠธ๋žœ์žญ์…˜์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ ํ•„์š”ํ•œ 4๊ฐ€์ง€ ์š”์†Œ

  • A(Atomic): ํŠธ๋žœ์žญ์…˜์€ ์›์ž์„ฑ ์ž‘์—…์ด์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•œ๋‹ค.
  • C(Consistent): ์ผ๊ด€์„ฑ์„ ์˜๋ฏธํ•œ๋‹ค.
  • I(Isolated): ๊ฒฉ๋ฆฌ์„ฑ์„ ์˜๋ฏธํ•œ๋‹ค.
  • D(Durable): ํ•œ๋ฒˆ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ง€์†์ ์œผ๋กœ ์œ ์ง€๋ผ์•ผ ํ•œ๋‹ค.

4.2.11.1 ๋ฆฌ๋‘ ๋กœ๊ทธ ์•„์นด์ด๋น™

...

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

์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค: ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹Œ, InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์ฃผ ์š”์ฒญํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์ธ๋ฑ์Šค

  • B-Tree ์ธ๋ฑ์Šค์—์„œ ํŠน์ • ๊ฐ’์„ ์ฐพ๋Š” ๊ณผ์ •์ด ๋งค์šฐ ๋น ๋ฅผ ๊ฑฐ๊ฐ™์ง€๋งŒ, DB ์„œ๋ฒ„๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ผ์„ ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ B-Tree ์ธ๋ฑ์Šค์—์„œ ๊ฐ’์„ ์ฐพ๋Š” ๊ณผ์ •์ด ๋Š๋ ค์งˆ ์ˆ˜๋„ ๋นจ๋ผ์งˆ ์ˆ˜ ๋„์žˆ์Œ.
  • ํŠน์ • ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด B-Tree์˜ ๋ฃจํŠธ ๋…ธ๋“œ -> ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ -> ์ตœ์ข… ๋ฆฌํ”„๋…ธํŠธ
  • ์ด๋Ÿฐ ์ž‘์—…์„ ๋™์‹œ์— ๋ช‡์ฒœ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋กœ ์‹คํ–‰ํ•˜๋ฉด? ์ž์—ฐํžˆ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.

์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค๋Š” B-Tree ๊ฒ€์ƒ‰์‹œ๊ฐ„์„ ์ค„์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ๊ธฐ๋Šฅ

  • InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์ž์ฃผ ์ฝํžˆ๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์˜ ํ‚ค ๊ฐ’์„ ์ด์šฉํ•ด ํ•ด์‹œ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๊ณ 
  • ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ €์žฅ๋œ ํŽ˜์ด์ง€๋ฅผ ์ฆ‰์‹œ ์ฐพ์•„๊ฐ
  • B-Tree ๋ฃจํŠธ~๋ฆฌํ”„๊นŒ์ง€ ์ฐพ๋Š” ๋น„์šฉ์ด ์—†์–ด์ง€๊ณ  CPU๋Š” ์ ์€์ผ์„ ํ•˜์ง€๋งŒ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์€ ๋นจ๋ผ์ง.
  • ๋™์‹œ์— ๋น ๋ฅธ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ.

ํ•ด์‹œ ์ธ๋ฑ์Šค๋Š” ์ธ๋ฑ์Šค ํ‚ค ๊ฐ’์™€ ์—”๋ฑ์Šค ํ‚ค ๊ฐ’์ด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€ ์ฃผ์†Œ ์Œ์œผ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

  • ์ธ๋ฑ์Šค ํ‚ค ๊ฐ’์€ B-Tree ์ธ๋ฑ์Šค ๊ณ ์œ  ๋ฒˆํ˜ธ(Id)์™€ B-Tree ์ธ๋ฑ์Šค ์‹ค์ œ ํ‚ค ๊ฐ’ ์กฐํ•ฉ์œผ๋กœ ์ƒ์„ฑ.
    • ๋ชจ๋“  B-Tree ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค๊ฐ€ ํ•˜๋‚˜์˜ ํ•ด์‹œ ์ธ๋ฑ์Šค์— ์ €์žฅ๋˜๋ฉฐ, ํŠน์ • ํ‚ค ๊ฐ’์ด ์–ด๋Š ์ธ๋ฑ์Šค์— ์†ํ•œ ๊ฒƒ์ธ์ง€ ๊ตฌ๋ถ„ํ•ด์•ผํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€ ์ฃผ์†Œ๋Š” ์‹ค์ œ ํ‚ค ๊ฐ’์ด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด๋Š” InnoDB๋ฒ„ํผํ’€์— ๋กœ๋”ฉ๋œ ํŽ˜์ด์ง€์˜ ์ฃผ์†Œ๋ฅผ ์˜๋ฏธ
    • ๊ทธ๋ž˜์„œ ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค๋Š” ๋ฒ„ํผ ํ’€์— ์˜ฌ๋ ค์ง„ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ๋งŒ ๊ด€๋ฆฌ๋˜๊ณ , ๋ฒ„ํผ ํ’€์— ํ•ด๋‹น ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ์—†์–ด์ง€๋ฉด ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค์—์„œ๋„ ํ•ด๋‹น ํŽ˜์ด์ง€๋Š” ์‚ฌ๋ผ์ง„๋‹ค.

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

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

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

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

ํ•˜์ง€๋งŒ ๋‹จ์ˆœํžˆ ๋„์›€์˜ ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•˜๋Š”๊ฑด ์‰ฝ์ง€ ์•Š์Œ.

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

๋˜ํ•œ ์ด๋Š” ํ…Œ์ด๋ธ” ์‚ญ์ œ ์ž‘์—…์—๋„ ๋งŽ์€ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

  • ๋งŒ์•ฝ ์–ด๋–ค ํ…Œ์ด๋ธ” ์ธ๋ฑ์Šค๊ฐ€ ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค์— ์ ์žฌ๋ผ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.
  • ์ด๋•Œ ํ…Œ์ด๋ธ”์„ ์‚ญ์ œ/๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ์ด ํ…Œ์ด๋ธ”์ด ๊ฐ€์ง„ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€ ๋‚ด์šฉ์„ ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค์—์„œ ์ œ๊ฑฐํ•ด์•ผํ•œ๋‹ค.
  • ์ƒ๋‹นํžˆ ๋งŽ์€ CPU ์‚ฌ์›์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ. โžก๏ธ ์น˜๋ช…์ ์ธ ์ž‘์—…

๋”ฐ๋ผ์„œ ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค๊ฐ€ ์„œ๋น„์Šค์— ๋„์›€์ด ๋˜๋Š”์ง€ ์•„๋‹Œ์ง€ ์ž˜ ํŒ๋‹จํ•ด์•ผํ•œ๋‹ค.

4.2.13 InnoDB์™€ MyISAM, MEMORY ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๋น„๊ต

๊ทธ๋ƒฅ. InnoDB ์—”์ง„ ์“ฐ๋ผ๋Š” ๋‚ด์šฉ.

  • MEMORY๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ณผ๋Œ€ํ‰๊ฐ€ ๋ฐ›์ง€๋งŒ InnoDB ๋ชป๋”ฐ๋ผ๊ฐ.
  • MyISAM ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๋งŒ์ด ๊ฐ€์ง€๋Š” ์žฅ์  ์—†์Œ.