MySQL 6

MySQL ์ธ๋ฑ์Šค ๋™์ž‘ ์›๋ฆฌ์™€ ์กฐ์ธ ์ตœ์ ํ™”

๋ชฉ์ฐจ์ธ๋ฑ์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€ — ํ’€ ์Šค์บ”์˜ ๊ณ ํ†ตํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค vs ๋ณด์กฐ ์ธ๋ฑ์Šค (InnoDB์˜ ํ•ต์‹ฌ ๊ตฌ์กฐ)์กฐ์ธ์„ ๋งŒ๋‚˜๋ฉด DB๋Š” ์–ด๋–ป๊ฒŒ ์›€์ง์ด๋Š”๊ฐ€์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ๋ฌด์—‡์„ ๋ณด๊ณ  ํŒ๋‹จํ•˜๋Š”๊ฐ€์กฐ์ธ ๋ง๊ณ ๋„ — ์ธ๋ฑ์Šค๊ฐ€ ํ™œ์•ฝํ•˜๋Š” ์ˆœ๊ฐ„๋“ค์ธ๋ฑ์Šค๋ฅผ ๊ฑธ์–ด๋„ ์•ˆ ํƒ€๋Š” ๊ฒฝ์šฐ๋“ค (์•ˆํ‹ฐํŒจํ„ด)์ •๋ฆฌ — ์ธ๋ฑ์Šค ์„ค๊ณ„ ์›์น™1. ์ธ๋ฑ์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€ — ํ’€ ์Šค์บ”์˜ ๊ณ ํ†ต์ธ๋ฑ์Šค๊ฐ€ ์—†์œผ๋ฉด ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€๋Š”๊ฐ€๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํšŒ์› 100๋งŒ ๋ช…์ด ๋“ค์–ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ด๋ฉ”์ผ์ด kim@example.com์ธ ์‚ฌ๋žŒ ํ•œ ๋ช…์„ ์ฐพ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.SELECT * FROM users WHERE email = 'kim@example.com';์ธ๋ฑ์Šค๊ฐ€ ์—†๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ด ํ•œ ๋ช…์„ ์ฐพ๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”์˜ ์ฒซ ํ–‰๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ–‰๊นŒ์ง€ ์ „๋ถ€ ๋‹ค ์ฝ์–ด ๋ด…..

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€ํ‘œ ์ •๋ฆฌ (1) - MySQL

ํ•ต์‹ฌ ์š”์•ฝ์ตœ๊ทผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ผ์ผ ์ ๊ฒ€์„ ์ž๋™ํ™”ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋งก๊ฒŒ ๋˜๋ฉด์„œ, DBA๊ฐ€ ๋งค์ผ ๋“ค์—ฌ๋‹ค๋ณด๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€ํ‘œ๋“ค์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ •๋ฆฌํ•  ์ผ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋ง‰์ƒ ์ง€ํ‘œ ๋ชฉ๋ก์„ ๋ฐ›์•„๋ณด๋‹ˆ ์ด๋ฆ„๋งŒ ๋ด์„œ๋Š” ๋ฌด์—‡์„ ๋œปํ•˜๋Š”์ง€, ์–ด๋–ค ๊ฐ’์ด ์ •์ƒ์ด๊ณ  ์–ด๋–ค ๊ฐ’์ด ์œ„ํ—˜ํ•œ์ง€ ๊ฐ์ด ์žกํžˆ์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ MySQL๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ •๋ฆฌํ•ด ๋‘๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.์ด ๊ธ€์—์„œ๋Š” MySQL(๋ฐ Aurora MySQL)์—์„œ ์ž์ฃผ ๋ณด๋Š” ์ง€ํ‘œ๋“ค์„ โ‘  ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ โ‘ก ํ‰์†Œ ์–ด๋А ์ •๋„ ๊ฐ’์ด ์ •์ƒ์ธ์ง€(์‹ค์ œ ๊ด€์ธก ๋ฒ”์œ„·ํ‰๊ท ) โ‘ข ๊ฐ’์ด ํŠ€๋ฉด ๋ฌด์—‡์„ ์˜์‹ฌํ•ด์•ผ ํ•˜๋Š”์ง€ โ‘ฃ ํ•จ๊ป˜ ๋ณด๋ฉด ์ข‹์€ ์ง€ํ‘œ โ‘ค ์ง์ ‘ ํ™•์ธํ•˜๋Š” ์ฟผ๋ฆฌ๋กœ ๋ฌถ์–ด ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋…๋งˆ๋‹ค ์ดํ•ด๋ฅผ ๋•๋Š” ๋น„์œ ์™€, ์‹ค์ œ๋กœ ๊ทธ ์ง€ํ‘œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์žฅ์• ๋กœ ์ด์–ด์ง€๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋„ ํ•จ๊ป˜ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜..

์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„์™€ ๋ทฐ(View) — MySQL ์ธ๋ฑ์Šค ์ตœ์ ํ™”์—์„œ TimescaleDB ์—ฐ์† ์ง‘๊ณ„๊นŒ์ง€

ํ•ต์‹ฌ ์š”์•ฝ์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„๋ฅผ MySQL์˜ ๋ทฐ(View) ๋กœ ๋งŒ๋“ค์–ด ์“ฐ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋А ๋‚  "์ด ๋ทฐ๊ฐ€ ์šด์˜ ์ค‘์— DB์— ๋ถ€ํ•˜๋ฅผ ์ฃผ์ง€ ์•Š์„๊นŒ?"๋ผ๋Š” ์˜์‹ฌ์ด ๋“ค์–ด ์‹คํ–‰๊ณ„ํš์„ ๋–  ๋ดค๋”๋‹ˆ, 4๋งŒ ๊ฑด์งœ๋ฆฌ ํ…Œ์ด๋ธ”์„ ๋งค๋ฒˆ ์ „๋ถ€ ํ›‘๋Š” ํ’€์Šค์บ”์ด ์ผ์–ด๋‚˜ ํ•œ ๋ฒˆ ์กฐํšŒ์— 9.5์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ์–ด 0.02์ดˆ๋กœ ์•ฝ 475๋ฐฐ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“  ๊ณผ์ •์„, ์ด๋ฒˆ์—๋Š” ๊ฒฐ๊ณผ๋งŒ์ด ์•„๋‹ˆ๋ผ ์™œ ๊ทธ๋žฌ๋Š”์ง€ — ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ๋ฌด์Šจ ํŒ๋‹จ์„ ํ–ˆ๊ณ , ์ธ๋ฑ์Šค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ(B+Tree)๋กœ ์–ด๋–ป๊ฒŒ ํƒ์ƒ‰ํ•˜๋ฉฐ, ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋Š” ์™œ ์ฒซ ์‹œ๋„์— ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ๊นŒ์ง€ ํŒŒ๊ณ ๋“ค์–ด ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฒฝํ—˜์ด ๋‚จ๊ธด ๋” ํฐ ์งˆ๋ฌธ — "์กฐํšŒํ•  ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ๊ณ„์‚ฐํ•˜๋Š” ์ผ๋ฐ˜ ๋ทฐ๊ฐ€ ์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„์— ๋งž๋Š” ๊ตฌ์กฐ์ธ๊ฐ€" — ์— ๋Œ€ํ•œ ๋‹ต์œผ๋กœ, ์ž์œจ์ฃผํ–‰ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์—์„œ..

DBA์™€ ์†Œํ†ตํ•˜๊ธฐ ์œ„ํ•œ DB ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€ํ‘œ ๊ธฐ์ดˆ

ํ•ต์‹ฌ ์š”์•ฝDB ์ผ์ผ ์ ๊ฒ€ ์ž๋™ํ™” POC๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋จผ์ € ๋ง‰ํžŒ ๋ถ€๋ถ„์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•„๋‹ˆ๋ผ ์ง€ํ‘œ ๊ทธ ์ž์ฒด์˜€์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ผ DBA๊ฐ€ ๋งค์ผ ๋ณด๋Š” ์ง€ํ‘œ(Active Session, Row Lock Waits, Redo, Vacuum ๊ฐ™์€ ๊ฒƒ๋“ค)๊ฐ€ ๋ฌด์—‡์„ ๋œปํ•˜๋Š”์ง€, ์–ด๋–ค ๊ฐ’์ด ์ •์ƒ์ด๊ณ  ์–ด๋–ค ๊ฐ’์ด ์œ„ํ—˜์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฐ’์ด ์ด์ƒํ•˜๋ฉด ๋ฌด์—‡์„ ๋“ค์—ฌ๋‹ค๋ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ์ž๋™ ์ ๊ฒ€ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๋ ค๋ฉด ๊ฒฐ๊ตญ ์ด ์ง€ํ‘œ๋“ค์„ ์ œ๊ฐ€ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.์ด ๊ธ€์€ ๊ทธ ๊ณผ์ •์—์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. DB ๋ชจ๋‹ˆํ„ฐ๋ง์—์„œ ์ž์ฃผ ๋ณด๋Š” ์ง€ํ‘œ๋ฅผ 9๊ฐœ ๋ฌถ์Œ(CPU·์„ธ์…˜·์—ฐ๊ฒฐ·๋ฝ·์žฅ๊ธฐ์ฟผ๋ฆฌ·์“ฐ๊ธฐ·IO·๋ฉ”๋ชจ๋ฆฌ·์Šคํ† ๋ฆฌ์ง€)์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๊ฐ ์ง€ํ‘œ๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€, ์ผ์ƒ์ ์ธ ๋น„์œ ๋กœ ์–ด๋–ป๊ฒŒ ์ดํ•ดํ•˜๋ฉด ๋˜๋Š”์ง€, Oracle·MySQL·..

[AWS] ์™ธ๋ถ€์—์„œ RDS์— ์ ‘๊ทผํ•˜๊ธฐ (EC2 Bastion Host/ SSH ํ„ฐ๋„๋ง/ DBeaver)

์™ธ๋ถ€์—์„œ private subnet์ธ RDS์— ์ ‘๊ทผ ํ•˜๋ ค๋ฉด?๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฐ๊ฒฐ์ด ์•ˆ๋œ๋‹ค. ๋‹น์—ฐํ•˜๋‹ค. ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท์— ์กด์žฌํ•˜๋Š” EC2์™€๋Š” ๋‹ฌ๋ฆฌ RDS๋Š” ๊ธฐ๋ณธ์œผ๋กœ Private Subnet์— ์žˆ์œผ๋‹ˆ๊นŒ ์™ธ๋ถ€์—์„œ ์ ‘์†์ด ์•ˆ ๋˜๋Š” ๊ฒŒ ์ •์ƒ์ด๋‹ค. ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋‹ˆ ๊ฐ€์žฅ ์•ˆ์ •์ ์ธ ๋ฐฉ๋ฒ•์ด EC2๋ฅผ Bastion Host๋กœ ์‚ฌ์šฉํ•˜์—ฌ SSH ํ„ฐ๋„๋ง์œผ๋กœ RDS์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค. Bastion Host๋ž€ ๊ตฐ์‚ฌ ์šฉ์–ด์ธ Bastion(์š”์ƒˆ์˜ ๋Œ์ถœ๋ถ€)์—์„œ ์œ ๋ž˜๋œ ๊ฐœ๋…์œผ๋กœ, ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ ์ค‘๊ฐ„ ์„œ๋ฒ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์šฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋กœ์ปฌ(์™ธ๋ถ€) → EC2 → RDS ์ˆœ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆผ์œผ๋กœ ํ™•์ธํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 1. EC2 ๋ณด์•ˆ ๊ทธ๋ฃน ์„ค์ •์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ์„ค์ • ๋‹น์—ฐํžˆ ๋กœ์ปฌ์—์„œ EC2๋กœ ๋จผ์ € ์ ‘์†..

Mysql View ์— ์ธ๋ฑ์Šค ์ถ”๊ฐ€ํ•˜์—ฌ ์„ฑ๋Šฅ ๊ฐœ์„  ํ›„๊ธฐ (select ์ฟผ๋ฆฌ 9.5์ดˆ → 0.02์ดˆ)

์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„ ์ž‘์—…์„ ์œ„ํ•ด Mysql์˜ View๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ Mysql View์˜ ์šด์˜์ƒ ์„ฑ๋Šฅ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š์„๊นŒ? DB์— ๋ถ€ํ•˜๋Š” ์—†์„๊นŒ? ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ๊ธฐ์กด View์˜ ์„ฑ๋Šฅ์„ ํ™•์ธํ•ด๋ณด๊ณ  ์ธ๋ฑ์Šค๋ฅผ ๋„์ž…ํ•œ ํ›„ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•ด๋ณด์•˜๋‹ค. 1. ๊ธฐ์กด Viewmysql ์—์„œ ์ตœ๊ทผ 1๋ถ„๊ฐ„์˜ ์ด๋™ ์‹œ๊ฐ„์˜ ํ•ฉ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ตฌํ•ด์ฃผ๋Š” ๋ทฐ vw_vehicle_moving_time_last_1min ์ƒ์„ฑCREATE OR REPLACE VIEW auto_drive_jeju.vw_vehicle_moving_time_last_1min ASSELECT vo.vehicle_id, voh.vehicle_operation_idx, ROUND(SUM(TIMESTAMPDIFF(S..