TiDB 4.0 ๋ถ„์‚ฐ DBMS ๋ฆด๋ฆฌ์Šค

์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ถ„์‚ฐ DBMS ๋ฆด๋ฆฌ์Šค TiDB 4.0Google ๊ธฐ์ˆ ์˜ ์˜ํ–ฅ์œผ๋กœ ๊ฐœ๋ฐœ ์ŠคํŒจ๋„ˆ ะธ F1. TiDB๋Š” ์‹ค์‹œ๊ฐ„ ํŠธ๋žœ์žญ์…˜(OLTP)์„ ์ œ๊ณตํ•˜๊ณ  ๋ถ„์„ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ HTAP(Hybrid Transactional/Analytical Processing) ์‹œ์Šคํ…œ ๋ฒ”์ฃผ์— ์†ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ฐฐํฌ์ž Apache 2.0์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

TiDB ๊ธฐ๋Šฅ:

  • SQL ์ง€์› ๋ฐ MySQL ํ”„๋กœํ† ์ฝœ๊ณผ ํ˜ธํ™˜๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต์œผ๋กœ MySQL์šฉ์œผ๋กœ ์ž‘์„ฑ๋œ ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ TiDB์— ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ณตํ†ต ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MySQL ํ”„๋กœํ† ์ฝœ ์™ธ์—๋„ JSON ๊ธฐ๋ฐ˜ API์™€ Spark์šฉ ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DBMS์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SQL์˜ ๊ธฐ๋Šฅ ์ค‘ ์ธ๋ฑ์Šค, ์ง‘๊ณ„ ํ•จ์ˆ˜, GROUP BY, ORDER BY, DISTINCT ํ‘œํ˜„์‹, ๋จธ์ง€(LEFT JOIN / RIGHT JOIN / CROSS JOIN), ๋ทฐ, ์œˆ๋„์šฐ ํ•จ์ˆ˜, ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์ง€์›๋œ๋‹ค. ์ œ๊ณต๋œ ๊ธฐํšŒ๋Š” PhpMyAdmin๊ณผ ๊ฐ™์€ ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ TiDB ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. Gogs ๊ทธ๋ฆฌ๊ณ  ์›Œ๋“œํ”„๋ ˆ์Šค;
  • ํ™•์žฅ ๋ฐ ๋ณต์›๋ ฅ: ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ๊ฐœ๋ณ„ ๋…ธ๋“œ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์ž‘์—…์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค‘๋ณต์„ฑ์„ ๊ฐ–์ถ˜ ๋…ธ๋“œ ์ „์ฒด์— ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ์‹คํŒจ๋Š” ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ์€ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ์‹ค์ œ๋กœ ํŠธ๋žœ์žญ์…˜์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋…ธ๋“œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ด€๋ จ๋˜์–ด ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ ์†Œํ”„ํŠธ์›จ์–ด์— ํ•˜๋‚˜์˜ ํฐ DBMS์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด GoLevelDB ๋ฐ BoltDB ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๋˜๋Š” ๊ธฐ๋ณธ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๊ณผ ๊ฐ™์€ ๋…ธ๋“œ์˜ ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€์— ๋‹ค๋ฅธ ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. TiKV ๊ทธ๋ฆฌ๊ณ  TiFlash. TiKV๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ‚ค/๊ฐ’ ํ˜•์‹์œผ๋กœ ํ–‰์— ์ €์žฅํ•˜๋ฉฐ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ(OLTP) ์ž‘์—…์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. TiFlash๋Š” ์—ด ๊ธฐ๋ฐ˜ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„์„ ๋ฌธ์ œ(OLAP)๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ ๋” ๋†’์€ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ์Šคํ† ๋ฆฌ์ง€ ์ฒด๊ณ„๋ฅผ ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—… ์ฒ˜๋ฆฌ๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์—ด๊ณผ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ:

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถ„์‚ฐ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ Green GC๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด ๋Œ€๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ด๊ณ  ์•ˆ์ •์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฑฐ์˜ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์— ๋”ฐ๋ผ ํฌ๊ธฐ๊ฐ€ ์ œํ•œ๋˜๋Š” ๋Œ€๊ทœ๋ชจ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ ์ œํ•œ์ด 100MB์—์„œ 10GB๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฑ์—…์„ ์œ„ํ•œ BACKUP ๋ฐ RESTORE ๋ช…๋ น์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ”์— ์ž ๊ธˆ์„ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ๊ธฐ ์ˆ˜์ค€(READ COMMITTED)์—์„œ MySQL ํ˜ธํ™˜ ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • LIKE ๋ฐ WHERE ํ‘œํ˜„์‹์— ๋Œ€ํ•œ ์ง€์›์ด "ADMIN SHOW DDL JOBS" ๋ช…๋ น์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • oom-use-tmp-storage ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ RAM์ด ๋ถ€์กฑํ•œ ์ƒํƒœ์—์„œ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹ฑํ•˜๊ธฐ ์œ„ํ•ด ์ž„์‹œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž„์˜์˜ ๊ฐ’์„ ์†์„ฑ์— ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด Random ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • LOAD DATA ๋ช…๋ น์€ ์ด์ œ XNUMX์ง„์ˆ˜ ๋ฐ XNUMX์ง„์ˆ˜ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ตํ‹ฐ๋งˆ์ด์ € ๋™์ž‘์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด 15๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • SQL ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ์ง„๋‹จํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ” SLOW_QUERY / CLUSTER_SLOW_QUERY๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋Š๋ฆฐ ์ฟผ๋ฆฌ ๋กœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œํ€€์Šค ์ž‘์—…์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • PD(Placement Driver, ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ์„œ๋ฒ„)์—์„œ ์ฝ์€ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "SET CONFIG" ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ PD/TiKV ๋…ธ๋“œ์˜ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ตœ๋Œ€ ๋™์‹œ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด max-server-connections ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ์ ์œผ๋กœ 4096).
  • ์š”์ฒญ๋œ ์—ด์ด ์ธ๋ฑ์Šค์— ์˜ํ•ด ์™„์ „ํžˆ ํฌํ•จ๋˜๋Š” ์ƒํ™ฉ์—์„œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค ๋ณ‘ํ•ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฟผ๋ฆฌ ์ตœ์ ํ™”๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ๊ฐ’์œผ๋กœ ์šด์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ
  • ์ธ๋ฑ์Šค ์•ก์„ธ์Šค ๊ฒฐ๊ณผ๋ฅผ ์บ์‹ฑํ•˜๊ณ  ์ค‘๋ณต ํ•ญ๋ชฉ์„ ํ•„ํ„ฐ๋งํ•˜์—ฌ CPU ๋ถ€ํ•˜๋ฅผ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
  • ์—ด ์ˆ˜๊ฐ€ ๋งŽ์€ ํ…Œ์ด๋ธ”์˜ ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ์ €์žฅ ํ˜•์‹์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • GROUP_CONCAT ํ•จ์ˆ˜๋Š” ์ด์ œ "ORDER BY" ํ‘œํ˜„์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • SQL์„ ํ†ตํ•ด TiFlash ๋กœ๊ทธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • "RECOVER TABLE" ๋ช…๋ น์€ ์ž˜๋ฆฐ ํ…Œ์ด๋ธ” ๋ณต๊ตฌ ์ง€์›์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • DDL ์ž‘์—… ์‹คํ–‰์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ฟผ๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด DDLJobs ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ”์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • SHOW CONFIG ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ PD ๋ฐ TiKV ์„ค์ •์„ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํฌํ•จ ๊ธฐ๋ณธ ์ฝ”ํ”„๋กœ์„ธ์„œ ์บ์‹œ;
  • ์ปค๋ฐ‹ ์žฌ์‹œ๋„ ๋‹จ๊ณ„์˜ ๊ณ ๋ฃจํ‹ด ์ˆ˜๋Š” ์ด์ œ committer-concurrency ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…˜์˜ ์˜์—ญ์„ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ž„์‹œ ์Šคํ† ๋ฆฌ์ง€์˜ ํฌ๊ธฐ๋ฅผ tidb-server๋กœ ์ œํ•œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • "tbl_name ํŒŒํ‹ฐ์…˜(partition_name_list)์— ์‚ฝ์ž…" ๋ฐ "tbl_name ํŒŒํ‹ฐ์…˜(partition_name_list)์— ๊ต์ฒด" ์ž‘์—…์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒํ‹ฐ์…”๋‹(ํŒŒํ‹ฐ์…”๋‹)์— ์‚ฌ์šฉ๋˜๋Š” ํ•ด์‹œ์—์„œ "is null"์„ ๊ธฐ์ค€์œผ๋กœ ํ•„ํ„ฐ๋ง ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถ„ํ• ๋œ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ํ™•์ธ, ์ •๋ฆฌ ๋ฐ ๋ณต์›์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€