ํฌ์ŠคํŠธ๊ทธ๋ ˆSQL 13

24์›” 13์ผ, ๊ฐœ๋ฐœ ํŒ€์€ ๋‹ค์Œ Postgresql ๋ฆด๋ฆฌ์Šค ๋ฒˆํ˜ธ XNUMX์˜ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฆด๋ฆฌ์Šค๋Š” ๋ฌด์—‡๋ณด๋‹ค๋„ ์„ฑ๋Šฅ ํ–ฅ์ƒ, ๋‚ด๋ถ€ ์œ ์ง€ ๊ด€๋ฆฌ ์„œ๋น„์Šค ์†๋„ ํ–ฅ์ƒ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ๋‹จ์ˆœํ™”, ๋ณด๋‹ค ์•ˆ์ •์ ์ธ ์‹œ์Šคํ…œ ์•ก์„ธ์Šค ์ œ์–ด์— ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ง„ ์ธ๋ฑ์Šค ํŠธ๋ฆฌ์—์„œ ์ธ๋ฑ์‹ฑ๋œ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์ค‘๋ณต ์ฒ˜๋ฆฌ ์ธก๋ฉด์—์„œ ํ…Œ์ด๋ธ” ์ธ๋ฑ์‹ฑ์„ ์ตœ์ ํ™”ํ•˜๋Š” ์ž‘์—…์ด ๊ณ„์†๋˜์–ด ์ฟผ๋ฆฌ ์‹คํ–‰ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ธ๋ฑ์Šค๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์˜ ๋ฐ˜๋ณต ์ •๋ ฌ์ด ๋” ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์ฆ๋ถ„ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ, ๋ณด๋‹ค ํšจ์œจ์ ์ธ ๋‹จ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ ์ƒˆ๋กœ์šด ํ™•์žฅ ํ†ต๊ณ„(CREATE STATISTICS ๋ช…๋ น์„ ํ†ตํ•ด)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ถ€ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ€์†ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ๊ณ„๋ณ„ ๊ณ„ํš.
ํ•ด์‹œ๋œ ์ง‘๊ณ„๋ฅผ ๋” ๋งŽ์ด ํ™œ์šฉํ•˜๊ณ  ์ง‘๊ณ„๋œ ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๊ฐ€ RAM์— ๋งž์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋””์Šคํฌ์— ๋คํ”„ํ•˜์—ฌ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋ฐ์ดํ„ฐ ์ง‘๊ณ„๊ฐ€ ํฌํ•จ๋œ ์ฟผ๋ฆฌ ์‹คํ–‰๋„ ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ํŒŒํ‹ฐ์…˜์— ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜๋Š” ์†๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Postgresql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๋‹นํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ–‰์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ์“ด ํ›„ ์—ฌ์œ  ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ์ œ๊ณต ์ž‘์—…์ธ "vacuuming"์„ ์ด์ œ ๋ณ‘๋ ฌ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ด€๋ฆฌ์ž๋Š” ์ด์ œ ํ•ด๋‹น ์ˆซ์ž๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์™ธ์—๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ˜„์žฌ ํ™œ๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋„๊ตฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ๋งˆ์Šคํ„ฐ์™€ ๋ณต์ œ๋ณธ ๊ฐ„์˜ ์‚ฌ์ „ ๊ธฐ๋ก ๋กœ๊ทธ๋ฅผ ๋™๊ธฐํ™”ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐฉ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ณต์ œ๋ณธ ์—ฐ๊ฒฐ์„ ๋Š์„ ๋•Œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณต์›๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ˜์‹  ์ค‘์—์„œ ๋‹ค์–‘ํ•œ ํ‘œ์ค€ ์‹œ๊ฐ„ ๊ธฐ๋ก ํ˜•์‹์„ ๋‚ด์žฅ Postgresql ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” datetime() ํ•จ์ˆ˜๋ฅผ ๊ฐ•์กฐํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UUID ์ƒ์„ฑ ํ•จ์ˆ˜ v4 gen_random_uuid(); ์œ ๋‹ˆ์ฝ”๋“œ ์ž‘์—… ํ‘œ์ค€ํ™”; ๋…ผ๋ฆฌ์  ์ˆ˜์ค€์˜ ์ „์ฒด ๋ณต์ œ์™€ ์ฟผ๋ฆฌ์˜ ๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ ๋ณต์ œ๋ณธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์—ฐ๊ฒฐ๋œ ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ์— ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ๋ณด๋‹ค ์œ ์—ฐํ•œ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ก์„ธ์Šค ์ œ์–ด๋Š” ์‹œ์Šคํ…œ์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋กœ ๋ช…์‹œ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ƒˆ ๋ฒ„์ „์€ ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ํฐ ๋ฐœ์ „์„ ์ด๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ถŒํ•œ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž(์ˆ˜ํผ์œ ์ €)๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ™•์žฅ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•œ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์ž‘์€ ํ™•์žฅ ์„ธํŠธ(์˜ˆ: pgcrypto, tablefunc ๋˜๋Š” hstore)๋งŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SCRAM ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•  ๋•Œ(libpq ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ†ตํ•ด ์ž‘์—…ํ•  ๋•Œ) ์ด์ œ "์ฑ„๋„ ๋ฐ”์ธ๋”ฉ"์ด ํ•„์š”ํ•˜๋ฉฐ ๋ฒ„์ „ 13์˜ ํƒ€์‚ฌ ๋ฐ์ดํ„ฐ postgres_fdw์— ๋Œ€ํ•œ ๋ž˜ํผ ํ•จ์ˆ˜๋Š” ์ธ์ฆ์„œ ์ธ์ฆ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ


๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€

์ถœ์ฒ˜ : linux.org.ru

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