๐Ÿ“š Databases

๐Ÿ“š Databases

์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” InfluxDB์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž

โš™ ์•„๋ž˜๋Š” InfluxDB v2.x ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. v2.x๋ถ€ํ„ฐ ์šฉ์–ด ์ฟผ๋ฆฌ๋“ค์ด ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— v1.x ๋ฒ„์ „๊ณผ๋Š” ์šฉ์–ด์ ์œผ๋กœ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.influxDB๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ž€?์‹œ๊ณ„์—ด์€ ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ์ˆ˜์ง‘๋˜๊ณ  ์‹œ๊ฐ„์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ์š”์†Œ์˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ์‹œ๊ณ„์—ด์˜ ์ฃผ์š” ํŠน์ง•์€ ์ธ๋ฑ์‹ฑ๋˜๊ฑฐ๋‚˜ ์‹œ๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ด๋œ๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ ๊ทธ๋ž˜์„œ ๊ทธ๋ž˜ํ”„์— ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™” ํ•  ๋•Œ ์ค‘์š”ํ•œ ์ถ•์€ ์‹œ๊ฐ„์ด ๋ฉ๋‹ˆ๋‹ค.์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณณ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๊ธฐ์ƒ ์˜ˆ๋ณด์ฃผ์‹์„ผ์„œ ๋ฐ์ดํ„ฐ์ผ(์›”,์—ฐ)๊ฐ„ ๊ตฌ๋…์ž์„œ๋ฒ„ ์ž์› ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ๋“ฑ์š”์ฆ˜ ๋“ค์–ด ์Šค๋งˆํŠธ ํŒฉํ† ๋ฆฌ, ๋น…๋ฐ์ดํ„ฐ, ์ฝ”์ธ, ์ฃผ์‹ ๋“ฑ์ด ํ•ซํ•œ๋ฐ ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ๋“ค์˜ ํŠน์ง•์€ ์‹œ๊ฐ„์ˆœ์œผ๋กœ ์ธ๋ฑ์‹ฑ์ด ์ค‘์š”ํ•˜๊ณ , ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ํ•ธ..

๐Ÿ“š Databases/RealMySQL 8.0

8.3 B-Tree ์ธ๋ฑ์Šค

์ธ๋ฑ์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜. B๋Š” Binary์˜ ์•ฝ์ž๊ฐ€ ์•„๋‹Œ, Balanced์˜ ์•ฝ์ž์ด๋‹ค. 8.3.1 ๊ตฌ์กฐ ๋ฐ ํŠน์„ฑ B-Tree์˜ ๊ตฌ์กฐ ์ œ์ผ ์ƒ๋‹จ์— ์žˆ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ, ์ค‘๊ฐ„์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค. ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ํ•ญ์ƒ ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๊ฐ€๊ธฐ ์œ„ํ•œ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ธ๋ฑ์Šค๋“ค์€ ๋ชจ๋‘ ์ •๋ ฌ์ด ๋œ ์ƒํƒœ๋กœ ์ €์žฅ์ด ๋˜์–ด ์žˆ๋‹ค. ์‹ค์ œ ๋””์Šคํฌ์˜ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ๋ ˆ์ฝ”๋“œ๋Š” ์ •๋ ฌ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค. ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด, InnoDB์—์„œ๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ๋˜์–ด ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์œผ๋กœ PK ์ˆœ์„œ๋กœ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋œ๋‹ค. ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ ๊ตฌ์กฐ (InnoDB) ๋ฆฌํ”„ ๋…ธ๋“œ์™€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ๊ตฌ์กฐ๋ฅผ ์ž์„ธํ•˜๊ฒŒ ์‚ดํŽด๋ณด์ž. ๋ฐ์ดํ„ฐ ํŒŒ์ผ์—๋Š” ๊ฒฐ๊ตญ PK๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” B-Tree..

๐Ÿ“š Databases/RealMySQL 8.0

8.1 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค๋ž€?

8.1 ๋””์Šคํฌ ์ฝ๊ธฐ ๋ฐฉ์‹ HDD vs SSD ์ˆœ์ฐจ I/O ๋ฐฉ์‹์€ ์‚ฌ์‹ค SSD๊ฐ€ HDD๋ณด๋‹ค ์กฐ๊ธˆ ๋น ๋ฅด๊ฑฐ๋‚˜ ๊ฑฐ์˜ ๋น„์Šทํ•œ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค. ํ•˜์ง€๋งŒ, ๋žœ๋ค I/O์—์„œ๋Š” ๋Œ€๋žต 5000๋ฐฐ ์ •๋„ ๋น ๋ฅด๋‹ค. ๋žœ๋ค I/O, ์ˆœ์ฐจ I/O๋ž€? ์ˆœ์ฐจ I/O๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์„œ 1 ๋ฒˆ ์‹œ์Šคํ…œ์—๊ฒŒ ์š”์ฒญ์„ ํ•œ๋‹ค. ์ฆ‰, ๋””์Šคํฌ ํ—ค๋”๋ฅผ 1 ๋ฒˆ ์›€์ง์˜€๋‹ค. ๋žœ๋ค I/O๋Š” ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ์‹œ์Šคํ…œ์—๊ฒŒ ์š”์ฒญ์„ ํ•œ๋‹ค. ์ฆ‰, ๋””์Šคํฌ ํ—ค๋”๋ฅผ n ๋ฒˆ ์›€์ง์˜€๋‹ค. ๊ฒฐ๊ตญ, ์ˆœ์ฐจ I/O๋Š” ๋žœ๋ค I/O๋ณด๋‹ค ๊ฑฐ์˜ 3๋ฐฐ์ •๋„ ๋น ๋ฅด๋‹ค. ๐Ÿ’ก ๋””์Šคํฌ์˜ ์„ฑ๋Šฅ์€ ๋””์Šคํฌ ํ—ค๋”์˜ ์œ„์น˜ ์ด๋™ ์—†์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๊ธฐ๋กํ•˜๋Š๋ƒ์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ, ์ฟผ๋ฆฌ๋ฅผ ํŠœ๋‹ํ•˜๋Š” ๊ฒƒ์€ ๋žœ๋ค I/O๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•จ์ด๋‹ค. 8..

๐Ÿ“š Databases/RealMySQL 8.0

5.4 MySQL์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€

ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(isolation level)์ด๋ž€ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ฒ˜๋ฆฌ๋  ๋•Œ ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ—ˆ์šฉํ• ์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํฌ๊ฒŒ 4๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค. READ UNCOMMITED (=DIRTY READ) ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. READ COMMITED Oracle ๊ฐ™์€ DBMS์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ REPEATABLE READ MySQL์—์„œ ์‚ฌ์šฉ SERIALIZABLE ๋™์‹œ์„ฑ์ด ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐˆ ์ˆ˜๋ก ํŠธ๋žœ์žญ์…˜ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ฒฉ๋ฆฌ(๊ณ ๋ฆฝ) ์ •๋„๊ฐ€ ๋†’์•„์ง€๋ฉฐ, ๋™์‹œ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์€ ๋‚ฎ์•„์ง„๋‹ค. ํ•˜์ง€๋งŒ, SERIALIZABLE์ด ์•„๋‹Œ ๋‚˜๋จธ์ง€ 3๊ฐœ๋Š” ํฌ๊ฒŒ ์„ฑ๋Šฅ์˜ ๊ฐœ์„ ์ด๋‚˜ ์ €ํ•˜๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. 5.4.1 READ ..

๐Ÿ“š Databases/RealMySQL 8.0

5.3 InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์ž ๊ธˆ

5.3 InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์ž ๊ธˆ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ MySQL๊ณผ ๋ณ„๊ฐœ๋กœ ์ž ๊ธˆ์„ ์ œ๊ณตํ•œ๋‹ค. ๐Ÿ’ก ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๋‚ด๋ถ€์—์„œ ๋ ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ์ž ๊ธˆ ๋ฐฉ์‹์„ ํƒ‘์žฌํ•˜๊ณ  ์žˆ๋‹ค. 5.3.1 InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ์ž ๊ธˆ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ์ž ๊ธˆ ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ž ๊ธˆ ์ •๋ณด๊ฐ€ ์ƒ๋‹นํžˆ ์ž‘์€ ๊ณต๊ฐ„์œผ๋กœ ๊ด€๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— *๋ฝ ์—์Šค์ปฌ๋ ˆ์ด์…˜(๋ ˆ์ฝ”๋“œ ๋ฝ์ด ํŽ˜์ด์ง€ ๋ฝ์œผ๋กœ, ๋˜๋Š” ํ…Œ์ด๋ธ” ๋ฝ์œผ๋กœ ๋ ˆ๋ฒจ์—…๋˜๋Š” ๊ฒฝ์šฐ)๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค. ๋˜ํ•œ InnoDB์—์„œ๋Š” ํŠน์ง•์ธ ๋ ˆ์ฝ”๋“œ์™€ ๋ ˆ์ฝ”๋“œ ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์„ ์ž ๊ทธ๋Š” ๊ฐญ(GAP) ๋ฝ์ด๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•œ๋‹ค. ์ ์„ ์œผ๋กœ ํ‘œ์‹œ๋œ ๊ฒƒ์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋œปํ•œ๋‹ค. 5.3.1.1 ๋ ˆ์ฝ”๋“œ ๋ฝ ๋ ˆ์ฝ”๋“œ ์ž์ฒด๋งŒ์„ ์ž ๊ทธ๋Š” ๊ฒƒ์„ *๋ ˆ์ฝ”๋“œ ๋ฝ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ ˆ์ฝ”๋“œ ? ๋ ˆ์ฝ”๋“œ๋ž€ ํ…Œ์ด๋ธ”์˜ ํ•œ ๋ฐ์ดํ„ฐ์˜..

๐Ÿ“š Databases/RealMySQL 8.0

5.2 MySQL ์—”์ง„์˜ ์ž ๊ธˆ

์ž ๊ธˆ์˜ ๋ ˆ๋ฒจ MySQL ๋ ˆ๋ฒจ์˜ ์ž ๊ธˆ ๋ชจ๋“  ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์— ์˜ํ–ฅ์„ ๋ฏธ์นจ ํ…Œ์ด๋ธ” ๋ฝ ์™ธ์—๋„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฝ(ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ์ž ๊ธˆ), ๋„ค์ž„๋“œ ๋ฝ ๋“ฑ ๊ธฐ๋Šฅ ์ œ๊ณต ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๋ ˆ๋ฒจ์˜ ์ž ๊ธˆ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๊ฐ„ ์ƒํ˜ธ ์˜ํ–ฅ ์—†์Œ 5.2.1 Global Lock(๊ธ€๋กœ๋ฒŒ ๋ฝ) DML(Data Manipulation Language, ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)๋ž€? ์ •์˜๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ž…๋ ฅ๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ์—ญํ• ์„ ํ•˜๋Š” ์–ธ์–ด SELECT INSERT UPDATE DELETE DDL(Data Definition Language, ๋ฐ์ดํ„ฐ ์ •์˜์–ด)๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ์–ธ์–ด (๋ฐ์ดํ„ฐ ์ „์ฒด์˜ ๊ณจ๊ฒฉ์„ ๊ฒฐ์ •) CREATE ALTER DROP TRUNCATE FLUSH TABLES WITH READ LOCK ๋ช…๋ น์œผ๋กœ ํš๋“ MyS..

iseunghan
'๐Ÿ“š Databases' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก