DevLog ๐Ÿ˜ถ

[Real MySQL 8.0] InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์•Œ์•„๋ณด๊ธฐ - 3ํŽธ (Buffer Pool - on disk structures) ๋ณธ๋ฌธ

๐Ÿ“–/Real MySQL 8.0

[Real MySQL 8.0] InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์•Œ์•„๋ณด๊ธฐ - 3ํŽธ (Buffer Pool - on disk structures)

dolmeng2 2023. 6. 15. 13:52

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” InnoDB์˜ ์ „๋ฐ˜์ ์ธ ์•„ํ‚คํ…์ฒ˜ ์ค‘์—์„œ ๋””์Šคํฌ ์˜์—ญ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ๋งŒ ์งš๊ณ  ๋„˜์–ด๊ฐ€๊ณ ์ž ํ•œ๋‹ค.
 


 

์ €๋ฒˆ ํฌ์ŠคํŒ… ๊ทธ๋ฆผ ์žฌํƒ•...~

 

๐ŸŒฑ Tablespace

ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํฐ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„์ด๋ฉฐ, Segment -> Extent -> Page -> Row์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. MySQL์—์„œ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค๋Š” ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ์„œ 5๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๊ฐ€ ๊ฐ€๋Šฅํ•œ๋ฐ, ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
 
- System tablespace
- File-Per-Table tablespace
- General Tablespace
- Temporary Tablespace
- Undo Tablespace


 

๐ŸŒฑ System tablespace

System tablespace์˜ ๊ฒฝ์šฐ MySQL์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” Shared Tablespace์ด๋‹ค.
์ฒด์ธ์ง€ ๋ฒ„ํผ๊ฐ€ ์žˆ๋Š” ์˜์—ญ์ด๋ฉฐ, ์—ฌ๊ธฐ์„œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ํ…Œ์ด๋ธ”๊ณผ ์ธ๋ฑ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ํฌ๊ธฐ์™€ ์ˆ˜๋Š” innodb_data_file_path๋ผ๋Š” ์‹œ์Šคํ…œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
 


 

๐ŸŒฑ File-Per-Table tablespace

ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ์™€ ์ธ๋ฑ์Šค๋ฅผ ๊ฐœ๋ณ„์ ์ธ ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค์ด๋‹ค.
์ฆ‰, ์šฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ํ…Œ์ด๋ธ”์€ ์ด ๊ณต๊ฐ„์— ์ €์žฅ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. 
inno_file_per_table ์˜ต์…˜์œผ๋กœ ์กฐ์ ˆ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ•ด๋‹น ์˜ต์…˜์„ ๋น„ํ™œ์„ฑํ™” ํ•˜๋ฉด ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค์— ์ƒˆ์—‡ใ…‡๋œ๋‹ค.
 
- truncate / drop ์—ฐ์‚ฐ ์‹œ ๋””์Šคํฌ ๊ณต๊ฐ„์€ OS์—๊ฒŒ ๋ฐ˜๋‚ฉ๋œ๋‹ค. (ํ…Œ์ด๋ธ” ์‚ญ์ œ ์‹œ ๋ฒ„ํผ ํ’€์„ ์ž ๊ทธ๊ณ  ์Šค์บ”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„ํผ ํ’€์ด ํฌ๋‹ค๋ฉด ์‹œ๊ฐ„์ด ๋” ์†Œ์š”๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์  ์ฃผ์˜)
- ๋‹ค๋ฅธ MySQL ์ธ์Šคํ„ด์Šค์—์„œ file-per-table ๊ณต๊ฐ„์— ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
 


๐ŸŒฑ General tablespace

create tablespace๋กœ ๋งŒ๋“  ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ, shared tablespace์—ฌ์„œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‹ค๋ฅธ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค๋ฅผ general๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์ž„์‹œ ํ…Œ์ด๋ธ”์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
file-per-table ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค์™€ ๋‹ค๋ฅด๊ฒŒ truncate / drop ์‹œ์— ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋น„์–ด์žˆ๋Š” ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋ฉฐ, OS๋กœ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค.


 

๐ŸŒฑ Temporary tablespace

๋‚ด๋ถ€์ ์œผ๋กœ 2๊ฐ€์ง€์˜ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค๋กœ ๋ถ„๋ฆฌ๋˜๋Š”๋ฐ, Session / Global Temporary tablespace๋กœ ๋‚˜๋‰œ๋‹ค.
 
Session Temporary tablespace์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•œ ์ž„์‹œ ํ…Œ์ด๋ธ”๊ณผ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ž„์‹œ๋กœ ์ƒ์„ฑํ•˜๋Š” ์ž„์‹œ ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์„ ์ €์žฅํ•œ๋‹ค.
์ด ๊ณต๊ฐ„์€ ์ปค๋„ฅ์…˜์ด ์ข…๋ฃŒ๋˜๋ฉด truncate ๋˜์–ด์„œ temp tablespace pool๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค. ํ’€์˜ ๊ฒฝ์šฐ ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜๋ฉด 10๊ฐœ์˜ temporary tablespace๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ์„œ ํ’€์— ๋” ์ถ”๊ฐ€๋œ๋‹ค.
 
Global Temporary tablespace์˜ ๊ฒฝ์šฐ ์ž„์‹œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ๋“ค์„ ์ €์žฅํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋‚˜ ์ด๋ฆ„, ํฌ๊ธฐ, ์†์„ฑ์„ ์ •์˜ํ•˜๋ฉฐ (innodb_temp_data_file_path ๋ณ€์ˆ˜๋กœ ์ง€์ •) ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. (innodb_data_home_dir ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ƒ์„ฑ)
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ค‘๋‹จ๋˜๋ฉด ์ œ๊ฑฐ๋˜๊ณ , ์„œ๋ฒ„๊ฐ€ ์žฌ์‹œ์ž‘๋˜๋ฉด ๋‹ค์‹œ ์ƒ์„ฑ๋œ๋‹ค.
 


 

๐ŸŒฑ Undo Tablespace

Undo tablespace์—๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ Undo Log ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. Undo ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ ๋‚ด๋ถ€์— ํฌํ•จ๋œ ์–ธ๋‘ ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ์— ์กด์žฌํ•˜๋ฉฐ, ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ์˜ ๊ฒฝ์šฐ undo tablespace or global tempory tablespace ์•ˆ์— ์žˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ 2๊ฐœ์˜ undo tablespace๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, innodb_undo_directory ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์— ์ •์˜๋œ ์œ„์น˜์— ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. (๋ฏธ์ง€์ • ์‹œ mysql data ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ƒ์„ฑ)
โญ๏ธ ์—ฌ๊ธฐ์„œ ์ผ๋ฐ˜ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํŠธ๋žœ์žญ์…˜์€ Undo tablespace, ์ž„์‹œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํŠธ๋žœ์žญ์…˜์€ Global temporary tablespace์— undo log๊ฐ€ ํ• ๋‹น๋œ๋‹ค.
 
 

๐Ÿ’ฌ Undo Log

InnoDB๋Š” ํŠธ๋žœ์žญ์…˜ (๋กค๋ฐฑ ๋Œ€๋น„)๊ณผ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ๋ณด์žฅ์„ ์œ„ํ•ด CUD ์ฟผ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ธฐ ์ด์ „์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„๋กœ ๋ฐฑ์—…ํ•˜๋ฉฐ, ์ด๋ฅผ Undo Log๋ผ๊ณ  ํ•œ๋‹ค. ๋งค์šฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๋งŒํผ ๊ด€๋ฆฌ ๋น„์šฉ๋„ ์ƒ๋‹นํ•˜๋‹ค.
 
๋งŒ์•ฝ, A๋ผ๋Š” ํŠธ๋žœ์žญ์…˜์ด ๋งค์šฐ ๊ธธ์–ด์„œ ๊ทธ ์‚ฌ์ด์— ์—ฌ๋Ÿฌ CUD ์ž‘์—…์ด ์ผ์–ด๋‚ฌ๋‹ค๋ฉด, ์‚ฌ์ด์— ๋ฐœ์ƒํ•œ ์ž‘์—…์˜ ํŠธ๋žœ์žญ์…˜์ด ๋๋‚˜๋”๋ผ๋„ ์–ธ๋‘ ๋กœ๊ทธ๋Š” ๊ณ„์†ํ•ด์„œ ๋ณด์กด๋  ๊ฒƒ์ด๋‹ค. MySQL 5.5 ์ด์ „์—์„œ๋Š” ํ•œ ๋ฒˆ ์ฆ๊ฐ€ํ•œ ์–ธ๋‘ ๋กœ๊ทธ ๊ณต๊ฐ„์ด ๋‹ค์‹œ ์ค„์–ด๋“ค์ง€ ์•Š์•˜๋‹ค. ์ด๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์–ธ๋‘ ๋กœ๊ทธ์˜ ์–‘์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ฆ๊ฐ€๋˜๊ณ , ์กฐํšŒ ์‹œ๋งˆ๋‹ค ์ปค์ง„ ์–ธ๋‘ ๋กœ๊ทธ๋ฅผ ์Šค์บ”ํ•˜๋ฉด์„œ ์„ฑ๋Šฅ์ด ๋‚˜๋น ์ง€๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ 8.0์œผ๋กœ ์˜ค๋ฉด์„œ ํ•„์š”ํ•œ ์‹œ์ ์— ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์ฃผ๊ฑฐ๋‚˜, ์–ธ๋‘ ๋กœ๊ทธ๋ฅผ ๋Œ์•„๊ฐ€๋ฉด์„œ ์‚ฌ์šฉํ•ด์„œ ๋””์Šคํฌ ๊ณต๊ฐ„์ด ํฌ๊ฒŒ ๋Š˜์–ด๋‚˜์ง€ ์•Š๋„๋ก ๋งŒ๋“ค์–ด๋‘์—ˆ๋‹ค.
 
๋˜ํ•œ, ์–ธ๋‘ ๋กœ๊ทธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ฆ๊ฐ€ํ–ˆ๋Š”์ง€ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

SHOW ENGINE INNODB STATUS \G

์ด๋Ÿฐ ์‹์œผ๋กœ ๋‚˜์˜จ๋‹ค. ์ €๊ธฐ์„œ History List์— ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ์–ธ๋‘ ๋กœ๊ทธ์˜ ๊ฑด์ˆ˜์ด๋‹ค. (๋”ฑํžˆ ์ž‘์—…ํ•œ ๊ฒŒ ์—†์–ด์„œ 0์ด๋‹ค)
 
MySQL 8.0์ด๋ผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ข€ ๋” ๋ช…์‹œ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

select count
from information_schema.INNODB_METRICS
where SUBSYSTEM='transaction'
and name = 'trx_rseg_history_len';

 

๐Ÿ’ก ์ฐธ๊ณ ๋กœ, ์–ธ๋‘ ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ ์ตœ๋Œ€ 4๊ฐœ๋กœ ๋ถ„๋ฆฌ๋œ๋‹ค.

- ์‚ฌ์šฉ์ž ์ •์˜ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ INSERT
- ์‚ฌ์šฉ์ž ์ •์˜ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ UPDATE / DELETE
- ์‚ฌ์šฉ์ž ์ •์˜ ์ž„์‹œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ INSERT
- ์‚ฌ์šฉ์ž ์ •์˜ ์ž„์‹œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ UPDATE / DELETE

์ด๋Š” UPDATE / DELETE ์‹œ ๋ฐœ์ƒํ•œ ์–ธ๋‘ ๋กœ๊ทธ๋Š” MVCC, ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ์— ๋ชจ๋‘ ์‚ฌ์šฉ๋˜์ง€๋งŒ INSERT์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ์— ๋Œ€ํ•ด์„œ๋งŒ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ํ™•์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” UPDATE / DELETE๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ ์–ธ๋‘ ๋กœ๊ทธ ๊ฐœ์ˆ˜๋งŒ ํ‘œ์‹œ๋œ๋‹ค.

 
์ด๋Ÿฌํ•œ ์–ธ๋‘ ๋กœ๊ทธ๋Š” MySQL 8.0๋ถ€ํ„ฐ ๋กœ๊ทธ ํŒŒ์ผ์„ ํ†ตํ•ด์„œ ๊ธฐ๋ก๋œ๋‹ค.
์ด์ „์—๋Š” ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค์— ์ €์žฅ๋์—ˆ๋Š”๋ฐ, 1~128๊ฐœ์˜ ๋กค๋ฐฑ ์„ธํฌ๋จผ์Šค๋ฅผ ๊ฐ€์ง„๋‹ค. (ํŽ˜์ด์ง€ ํฌ๊ธฐ / 16bytes๊ฐœ)
ํ•˜๋‚˜์˜ ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ ๋‚ด์—๋Š” ๋‹ค์‹œ 1๊ฐœ ์ด์ƒ์˜ Undo ์Šฌ๋กฏ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์€ ์ตœ๋Œ€ 4๊ฐœ๊นŒ์ง€์˜ ์–ธ๋‘ ์Šฌ๋กฏ์„ ์‚ฌ์šฉํ•œ๋‹ค. (์ผ๋ฐ˜์ ์œผ๋กœ๋Š” 2๊ฐœ)
๊ทธ๋ž˜์„œ, ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์˜ ๊ฐœ์ˆ˜๋Š” ๋ณดํ†ต (innoDB ํŽ˜์ด์ง€ ํฌ๊ธฐ) / 16 * (๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ ๊ฐœ์ˆ˜) * (์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ๊ฐœ์ˆ˜)๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์–ธ๋‘ ๋กœ๊ทธ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์–ธ๋‘ ๋กœ๊ทธ ๊ด€๋ จ ๋ณ€์ˆ˜๋ฅผ ์กฐ์ ˆํ•  ๋•Œ๋Š” ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ์„œ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค์™€ ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.
 
MySQL 8.0๋ถ€ํ„ฐ๋Š” create undo tablespace๋‚˜ drop tablespace ๋“ฑ์„ ํ†ตํ•ด์„œ ๋™์ ์œผ๋กœ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. 

# undo log ๊ด€๋ จ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ํ™•์ธ
select TABLESPACE_NAME, FILE_NAME
from information_schema.FILES
where FILE_TYPE like 'undo log'

 

 
๐Ÿ’ฌ Undo tablespace ๊ณต๊ฐ„ ์ค„์ด๊ธฐ

๋งŒ์•ฝ ์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค์˜ ๊ณต๊ฐ„์„ ์ค„์ด๊ณ  ์‹ถ๋‹ค๋ฉด, 2๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
CUD ์ฟผ๋ฆฌ ์ž‘์—… ์‹œ ์–ธ๋‘ ๋กœ๊ทธ๋กœ ๊ธฐ๋ก๋˜๋Š”๋ฐ, ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๋ฉด ์–ธ๋‘ ๋กœ๊ทธ์— ๋ณต์‚ฌ๋œ ๊ฐ’์€ ๋ถˆํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํผ์ง€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ•ด๋‹น ๊ฐ’์„ ์ œ๊ฑฐํ•œ๋‹ค. ์ด๋•Œ, innodb_undo_log_truncate ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๊ฐ€ on์ด๋ผ๋ฉด ํผ์ง€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„์„ OS์—๊ฒŒ ๋ฐ˜๋‚ฉํ•œ๋‹ค. (๋ฐ˜๋‚ฉ ์ฃผ๊ธฐ๋Š” innodb_purge_rseg_truncate_frequency ๋ณ€์ˆ˜ ์กฐ์ •)
 
ํ˜น์€, ์ง์ ‘ ๋น„ํ™œ์„ฑํ™” ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ํผ์ง€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋น„ํ™œ์„ฑ ์ƒํƒœ์ธ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋ฅผ ๋ฐ˜๋‚ฉํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. (์ด๋•Œ๋Š” ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๊ฐ€ ์ตœ์†Œ 3๊ฐœ ์ด์ƒ์€ ๋˜์–ด์•ผ ์ž‘๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค.)

# ๋น„ํ™œ์„ฑํ™”
alter undo tablespace tablespace_name set inactive;

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

 

๐ŸŒฑ Double Write Buffer

๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” ํŽ˜์ด์ง€์˜ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ๊ธฐ๋กํ•˜๋Š”๋ฐ, ๋งŒ์•ฝ ๋”ํ‹ฐ ํŽ˜์ด์ง€ ํ”Œ๋Ÿฌ์‹œ ์‹œ ์ผ๋ถ€๋งŒ ๊ธฐ๋ก๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€ ๋‚ด์šฉ์€ ๋ณต๊ตฌ ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์ผ๋ถ€๋งŒ ๊ธฐ๋ก๋˜๋Š” ๊ฒƒ์„ Partial-Page, ๋˜๋Š” Torn-Page๋ผ๊ณ ํ•œ๋‹ค.
์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด InnoDB์—์„œ๋Š” 'Double-Write'๋ผ๋Š” ๊ณต๊ฐ„์„ ํ†ตํ•ด, ๋ฒ„ํผ ํ’€๋กœ๋ถ€ํ„ฐ ํ”Œ๋Ÿฌ์‹œ๋œ ํŽ˜์ด์ง€๋ฅผ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ์“ฐ๊ธฐ ์ „์— ์ €์žฅํ•œ๋‹ค.
 

1. A~E๊นŒ์ง€์˜ ๋”ํ‹ฐ ํŽ˜์ด์ง€ ํ”Œ๋Ÿฌ์‹œ
2. ๋””์Šคํฌ๋กœ ๊ธฐ๋กํ•˜๊ธฐ ์ „์— A~E๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์–ด์„œ Double Write Bufer์— ๊ธฐ๋ก
3. ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ์ ๋‹นํ•œ ์œ„์น˜์— ๋žœ๋ค์œผ๋กœ ์“ฐ๊ธฐ ์ž‘์—… ์ง„ํ–‰

 
๋งŒ์•ฝ ์ •์ƒ ๊ธฐ๋ก ์‹œ Double Write Buffer์— ๊ธฐ๋ก๋œ ๊ฒƒ์€ ์ œ๊ฑฐ๋˜๊ณ , ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์„ ์ฐธ์กฐํ•˜์—ฌ ๋ณต๊ตฌํ•œ๋‹ค.
๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค๋ผ๋ฉด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. (innodb_doublewrite ๋ณ€์ˆ˜ ์‚ฌ์šฉ)
- ์ฐธ๊ณ ๋กœ innodb_flush_log_at_trx_commit ์˜ต์…˜์„ (์ปค๋ฐ‹ ์‹œ ์•„๋ฌด ์ž‘์—…๋„ X, ํ•ด๋‹น ์˜ต์…˜์ด ์ผœ์ ธ ์žˆ๋‹ค๋ฉด ์ปค๋ฐ‹ ์‹œ ๋กœ๊ทธ ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ ์“ฐ๊ณ  => ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ ์“ฐ๋Š” ์ž‘์—… ์ง„ํ–‰) ์„ฑ๋Šฅ์ƒ์œผ๋กœ ๊ป๋‹ค๋ฉด doublewrite๋„ ๋„์ž.
 


 

๐ŸŒฑ Redo Log 

Redo Log๋Š” ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜์— ์˜ํ•ด ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. (๋ณต๊ตฌ ์ž‘์—…) ๊ธฐ๋ณธ์ ์œผ๋กœ MySQL์€ innoDB์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ”๋กœ ๋””์Šคํฌ์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋ฒ„ํผ ํ’€์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋””์Šคํฌ์— ์ ์šฉ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์žฌ์‹œ์ž‘ ๋™์ž‘ ์ค‘์— Redo ์ž‘์—…์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. 

- ์ฐธ๊ณ ๋กœ, ๋ณต๊ตฌ ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค ํƒ์ƒ‰ํ•˜๊ธฐ -> ๋ฆฌ๋‘ ๋กœ๊ทธ ์ ์šฉํ•˜๊ธฐ -> ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜ ๋กค๋ฐฑํ•˜๊ธฐ -> ์ฒด์ธ์ง€ ๋ฒ„ํผ ๋ณ‘ํ•ฉํ•˜๊ธฐ -> ํผ์ง€ํ•˜๊ธฐ

 
๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒ„ํผ ํ’€์€ ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์€ ์ƒํƒœ๋กœ ์ „ํ˜€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ Clean ํŽ˜์ด์ง€์™€, ๋ณ€๊ฒฝ๋˜์—ˆ์ง€๋งŒ ๋””์Šคํฌ์— ์•„์ง ๊ธฐ๋ก๋˜์ง€ ์•Š์€ Dirty ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, Dirty ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ ๋””์Šคํฌ์™€ ๋ฒ„ํผ ํ’€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜์„ ๋™๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค. 
 
๋”ํ‹ฐ ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ ์‚ฌ์‹ค์ƒ ๋ฒ„ํผํ’€์— ์ž„์‹œ๋กœ ์œ ์ง€๋˜๋Š” ๋ฐ์ดํ„ฐ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์—, innoDB์—์„œ๋Š” ์ด๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์ด ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ 'ํ™œ์„ฑ ๋ฆฌ๋‘ ๋กœ๊ทธ - Active Redo Log'๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
 
ํ™œ์„ฑ ๋ฆฌ๋‘ ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋กœ ๋ฎ์–ด์”Œ์šฐ๋ฉฐ ๊ธฐ๋ก๋œ ํŒŒ์ผ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (์“ฐ์—ฌ์ง„ ๋ฆฌ๋‘ ๋กœ๊ทธ ์ž์ฒด) ์žฌ์‚ฌ์šฉ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋‘ ๋กœ๊ทธ์—์„œ๋Š” ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„๊ณผ ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋ฉฐ, ์ด ์ค‘์—์„œ ํ™œ์„ฑ ๋ฆฌ๋‘ ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ '์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ ๊ณต๊ฐ„'์„ ์˜๋ฏธํ•œ๋‹ค.
 
๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” ์ˆœํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋Š” ๊ณ„์† ๋ฎ์–ด ์”Œ์›Œ์ง€๋ฉด์„œ ์—†์–ด์ง„๋‹ค. ํ•˜์ง€๋งŒ, ๊ธฐ๋ก๋  ๋•Œ๋งˆ๋‹ค ๊ณ„์† ์ฆ๊ฐ€ํ•˜๋Š” 'LSN (Log Sequence Number)'์ด๋ผ๋Š” ๊ฐ’์„ ํ‘œ์‹œํ•œ๋‹ค. LSN์€ Redo Log์— ๊ธฐ๋ก๋œ ์ž‘์—…์˜ ์‹œ์ ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก InnoDB๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด Redo ๋กœ๊ทธ์™€ ๋ฒ„ํผ ํ’€์˜ Dirty ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ๋กœ ๋™๊ธฐํ™”ํ•œ๋‹ค.
์ด๋ ‡๊ฒŒ ๋ฐœ์ƒํ•œ ์ฒดํฌํฌ์ธํŠธ ์ค‘์—์„œ ๊ฐ€์žฅ ์ตœ๊ทผ ์ฒดํฌํฌ์ธํŠธ ์ง€์ ์˜ LSN์ด ํ™œ์„ฑ ๋ฆฌ๋‘ ๋กœ๊ทธ ๊ณต๊ฐ„์˜ ์‹œ์ž‘์ ์ด ๋œ๋‹ค.
๐Ÿ’ก CheckPoint
- ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฒ„ํผ ํ’€ ๋‚ด์˜ ๋ณ€๊ฒฝ๋œ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ๋กœ ๋™๊ธฐํ™” ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.

Sharp CheckPoint
- ์ปค๋ฐ‹๋œ ํŠธ๋žœ์žญ์…˜์˜ ๋ชจ๋“  ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ์— ํ”Œ๋Ÿฌ์‹œํ•˜๊ณ , ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ปค๋ฐ‹๋œ ํŠธ๋žœ์žญ์…˜์˜ LSN์„ ๊ธฐ๋กํ•จ
- ์ •์ƒ ์ข…๋ฃŒ๋‚˜ ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ˆœํ™˜ํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•  ๋•Œ Sharp CheckPoint ํ™œ์šฉ

Fuzzy CheckPoint
- ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ์กฐ๊ธˆ์”ฉ ๋””์Šคํฌ๋กœ ํ”Œ๋Ÿฌ์‹œํ•˜๊ณ , ๊ทธ ์œ„์น˜๋ฅผ ์‹œ์ž‘ - ์ข…๋ฃŒ ์ง€์ ์˜ LSN์„ ๊ธฐ๋กํ•˜์—ฌ ๊ด€๋ฆฌ
- ๋งˆ์Šคํ„ฐ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด 1~10์ดˆ๋งˆ๋‹ค ์ฃผ๊ธฐ์ ์œผ๋กœ ํ”Œ๋Ÿฌ์‹œ ๋ฆฌ์ŠคํŠธ ํ™•์ธ 
- ํ”„๋ฆฌ ํŽ˜์ด์ง€์˜ ์—ฌ์œ  ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•  ๋•Œ LRU ๋ฆฌ์ŠคํŠธ์˜ ๋”ํ‹ฐ ํŽ˜์ด์ง€ ์ฒดํฌํฌ์ธํŠธ
- ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์ด ๋‹ค ์ฐผ์„ ๋•Œ ์ผ๋ถ€ ํŽ˜์ด์ง€ ๊ฐ•์ œ ํ”Œ๋Ÿฌ์‹œ ์‹œ ์‚ฌ์šฉ
- ๋”ํ‹ฐ ํŽ˜์ด์ง€๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์„ ๋•Œ ์ฒดํฌํฌ์ธํŠธ

 
๋˜ํ•œ, ๊ฐ€์žฅ ์ตœ๊ทผ ์ง€์ ์˜ LSN๊ณผ ๋งˆ์ง€๋ง‰ ๋ฆฌ๋‘ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ์˜ LSN ์ฐจ์ด๋ฅผ Checkpoint Age๋ผ๊ณ  ํ•˜๋ฉฐ, ํ•ด๋‹น ๊ฐ’์ด ํด์ˆ˜๋ก ์•„์ง ๋””์Šคํฌ์— ๋ฐ˜์˜๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์ ์ ˆํ•œ ์‹œ์ ์— ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

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

 
ex) ๋ฒ„ํผ ํ’€์ด 100๊ธฐ๊ฐ€, ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ „์ฒด ํฌ๊ธฐ๋Š” 100๋ฉ”๊ฐ€
- Checkpoint Age ์—ญ์‹œ ์ตœ๋Œ€ 100๋ฉ”๊ฐ€๊นŒ์ง€ ํ—ˆ์šฉ๋œ๋‹ค. ๋ฆฌ๋‘ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๊ฐ€ ํ‰๊ท ์ ์œผ๋กœ 4KB๋ผ๋ฉด 100MB / 4KB = 25600๊ฐœ ์ •๋„์˜ dirty ํŽ˜์ด์ง€๋งŒ ๋ฒ„ํผ ํ’€์— ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ 16KB๋ผ๋ฉด ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ „์ฒด ๋”ํ‹ฐ ํŽ˜์ด์ง€๋Š” 400MB ์ •๋„์ด๋‹ค.
= ๋ฒ„ํผ ํ’€์€ ๋งค์šฐ ํฌ์ง€๋งŒ, ์‹ค์ œ ์“ฐ๊ธฐ ๋ฒ„ํผ๋ง์„ ์œ„ํ•œ ํšจ๊ณผ๋Š” ๊ฑฐ์˜ ๋ชป ๋ณด๋Š” ์ƒํƒœ์ด๋‹ค.
 
ex) ๋ฒ„ํผ ํ’€์€ 100๋ฉ”๊ฐ€, ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์€ 100๊ธฐ๊ฐ€
- ์œ„์˜ ๊ฒฝ์šฐ์™€ ๋‹ค๋ฅด๊ฒŒ ์ „์ฒด ๋”ํ‹ฐ ํŽ˜์ด์ง€๋Š” ์ตœ๋Œ€ 400๊ธฐ๊ฐ€ ์ •๋„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฒ„ํผ ํ’€์˜ ํฌ๊ธฐ๊ฐ€ 100๋ฉ”๊ฐ€๋‹ˆ๊นŒ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋Š” 100๋ฉ”๊ฐ€ ์ •๋„์ด๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ๋ฒ„ํผ ํ’€์ด ํ•„์š”ํ•  ๋•Œ ๋„ˆ๋ฌด ๋งŽ์€ dirty ํŽ˜์ด์ง€๋ฅผ ํ•œ ๋ฒˆ์— ๊ธฐ๋กํ•ด์•ผ ๋  ์ˆ˜๋„ ์žˆ์–ด์„œ ์ข‹์ง€๋Š” ์•Š๋‹ค. 
= ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์€ ๋งค์šฐ ํฌ์ง€๋งŒ, ๋ฒ„ํผ ํ’€์ด ํ•„์š”ํ•  ๋•Œ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ๊ฐ‘์ž๊ธฐ ์—„์ฒญ ์จ์•ผ ํ•˜๋Š” ์ผ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์–ด์„œ ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค.
 
๋‘ ์˜ˆ์ œ ๋ชจ๋‘ ์ƒ๋‹นํžˆ ๊ทน๋‹จ์ ์ด๋‹ค.
๋งŒ์•ฝ ๋ฒ„ํผ ํ’€์˜ ํฌ๊ธฐ๊ฐ€ 100๊ธฐ๊ฐ€ ์ดํ•˜๋ผ๋ฉด ๋Œ€๋žต 5~10๊ธฐ๊ฐ€ ์ •๋„๋กœ๋งŒ ์„ ํƒํ•˜์ž.
 
 

๐Ÿ’ฌ Redo Log ๋™์ž‘ ์ˆœ์„œ

1. ๋ฒ„ํผ ํ’€์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ํ•ด๋‹น๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์ˆ˜์ •ํ•œ ๋‹ค์Œ Dirty ๋งˆํ‚น ์ง„ํ–‰
2. ๊ด€๋ จ๋œ ๋ฆฌ๋‘ ๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ๋ฅผ Double Write Buffer์— ์ €์žฅ
3. ๋ฆฌ๋‘ ๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ๋ฅผ Log Buffer๋กœ ์ด๋™ 
4. ๋ฆฌ๋‘ ๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ๋ฅผ Redo Log File๋กœ ํ”Œ๋Ÿฌ์‹œ
5. ๋ณ€๊ฒฝ๋œ Dirty ํŽ˜์ด์ง€์— ๋Œ€ํ•ด ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ System tablespace์— ์ €์žฅ

- ์ค‘์š”ํ•œ ์ ์€ ๋ฐ”๋กœ ๋””์Šคํฌ ์˜์—ญ์ธ System tablespace์— ์ €์žฅํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ Log Buffer์— ๋“ค์–ด๊ฐ€๊ณ , ํ•œ ๋ฒˆ์— ๋ชจ์•„์„œ Redo Log File๋กœ ํ”Œ๋Ÿฌ์‹œํ•œ๋‹ค๋Š” ๊ฒŒ ์ค‘์š”ํ•˜๋‹ค.
 
 

๐Ÿ’ฌ Redo Log ํŒŒ์ผ์˜ ์ „์ฒด ํฌ๊ธฐ

๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ „์ฒด ํฌ๊ธฐ๋Š” ๋ฒ„ํผ ํ’€์˜ ํšจ์œจ์„ฑ์„ ๊ฒฐ์ •ํ• ๋งŒํผ ์ค‘์š”ํ•˜๋‹ค.
innodb_log_file_size ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ, innodb_log_files_in_group์„ ํ†ตํ•ด ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด, ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‘ ๊ฐ’์„ ๊ณฑํ•œ ๊ฐ’์ด ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ „์ฒด ํฌ๊ธฐ๊ฐ€ ๋œ๋‹ค. ๋กœ๊ทธ ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋Š” ๊ธฐ๋ณธ๊ฐ’์ด 16MB์ด๋ฉฐ, ๋งŒ์•ฝ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์ฃผ ๋ณ€๊ฒฝํ•œ๋‹ค๋ฉด ๋” ํฌ๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
 
 

๐Ÿ’ฌ Redo Log ์•„์นด์ด๋น™

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

# ๋น„ํ™œ์„ฑํ™”
ALTER INSTANCE DISABLE INNODB REDO_LOG

# ํ™œ์„ฑํ™”
ALTER INSTANCE ENABLE INNODB REDO_LOG

๋ฌผ๋ก , ๋น„ํ™œ์„ฑ ํ›„ ๋ฐ์ดํ„ฐ ์ ์žฌ ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค๋ฉด ๊ผญ ๋‹ค์‹œ ํ™œ์„ฑํ™”๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. (๋น„์ •์ƒ ์ข…๋ฃŒ์— ๋Š˜ ๋Œ€๋น„ํ•˜๊ธฐ)
 


 
๋‚ด์šฉ์ด ๋งŽ์•„์„œ ์–ด์ง€๋Ÿฝ๋‹ค...
๋‚˜์ค‘์— ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ด์•ผ๊ฒ ๋‹ค ใ…Žใ…Ž;

Comments