๐ Databases
โ ์๋๋ InfluxDB v2.x ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํฉ๋๋ค. v2.x๋ถํฐ ์ฉ์ด ์ฟผ๋ฆฌ๋ค์ด ํฌ๊ฒ ๋ณ๊ฒฝ๋์๊ธฐ ๋๋ฌธ์ v1.x ๋ฒ์ ๊ณผ๋ ์ฉ์ด์ ์ผ๋ก ์ฐจ์ด๊ฐ ์์ ์ ์์ต๋๋ค.influxDB๋ฅผ ์์๋ณด๊ธฐ ์ ์๊ณ์ด ๋ฐ์ดํฐ๋?์๊ณ์ด์ ์ผ์ ๊ธฐ๊ฐ ๋์ ์์ง๋๊ณ ์๊ฐ์์ผ๋ก ์ ๋ ฌ๋ ๋ฐ์ดํฐ ์์์ ๋ชจ์์
๋๋ค. ์๊ณ์ด์ ์ฃผ์ ํน์ง์ ์ธ๋ฑ์ฑ๋๊ฑฐ๋ ์๊ฐ ์์๋๋ก ๋์ด๋๋ค๋ ๊ฒ์ธ๋ฐ ๊ทธ๋์ ๊ทธ๋ํ์ ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ์๊ฐํ ํ ๋ ์ค์ํ ์ถ์ ์๊ฐ์ด ๋ฉ๋๋ค.์๊ณ์ด ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณณ์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.๊ธฐ์ ์๋ณด์ฃผ์์ผ์ ๋ฐ์ดํฐ์ผ(์,์ฐ)๊ฐ ๊ตฌ๋
์์๋ฒ ์์ ๋ชจ๋ํฐ๋ง ๋ฑ๋ฑ์์ฆ ๋ค์ด ์ค๋งํธ ํฉํ ๋ฆฌ, ๋น
๋ฐ์ดํฐ, ์ฝ์ธ, ์ฃผ์ ๋ฑ์ด ํซํ๋ฐ ์ด๋ฐ ๋ฐ์ดํฐ๋ค์ ํน์ง์ ์๊ฐ์์ผ๋ก ์ธ๋ฑ์ฑ์ด ์ค์ํ๊ณ , ๋์ฉ๋ ๋ฐ์ดํฐ๋ผ๋ ์ ์
๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ๋ค์ ํธ..
๐ Databases/RealMySQL 8.0
์ธ๋ฑ์ฑ ์๊ณ ๋ฆฌ์ฆ ์ค ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ. B๋ Binary์ ์ฝ์๊ฐ ์๋, Balanced์ ์ฝ์์ด๋ค. 8.3.1 ๊ตฌ์กฐ ๋ฐ ํน์ฑ B-Tree์ ๊ตฌ์กฐ ์ ์ผ ์๋จ์ ์๋ ๋ฃจํธ ๋
ธ๋, ์ค๊ฐ์ ์๋ ๋ธ๋์น ๋
ธ๋, ๊ฐ์ฅ ๋ง์ง๋ง์ ์๋ ๋ฆฌํ ๋
ธ๋๊ฐ ์๋ค. ๋ฆฌํ ๋
ธ๋๋ ํญ์ ์ค์ ๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ์ฐพ์๊ฐ๊ธฐ ์ํ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋ค. ์ธ๋ฑ์ค๋ค์ ๋ชจ๋ ์ ๋ ฌ์ด ๋ ์ํ๋ก ์ ์ฅ์ด ๋์ด ์๋ค. ์ค์ ๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ ํ์ผ์ ๋ ์ฝ๋๋ ์ ๋ ฌ๋์ด์์ง ์๋ค. ์๋ฐํ ๋งํ๋ฉด, InnoDB์์๋ ๋ ์ฝ๋๊ฐ ํด๋ฌ์คํฐ๋์ด ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก PK ์์๋ก ์ ๋ ฌ๋์ด ์ ์ฅ๋๋ค. ๋ฐ์ดํฐ ๋ ์ฝ๋ ๊ตฌ์กฐ (InnoDB) ๋ฆฌํ ๋
ธ๋์ ๋ฐ์ดํฐ ํ์ผ์ ๊ตฌ์กฐ๋ฅผ ์์ธํ๊ฒ ์ดํด๋ณด์. ๋ฐ์ดํฐ ํ์ผ์๋ ๊ฒฐ๊ตญ PK๋ฅผ ์ ์ฅํ๊ณ ์๋ B-Tree..
๐ Databases/RealMySQL 8.0
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
ํธ๋์ญ์
์ ๊ฒฉ๋ฆฌ ์์ค(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 ์คํ ๋ฆฌ์ง ์์ง ์ ๊ธ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ MySQL๊ณผ ๋ณ๊ฐ๋ก ์ ๊ธ์ ์ ๊ณตํ๋ค. ๐ก ์คํ ๋ฆฌ์ง ์์ง ๋ด๋ถ์์ ๋ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ๊ธ ๋ฐฉ์์ ํ์ฌํ๊ณ ์๋ค. 5.3.1 InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ ๊ธ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๋ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ๊ธ ์ ์ ๊ณตํ๋ฉฐ, ์ ๊ธ ์ ๋ณด๊ฐ ์๋นํ ์์ ๊ณต๊ฐ์ผ๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ *๋ฝ ์์ค์ปฌ๋ ์ด์
(๋ ์ฝ๋ ๋ฝ์ด ํ์ด์ง ๋ฝ์ผ๋ก, ๋๋ ํ
์ด๋ธ ๋ฝ์ผ๋ก ๋ ๋ฒจ์
๋๋ ๊ฒฝ์ฐ)๋๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋ํ InnoDB์์๋ ํน์ง์ธ ๋ ์ฝ๋์ ๋ ์ฝ๋ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ ๊ทธ๋ ๊ฐญ(GAP) ๋ฝ์ด๋ผ๋ ๊ฒ์ด ์กด์ฌํ๋ค. ์ ์ ์ผ๋ก ํ์๋ ๊ฒ์ ์กด์ฌํ์ง ์๋ ๋ ์ฝ๋๋ฅผ ๋ปํ๋ค. 5.3.1.1 ๋ ์ฝ๋ ๋ฝ ๋ ์ฝ๋ ์์ฒด๋ง์ ์ ๊ทธ๋ ๊ฒ์ *๋ ์ฝ๋ ๋ฝ์ด๋ผ๊ณ ํ๋ค. ๋ ์ฝ๋ ? ๋ ์ฝ๋๋ ํ
์ด๋ธ์ ํ ๋ฐ์ดํฐ์..
๐ Databases/RealMySQL 8.0
์ ๊ธ์ ๋ ๋ฒจ 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..