1. MySQL์ ๋ฌด์์ธ๊ฐ
by JiwonDevReal MySQL 8.0
RDBMS๊ฐ ๋ฌด์์ธ์ง ์ ํํ๊ฒ ๋ชจ๋ฅธ๋ค๋ฉด ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๐ ์ก๋ด
๋ง์ ์ด๋ค์ด MySQL์ ์ธ๊ธฐ ๋ง์ ์คํ์์ค RDBMS ์๋ค๊ฐ ์ค๋ผํด์ ์ธ์๋ ๊ฑธ๋ก ์๊ณ ์๋ค.
์ฌ์ค MySQL์ ์ค์จ๋ด์ TcXํ์ฌ์ ํฐ๋ฏธ๋ ์ธํฐํ์ด์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ์์ ์์๋์๋ค. ์ด๋ 1994๋ ์ ์ฌ๋ด ์น ์์คํ ์ ๋ฐ์ด๋ฒ๋ฒ ์ด์ค๋ก ์ฌ์ฉ๋๊ธฐ ์์ํ์๊ณ 1996๋ ์ธ๋ถ ์ผ๋ฐ์ธ๋ ์ฌ์ฉํ ์ ์๊ฒ ๊ณต๊ฐ๋์๋ค.
๊ทธ๋ฆฌ๊ณ 2000๋ TcX์์ ์น ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ๋ฐํ ํต์ฌ์ธ๋ฌผ (Michael Widenius, David Axmark)์ด MySQL AB๋ผ๋ ํ์ฌ๋ก ๋ ๋ฆฝํ๋ฉฐ FPL (Free Public License)๋ก ์ ์ฑ ์ด ๋ฐ๋๊ณ ์ ์๊ณ ์๋ฏ์ด ์ด ํ์ฌ๋ ์๋ฐ๋ฅผ ๋ง๋ ์ฌ๋ง์ดํฌ๋ก์์คํ ์ฆ์ ์ธ์๋์๋ค. ๊ทธ๋ฆฌ๊ณ 2009๋ ์ ์ค๋ผํด๋ก ๋ค์ ์ธ์๋ ๊ฒ์ด๋ค.
@ 2010๋ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ์ถ์ ๊ตญ์๋
์ด์๊ธฐ์๋ ๋ค์ํ DBMS๋ค์ด ์ฐํ์ฃฝ์์ผ๋ก ํ์ํ๋ ์๊ธฐ์๋ค.
์ค์ ๋ก ์ ํต์ ์ธ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, RDBMS์ ์๋๋ ์ ๋ฌธ๋ค๋ ์ด์ผ๊ธฐ๊ฐ ๋์๊ณ , NoSQL๊ณผ ๊ฐ์ ๋จ์ํ ๋ก๊ทธ ์ฑ๊ฒฉ์ ๋น ๋ฐ์ดํฐ์ ์ ์ฅ์ด ํ์ํด์ง๋ฉฐ Cassandra๋ HBase, ๋์ค์ ๋์จ MongoDB๋ฑ์ด ๋ง์ ๊ด์ฌ์ ๋ฐ์์๋ค.
ํ์ง๋ง 10๋ ์ด ์ง๋ ์ง๊ธ, 2021๋ ์๋ ๊ทธ ๋๊ตฌ๋ ๊ทธ๋ ์ถ์๋๋ NoSQL DBMS๋ฅผ ์ธ๊ธํ์ง ์๋ ๋ฏ ํ๋ค.
* ์บ์ ์๋ฒ๋ก ๋ง์ด ์ฌ์ฉ๋๋ Redis์ Memcached๋ ์๋น์ค DBMS๋ผ๊ณ ๋ณด๊ธฐ์๋ ๋ฒ์ฃผ๊ฐ ์ฝ๊ฐ ๋ค๋ฅด๋ค.
๊ทธ๋๋ง HBase์ MongoDB์ ๋๊ฐ ์๊ธฐ๋ง์ ์์ญ์์ ์ฌ์ฉ๋๊ณ ์์ผ๋ฉฐ, ์คํ๋ ค MySQL์ด ์๋ง์ NoSQL DBMS์ ์ญํ ์ ๋์ฒดํ๋ฉฐ ์ฌ์ฉ๋๊ณ ์๋ค. ๋ฌผ๋ก MySQL์ด ์ค๋ผํด์ ์ธ์๋๋ฉฐ ์คํ์์ค๋ก ์ ์ง๋๊ธฐ ์ด๋ ค์ธ ๊ฒ์ด๋ผ๋ ์์ธก์ด ๋ง์์ง๋ง, ๊ทธ๋งํผ ์์ ์ฑ๊ณผ ๋ง์ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๋๋ฉฐ 26๋ ๊ฐ์ ์ญ์ฌ๋ฅผ ํตํ์ด ํญ์ `์ค๋`์ด ๊ฐ์ฅ ๋ฐ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ณตํด์ฃผ๊ณ ์๋ค.
Q. ์ด๋ค DBMS๊ฐ ๊ฐ์ฅ ์ข๋์?
A. ๋ณธ์ธ์ด ๊ฐ์ฅ ์ ์ฌ์ฉํ ์ ์๋ ๊ฑธ ์ฐ๋ฉด ๋ฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ฑ, ์๋น์ค์ ๋ฐ๋ฅธ ์ฑ๋ฅ, ์ปค๋ฎค๋ํฐ ๋ฐ ์ธ์ง๋ ์ ๋๋ฅผ ๊ณ ๋ คํ๊ณ ์๋ฏธ์๋ ์ฐจ์ด๊ฐ ์๋ค๋ฉด ๋ณธ์ธ์ด ๊ฐ์ฅ ์ํ๋ ๊ฑธ ์ฐ์ธ์. ๊ทธ๊ฒ ์ ๋ต์ ๋๋ค.
MariaDB? SQLite? PostgreSQL? ๋ญ๊ฐ ์ด๋ ๊ฒ ๋ง์์??
โจ ์์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ๋ฅ
์ ์ธ๊ณ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋์ ๊ฐ๋ค.
Orcale๊ณผ Microsoft ๋ ์ ๋ฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค์ด๊ณ MySQL๊ณผ PostgreSQL์ ์คํ์์ค ๋ฌด๋ฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
๋ณดํต MySQL๊ณผ PostgreSQL์ ์ธ๊ธฐ๊ฐ ๋ง์ผ๋ฉฐ ํ์ฌ๋ ๊ด๊ณต์์ฒ๋ผ ์ฌํ์ง์์ด ํ์ํ ์์ฉ์๋น์ค๋ ๋น์ผ ์๊ธ์ ์ง๋ถํ๊ณ Oracle, Microsoft๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์๋ MySQL์ ์ฌ์ฉ๋ฅ ์ด ์๋์ ์ด์์ผ๋ 2009๋ ์ค๋ผํด์ด Sun์ฌ๋ฅผ ์ธ์ํ๋ฉด์ MySQL์ ์์ ๊ถ ์ด์, ์ ๋ฃํ๋ฑ์ ๋ฌธ์ ๋๋ฌธ์ PostgreSQL์ ์ฌ์ฉ๋ฅ ์ด ๊พธ์คํ ์ฆ๊ฐํ๊ฒ ๋์๋ค. ๊ทธ ์ด์ ๋ง๊ณ ๋ PostgreSQL์ SQL ํ์ค์ ๋ ์ ์งํค๊ณ ์๊ธฐ๋ ํ๊ณ , ๋ค์ํ ์กฐ์ธ์ ์ง์ํด ์ฟผ๋ฆฌ๊ฐ ๋ณต์กํด์ง๊ณ insert ์์ฃผ์ ์๋น์ค์ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ์๋์ค๋ ํธ์ด๋, ๊ธฐ๋ณธ์ ์ธ CRUD ์ฑ๋ฅ์ ๊ฒฝ์์ฌ์ ๋นํด ๋จ์ด์ ธ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ ๋ ์ฅ๋จ์ ์ด ์๋ค๊ณ ์ดํดํ๋ฉด ๋๋ค.
โจMariaDB์ ๋ฑ์ฅ
MariaDB๋ ๊ณต์์ ์ผ๋ก MySQL์ GNU ๋ผ์ด์ ์ค์ ๋ฐ๋ผ Forkํ์ฌ ๋ง๋ ์คํ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
2009๋ MySQL์ ์ค๋ผํด ์ธ์๋ฌธ์ ๋ก, ๋ง์ ๊ณณ์์ PostgreSQL์ด๋ MongoDB๊ฐ์ ๋์์ ์๊ฐํ๊ณ ์์๋ค. ํ์ง๋ง ๊ธฐ์กด์ ์ฌ์ฉํ๋ MySQL์ ๋ ์ค ํ๋๋ก ๊ต์ฒดํ๋๊ฑด ์ฝ์ง ์๊ฑฐ๋, ๋ฏธ๋๋ฅผ ์๊ฐํ์ ๋ ์ข์ ์ ํ์ด ์๋์๋ค.
์ด๋ฅผ ์ ์๊ณ ์๋ MySQL ๊ฐ๋ฐ์๋ MySQL์ ์ค๋ผํด ๋ผ์ด์ ์ค ๋ฌธ์ ์ ๋ถ๋ฆฌ์ํค๊ธฐ ์ํด์ ํฌํฌ๋ฅผ ๋ฐ ๋ค์ ๋ง๋ค๊ธฐ ์์ํ๋ค. ๊ทธ๋ ๊ฒ 2012๋ , ์ฌ๋จ ์ค๋ฆฝ์์ ๋ธ ๋ง๋ฆฌ์์ ์ด๋ฆ์ ๋ฐ ๋ง๋ ๋น์๋ฆฌ MariaDB ์ฌ๋จ์ด ๋ฑ์ฅํ๊ฒ ๋ ๊ฒ์ด๋ค.
MariaDB์ ์ถ์์ด ์ด๋ฌํ๋ฏ, MySQL๊ณผ ์ฌ์ฉ๋ฒ์ด ๊ฐ๊ณ ์ค์ ๋ก๋ ๊ธฐ์กด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ํ์ผ, API, DB Connector๋ค์ ๋ณ๋ค๋ฅธ ์ค์ ์์ด ํธํํ์ฌ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฌ๋ MySQL์ ์ค๋ผํด์ด ์ง์์ ์ผ๋ก ๊ด๋ฆฌ, ๊ฐ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅ์ด๋ ์ฑ๋ฅ์ ์ธ ๋ฉด์์ ์ฐจ์ด๊ฐ ์๋ค๊ณ ์๊ณ ์์ผ๋ฉด ๋๋ค.
โจ Sqlite3
SQLite๋ ๋ณ๋์ ์๋ฒ ํ๋ก์ธ์ค๊ฐ ํ์์๊ณ , ์ฝ๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ ์คํธํ ์ ์๋ ์คํ์์ค DBMS์ด๋ค.
์ด๋ C/Cpp ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ๋ถ๋ฌ๋ ๋ ๋งํผ ๊ฒฝ๋ํ๋์ด ๋ถ๋ด์์ด ์ฌ์ฉํ ์ ์๋ค.
๋ค๋ง ๊ทธ๋งํผ ๊ธฐ๋ฅ์ด ์ ํ๋์ด์๊ณ ์ฑ๋ฅ์ด ์์ข๊ธฐ ๋๋ฌธ์ ๋ณดํต์ SQLite๋ฅผ ์ฌ์ฉํ์ฌ ์์ฉํ๋ก๊ทธ๋จ์ ํ๋กํ ํ์ ํ๊ณ , ์ถํ์ PostgreSQL์ด๋ Oracle๊ณผ ๊ฐ์ ํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ด์ํ๋ค. ๋ฌผ๋ก ํ๋กํ ํ์ ์ฉ๋๊ฐ ์๋๋๋ผ๋ ๊ฐ๋จํ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ ์๋น์ค์์ ์ฌ์ฉํ๊ธฐ์๋ ๋์์ง ์์ ์ ํ์ด๋ค.
์ด๊ธฐ์๋ C/Cpp ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ฐ๋ฐ๋์์ผ๋, ์ง๊ธ์ ๋๋ถ๋ถ์ ์ธ์ด์์ ์๋ํํฐ๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ค.
* ์ฐธ๊ณ ๋ก ์๋ฐ์์ ๋ง์ด์ฌ์ฉํ๋ H2DB๋ ์๋ฐ JVM ํ๊ฒฝ์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ ๋จ์ผ ํ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
InnoDB..?? ์ด๊ฑด MySQL์ ๋ค๋ฅธ ์ด๋ฆ์ธ๊ฐ์?
InnoDB๋ MySQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ด๋ฆ์ด๋ค.
์์ ์๋ MyISAM์ด๋ ์ด๋ฆ์ ์์ง์ ์ฌ์ฉํ๋๋ฐ, ์ ์ write ๋ง์ read (๋ธ๋ก๊ทธ, ๊ฒ์ํ)์๋ ์ต์ ์ ์ฑ๋ฅ์ ๋ฝ์๋์๋ค. ํ์ง๋ง ๋ค์ ์ฌ์ฉ์์ ๋์์ ์, ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํผํฌ๋จผ์ค๋ ๋์ค์ง ์์์ ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ์ต๊ทผ์๋ ์๋ก ๋ง๋ InnoDB๋ฅผ ์์ง์ผ๋ก ์ฌ์ฉํ๋ค.
์ด๋ MySQL์ ๋ฐฐ์ฐ๋ค๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ ์ ์๋ ๋ด์ฉ์ด๋ฏ๋ก, ๊ฐ๋จํ๊ฒ๋ง ๋น๊ตํ๊ณ ๋์ด๊ฐ๋๋ก ํ๊ฒ ๋ค.
- Transaction Safe ์คํ ๋ฆฌ์ง ์์ง์ด๋ค.
- ๊ธฐ์กด์ MyISAM๊ณผ ๋น์ทํ์ง๋ง, ์ค๋ผํด์ฒ๋ผ ๋ง์ ๊ธฐ๋ฅ์ ์ถ๊ฐ์ง์ํ๋ค (์ฅ์ ๋ณต๊ตฌ, row-level locking๋ฑ)
- ๋ค์์ ๋์์ ์, ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ต๋์ ํผํฌ๋จผ์ค๋ฅผ ๋ด๋๋ก ์ค๊ณ๋์ด์๋ค. ์์ฒด์ ์ผ๋ก ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ ์์ ์บ์ฑ๊ณผ ์ธ๋ฑ์ฑ์ ์ํ ๋ฒํผ ํ์ ๊ด๋ฆฌํ๋ค.
- ํ ์ด๋ธ๊ณผ ์ธ๋ฑ์ค๋ฅผ Table Space์ ์ ์ฅํ๋ค. MyISAM์ ํ ์ด๋ธ๊ณผ ์ธ๋ฑ์ค๋ฅผ ๋ถ๋ฆฌํ์ฌ ํ์ผ๋ก ๊ด๋ฆฌํ์๋ค.
๐MySQL ๋ฒ์ ๊ณผ ์๋์ (์ํฐํ๋ผ์ด์ฆ์ ์ปค๋ฎค๋ํฐ) ์ ํ
๊ฐ๋ฅํ ์ต์ ๋ฒ์ ์ ์ค์นํ๋๊ฒ ์ข์ผ๋, ๋ฉ์ด์ ์ ๋ฐ์ดํธ (5.1, 5.5, 8.0)๋ผ๋ฉด ์ด๋์ ๋ ์์ ํ ๋ ํ ์ฌ์ฉํ๋๊ฒ ์ข๋ค.
ํ์ฌ(2021) ์ต์ ๋ฒ์ ์ธ MySQL 8.0์ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด 8.0.15 ~ 8.0.20 ์ฌ์ด ๋ฒ์ ์ ์ฌ์ฉํ๋๊ฑธ ๊ถ์ฅํ๋ค.
๊ธฐ์กด์ MySQL์์๋ ์ํฐํ๋ผ์ด์ฆ ์๋์ ๊ณผ ์ปค๋ฎค๋ํฐ ์๋์ ์ผ๋ก ๋๋ ์ ธ์๊ธดํ์ง๋ง, ์ด ๋์ ๊ธฐ๋ฅ ์ฐจ์ด๋ ์ ํ ์๋ค. ์ฌํ์ง์. ์ฆ ๊ธฐ์ ์ง์์ ์ฐจ์ด๋ง ์์๋ค.
ํ์ง๋ง ์ค๋ผํด์ ์ธ์๋ ํ MySQL 5.5 ๋ถํฐ๋ ๊ธฐ๋ฅ๊ณผ ์ฝ๋๊ฐ ๋ฌ๋ผ์ก๊ณ , ์ํฐํ๋ผ์ด์ฆ ์๋์ ์ ์ฝ๋๋ ๋ ์ด์ ์คํ์์ค๋ก ๊ณต๊ฐ๋์ง ์๋๋ค. ๋ฌผ๋ก ๊ทธ๋ ๋ค๊ณ ํด๋ ํต์ฌ๊ธฐ๋ฅ์ด๋ ์ฑ๋ฅ์๋ ๋ณ ์ฐจ์ด๊ฐ ์์ผ๋ฉฐ ์ํฐํ๋ผ์ด์ฆ๋ฅผ ์ ํํ๋ฉด ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ถ๊ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
- Thread Pool
- EnterPrise Audit, TDE, Authentication, Firewall, Monitor, Backup ๊ธฐ๋ฅ
- ๊ธฐ์กด์ ์ํฐํ๋ผ์ด์ฆ์์ ์ ๊ณต๋๋ ๊ธฐ์ ์ง์
percona์์ ์ถ์ํ๋ ๋ฐฑ์ ๋ฐ ๋ชจ๋ํฐ๋ง ๋๊ตฌ, ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๋ฉด ๊ตณ์ด ์ํฐํ๋ผ์ด์ฆ ๋ฒ์ ์ ์ฌ์ฉํ์ง ์์๋ ํด๋น ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๋ค. ๋๋ถ๋ถ์ ๊ธฐ์ ์์ ์ํฐํ๋ผ์ด์ฆ๋ฅผ ๊ณ ๋ คํ ๋ ์ค๋ผํด์ ๊ธฐ์ ์ง์์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๐ MySQL 8.0
MySQL์ 2018๋ ๋์ ์ต์ ๋ฒ์ ์ธ 8.0์ด ๋ฆด๋ฆฌ์ฆ ๋์๋ค.
์ฌ๋ด์ผ๋ก 5.0์์ ๋ฐ๋ก 8.0์ผ๋ก ๋ฐ์ด๋์ ์ด์ ๋, ์ค๋ผํด์ ์ธ์๋๊ธฐ์ Sun์ฌ์ 6.0alpha ๋ฒ์ ์ด ์์๋๋ฐ ํ๊ธฐ๋์๊ณ , MySQL Cluster ์ ํ์ด 7.0 ๋ฒ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ ์์์ผ๋ฏ๋ก ํผ๋์ ๋ง๊ธฐ ์ํด MySQL 8.0์ผ๋ก ์ถ์ํ์๋ค๊ณ ํ๋ค.
8.0์ ๋ณ๊ฒฝ์ ์ด ๊ถ๊ธํ๋ค๋ฉด ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด๋ณด์.
'๐ฑBackend > DB(MySQL,PostgreSQL)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๋ฆฌ์ค-5 (0) | 2021.10.27 |
---|---|
์ ๋ฆฌ์ค - 4 (0) | 2021.10.20 |
์ ๋ฆฌ์ค - 3 (0) | 2021.10.20 |
์ ๋ฆฌ์ค -2 (0) | 2021.10.20 |
์ ๋ฆฌ์ค #1 ์์ง ์ํคํ ์ฒ (0) | 2021.10.13 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev