Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

Bruce Momjian์˜ 2020๋…„ ๊ฐ•์—ฐ "Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ"์˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

(์ฐธ๊ณ : ์Šฌ๋ผ์ด๋“œ์˜ ๋ชจ๋“  SQL ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ ๋งํฌ์—์„œ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. http://momjian.us/main/writings/pgsql/locking.sql)

์•ˆ๋…•ํ•˜์„ธ์š”! ์—ฌ๊ธฐ ๋Ÿฌ์‹œ์•„์— ๋‹ค์‹œ ์˜ค๊ฒŒ ๋˜์–ด ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. ์ž‘๋…„์— ๋ชป๊ฐ€์„œ ์•„์‰ฝ์ง€๋งŒ ์˜ฌํ•ด Ivan๊ณผ ์ €๋Š” ํฐ ๊ณ„ํš์ด ์žˆ์–ด์š”. ๋‚˜๋Š” ์—ฌ๊ธฐ์— ํ›จ์”ฌ ๋” ์ž์ฃผ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋Ÿฌ์‹œ์•„์— ์˜ค๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ฒ ๋ฆฌ์˜ ํŠœ๋ฉ˜์„ ๋ฐฉ๋ฌธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ๋„์‹œ๋“ค์„ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์ œ ์ด๋ฆ„์€ ๋ธŒ๋ฃจ์Šค ๋ง˜์ง€์•ˆ์ž…๋‹ˆ๋‹ค. ์ €๋Š” EnterpriseDB์—์„œ ์ผํ•˜๊ณ  ์žˆ์œผ๋ฉฐ 23๋…„ ๋„˜๊ฒŒ Postgres๋ฅผ ์‚ฌ์šฉํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ฏธ๊ตญ ํ•„๋ผ๋ธํ”ผ์•„์— ์‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ผ๋…„์— 90์ผ ์ •๋„ ์—ฌํ–‰์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” 40๊ฐœ ์ •๋„์˜ ์ปจํผ๋Ÿฐ์Šค์— ์ฐธ์„ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์˜ ๋ฒก ์‚ฌ์ดํŠธ, ์—ฌ๊ธฐ์—๋Š” ์ง€๊ธˆ ๋ณด์—ฌ๋“œ๋ฆด ์Šฌ๋ผ์ด๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปจํผ๋Ÿฐ์Šค๊ฐ€ ๋๋‚œ ํ›„ ์ œ ๊ฐœ์ธ ์›น์‚ฌ์ดํŠธ์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์•ฝ 30๊ฐœ์˜ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋น„๋””์˜ค์™€ 500๊ฐœ๊ฐ€ ๋„˜๋Š” ๋งŽ์€ ๋ธ”๋กœ๊ทธ ํ•ญ๋ชฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒ๋‹นํžˆ ์œ ์ตํ•œ ๋ฆฌ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ์ด ์ž๋ฃŒ์— ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ๊ผญ ์‚ฌ์šฉํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ €๋Š” Postgres๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๊ต์‚ฌ์ด์ž ๊ต์ˆ˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ์ œ๊ฐ€ ๋งํ•˜๋ ค๋Š” ๋‚ด์šฉ์„ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚˜์˜ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํ”„๋ ˆ์  ํ…Œ์ด์…˜์—๋Š” 110๊ฐœ์˜ ์Šฌ๋ผ์ด๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ„๋‹จํ•œ ๊ฒƒ๋ถ€ํ„ฐ ์ด์•ผ๊ธฐํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ด๊ณ , ๊ฒฐ๊ตญ ๋ณด๊ณ ์„œ๋Š” ์ ์  ๋” ๋ณต์žกํ•ด์ง€๊ณ  ์ƒ๋‹นํžˆ ๋ณต์žกํ•ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด๊ฒƒ์€ ๋‹ค์†Œ ๋ถˆ์พŒํ•œ ๋Œ€ํ™”์ž…๋‹ˆ๋‹ค. ์ฐจ๋‹จ์€ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์ฃผ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์ด ์–ด๋”˜๊ฐ€์—์„œ ์‚ฌ๋ผ์ง€๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์น˜๊ณผ์— ๊ฐ€๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

  1. ์ž ๊ธˆ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž‘์—…ํ•˜๊ณ  ๋™์‹œ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ฐจ๋‹จ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์˜ค๋Š˜์€ ์ฐจ๋‹จ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์‹์„ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
  2. ๊ฑฐ๋ž˜ ID. ์ด๊ฒƒ์€ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์—์„œ ๋‹ค์†Œ ์ง€๋ฃจํ•œ ๋ถ€๋ถ„์ด์ง€๋งŒ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ์œผ๋กœ ์ฐจ๋‹จ ์œ ํ˜•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒ๋‹นํžˆ ๊ธฐ๊ณ„์ ์ธ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
  4. ์•„๋ž˜์—๋Š” ์ฐจ๋‹จ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ดํ•ดํ•˜๊ธฐ ๋งค์šฐ ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ฐจ๋‹จ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์šฐ๋ฆฌ์˜ ์šฉ์–ด๋Š” ์ƒ๋‹นํžˆ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์ ˆ์ด ์–ด๋””์„œ ๋‚˜์˜จ ๊ฒƒ์ธ์ง€ ์•„๋Š” ์‚ฌ๋žŒ์ด ์–ผ๋งˆ๋‚˜ ๋ฉ๋‹ˆ๊นŒ? ๋‘ ์‚ฌ๋žŒ. Colossal Cave Adventure๋ผ๋Š” ๊ฒŒ์ž„์—์„œ ๋‚˜์˜จ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. 80๋…„๋Œ€์—๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ์ปดํ“จํ„ฐ ๊ฒŒ์ž„์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์š”. ๊ทธ๊ณณ์—์„œ ๋™๊ตด๋กœ, ๋ฏธ๋กœ๋กœ ๋“ค์–ด๊ฐ€์•ผ ํ–ˆ๋Š”๋ฐ, ํ…์ŠคํŠธ๋Š” ๋ฐ”๋€Œ์—ˆ์ง€๋งŒ ๋‚ด์šฉ์€ ๋งค๋ฒˆ ๊ฑฐ์˜ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด ๊ฒŒ์ž„์„ ๊ทธ๋ ‡๊ฒŒ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” Oracle์—์„œ ์šฐ๋ฆฌ์—๊ฒŒ ์˜จ ์ž ๊ธˆ์˜ ์ด๋ฆ„์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ๋‚˜๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•˜๋Š” ์šฉ์–ด๋ฅผ ๋ด…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SHARE UPDATE ECXLUSIVE์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ RAW ECXLUSIVE๋ฅผ ๊ณต์œ ํ•˜์„ธ์š”. ์†”์งํžˆ ๋งํ•ด์„œ, ์ด ์ด๋ฆ„๋“ค์€ ๊ทธ๋‹ค์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๋” ์ž์„ธํžˆ ๊ณ ๋ คํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€์—๋Š” ๋ถ„๋ฆฌ๋ฅผ ์˜๋ฏธํ•˜๋Š” "๊ณต์œ "๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€์—๋Š” "๋…์ "์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€์—๋Š” ์ด ๋‘ ๋‹จ์–ด๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด ์ž๋ฌผ์‡ ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  '์•ก์„ธ์Šค'๋ผ๋Š” ๋‹จ์–ด๋„ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "row"๋ผ๋Š” ๋‹จ์–ด๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์•ก์„ธ์Šค ๋ถ„์‚ฐ, ํ–‰ ๋ถ„์‚ฐ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์•ˆํƒ€๊น๊ฒŒ๋„ Postgres์—์„œ ์ดํ•ดํ•ด์•ผ ํ•  ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” MVCC์ž…๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ์ œ ๊ฐ•์—ฐ์—์„œ๋Š” ๋‹ค๋ฃจ์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์›น์‚ฌ์ดํŠธ์— ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๋ณ„๋„์˜ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํ”„๋ ˆ์  ํ…Œ์ด์…˜์ด ์–ด๋ ต๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ ๋‹ค๋ฉด ์•„๋งˆ๋„ MVCC๊ฐ€ ์ œ๊ฒ ๊ฐ€์žฅ ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์›น์‚ฌ์ดํŠธ์—์„œ ์‹œ์ฒญํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜์ƒ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์šฐ๋ฆฌ๊ฐ€ ์ดํ•ดํ•ด์•ผ ํ•  ๋˜ ๋‹ค๋ฅธ ์‚ฌํ•ญ์€ ๊ฑฐ๋ž˜ ID์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฑฐ๋ž˜๋Š” ๊ณ ์œ  ์‹๋ณ„์ž ์—†์ด๋Š” ์ž‘๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์— ๊ฑฐ๋ž˜๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค. Postgres์—๋Š” ๋‘ ๊ฐ€์ง€ ํŠธ๋žœ์žญ์…˜ ๋ฒˆํ˜ธ ์ง€์ • ์‹œ์Šคํ…œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ทธ๋‹ค์ง€ ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋˜ํ•œ ์Šฌ๋ผ์ด๋“œ๋Š” ์ดํ•ดํ•˜๊ธฐ ์ƒ๋‹นํžˆ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ๋ถ€๋ถ„์ด ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด๋ผ๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์„ธ์š”.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

http://momjian.us/main/writings/pgsql/locking.sql

์–ด๋”” ๋ณด์ž. ๊ฑฐ๋ž˜ ๋ฒˆํ˜ธ๊ฐ€ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. SELECT pg_back ํ•จ์ˆ˜๊ฐ€ ์—ฌ๊ธฐ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋‚ด ๊ฑฐ๋ž˜์™€ ๊ฑฐ๋ž˜ ID๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๋”, ์ด ํ”„๋ฆฌ์  ํ…Œ์ด์…˜์ด ๋งˆ์Œ์— ๋“ค๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ถ„ํ™์ƒ‰ ๋งํฌ๋กœ ์ด๋™ํ•˜์—ฌ ์ด ํ”„๋ฆฌ์  ํ…Œ์ด์…˜์— ๋Œ€ํ•œ SQL์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PSQL์—์„œ ๊ฐ„๋‹จํžˆ ์‹คํ–‰ํ•˜๋ฉด ์ „์ฒด ํ”„๋ ˆ์  ํ…Œ์ด์…˜์ด ํ™”๋ฉด์— ์ฆ‰์‹œ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ฝƒ์€ ํฌํ•จ๋˜์ง€ ์•Š์ง€๋งŒ ์ ์–ด๋„ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด ๊ฒฝ์šฐ ๊ฑฐ๋ž˜ ID๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋…€์—๊ฒŒ ํ• ๋‹นํ•œ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Postgres์—๋Š” ๊ฐ€์ƒ ํŠธ๋žœ์žญ์…˜ ID๋ผ๊ณ  ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ํŠธ๋žœ์žญ์…˜ ID๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Postgres์˜ ์ž ๊ธˆ์„ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ€์ƒ ํŠธ๋žœ์žญ์…˜ ID๋Š” ์ง€์†์ ์ธ ๊ฐ’์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ํŠธ๋žœ์žญ์…˜ ID์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, SELECT ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์•„๋ฌด ๊ฒƒ๋„ ์ž ๊ทธ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ„๋‹จํ•œ SELECT๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์— ์˜๊ตฌ ID๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ณณ์—์„œ ๊ทธ๋…€์—๊ฒŒ ๊ฐ€์ƒ ID๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” Postgres ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์ •๋ฆฌ ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ฏ€๋กœ ๊ฐ€์ƒ ํŠธ๋žœ์žญ์…˜ ID๋Š” ๋‘ ๊ฐœ์˜ ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ ์•ž์˜ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋Š” ๋ฐฑ์—”๋“œ ID์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฅธ์ชฝ์—๋Š” ์นด์šดํ„ฐ๋งŒ ๋ณด์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋”ฐ๋ผ์„œ ์š”์ฒญ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฐฑ์—”๋“œ ID๊ฐ€ 2๋ผ๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์ผ๋ จ์˜ ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•˜๋ฉด ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์นด์šดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 2/10, 2/11, 2/12 ๋“ฑ์˜ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์—ฌ๊ธฐ์—๋Š” ๋‘ ๊ฐœ์˜ ์—ด์ด ์žˆ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์„ธ์š”. ์™ผ์ชฝ์—๋Š” ๊ฐ€์ƒ ๊ฑฐ๋ž˜ ID(2/12)๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ์—๋Š” ์˜๊ตฌ ๊ฑฐ๋ž˜ ID๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํ•„๋“œ๋Š” ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜๊ตฌ ๊ฑฐ๋ž˜ ID๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋ถ„์„ ๋ช…๋ น((ANALYZE))์„ ์‹คํ–‰ํ•˜์ž๋งˆ์ž ๋™์ผํ•œ ์ฟผ๋ฆฌ๊ฐ€ ์˜๊ตฌ ํŠธ๋žœ์žญ์…˜ ID๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ์–ด๋–ป๊ฒŒ ๋ณ€ํ–ˆ๋Š”์ง€ ๋ณด์„ธ์š”. ์ด์ „์—๋Š” ์ด ID๊ฐ€ ์—†์—ˆ์œผ๋‚˜ ์ง€๊ธˆ์€ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์—ฌ๊ธฐ ๋˜ ๋‹ค๋ฅธ ์š”์ฒญ, ๋˜ ๋‹ค๋ฅธ ๊ฑฐ๋ž˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ๊ฑฐ๋ž˜๋ฒˆํ˜ธ๋Š” 2/13 ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜๊ตฌ ํŠธ๋žœ์žญ์…˜ ID๋ฅผ ์š”์ฒญํ•˜๋ฉด ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์ด๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋Ÿผ, ํ•œ ๋ฒˆ ๋”. ๊ฐ€์ƒ ๊ฑฐ๋ž˜ ID์™€ ์˜๊ตฌ ๊ฑฐ๋ž˜ ID๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Postgres ๋™์ž‘์„ ์ดํ•ดํ•˜๋ ค๋ฉด ์ด ์ ์„ ์ดํ•ดํ•˜์‹ญ์‹œ์˜ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์„ธ ๋ฒˆ์งธ ์„น์…˜์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” Postgres์˜ ๋‹ค์–‘ํ•œ ์ž ๊ธˆ ์œ ํ˜•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋‹ค์ง€ ํฅ๋ฏธ๋กญ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์„น์…˜์€ ํ›จ์”ฌ ๋” ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ๋“ค์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ์„น์…˜์„ ์‚ดํŽด๋ณด๋ฉด์„œ ๊ฐ ์œ ํ˜•์˜ ์ž ๊ธˆ ์žฅ์น˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„ค์น˜ ๋ฐฉ๋ฒ•๊ณผ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  Postgres์—์„œ ์ž ๊ธˆ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฟผ๋ฆฌ๋„ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Postgres์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์‹œ์Šคํ…œ ๋ณด๊ธฐ์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ pg_lock์€ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. Pg_lock์€ ํ˜„์žฌ Postgres์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ์ž ๊ธˆ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ pg_lock ์ž์ฒด๋Š” ๋งค์šฐ ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์—ฌ๋“œ๋ฆฌ๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ pg_locks๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ทฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ๋‚ด๊ฐ€ ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‚ด ์ž ๊ธˆ, ๋‚ด ์„ธ์…˜ ๋“ฑ์„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹จ์ง€ ํ‘œ์ค€ SQL์ผ ๋ฟ์ด๋ฉฐ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋” ์ž˜ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ์ด ๋ณด๊ธฐ๊ฐ€ ๋งค์šฐ ๋„“๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ฒˆ์งธ ๋ณด๊ธฐ์ธ lockview2๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ด๋ธ”์˜ ๋” ๋งŽ์€ ์—ด์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€ ์—ด์„ ๋ณด์—ฌ์ฃผ๋Š” ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋‚ด์šฉ์ด ๊ฝค ๋ณต์žกํ•ด์„œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” Lockdemo๋ผ๋Š” ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ์— ํ•œ ์ค„์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ์ƒ˜ํ”Œ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ž๋ฌผ์‡ ์˜ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์„น์…˜์„ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ฆ‰, ํ–‰ ํ•˜๋‚˜, ์—ด ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์œ ํ˜•์˜ ์ž ๊ธˆ์€ ACCESS SHARE์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€์žฅ ์ œํ•œ์ด ์ ์€ ์ฐจ๋‹จ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์‹ค์ œ๋กœ ๋‹ค๋ฅธ ์ž ๊ธˆ ์žฅ์น˜์™€ ์ถฉ๋Œํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ์ž ๊ธˆ์„ ์ •์˜ํ•˜๋ ค๋ฉด "lock table" ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ถ„๋ช…ํžˆ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ACCESS SHARE ๋ชจ๋“œ์—์„œ๋Š” ์ž ๊ธˆ ํ…Œ์ด๋ธ”์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ PSQL์„ ์‹คํ–‰ํ•˜๋ฉด ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ์„ธ์…˜์—์„œ ๋‘ ๋ฒˆ์งธ ์„ธ์…˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ๊ฐ€? ๋‚˜๋Š” ๋‹ค๋ฅธ ์„ธ์…˜์œผ๋กœ ๊ฐ€์„œ "์ด ์š”์ฒญ์— ๋Œ€ํ•œ ์ž ๊ธˆ ๋ณด๊ธฐ๋ฅผ ๋ณด์—ฌ์ฃผ์„ธ์š”"๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ ์ด ํ…Œ์ด๋ธ”์—๋Š” AccessShareLock์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์š”์ฒญํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ์ด๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” ๋ธ”๋ก์ด ํ• ๋‹น๋˜์—ˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋˜ํ•œ ๋‘ ๋ฒˆ์งธ ์—ด์„ ๋ณด๋ฉด ๊ฑฐ๊ธฐ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  "SELECT" ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ์ด๋Š” AccessShareLock์„ ์š”์ฒญํ•˜๋Š” ์•”์‹œ์ (๋ช…์‹œ์ ) ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ…Œ์ด๋ธ”์„ ํ•ด์ œํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ํ–‰์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ค„ ์ค‘ ํ•˜๋‚˜์— AccessShareLock์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ SELECT๋Š” ํ…Œ์ด๋ธ”์—์„œ AccessShareLock์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์ž ๊ธˆ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์ƒ ์–ด๋–ค ๊ฒƒ๊ณผ๋„ ์ถฉ๋Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

SELECT๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์„ธ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์ด ์žˆ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ์ด์ „์—๋Š” ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋งŒ ์‹คํ–‰ํ–ˆ์ง€๋งŒ ์ด์ œ๋Š” pg_class, pg_namespace ๋ฐ pg_attribute์˜ ์„ธ ๊ฐœ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด์ œ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ฉด 9๊ฐœ์˜ ํ…Œ์ด๋ธ”์— XNUMX๊ฐœ์˜ AccessShareLock์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ? ์„ธ ๊ฐœ์˜ ํ…Œ์ด๋ธ”(pg_attribute, pg_class, pg_namespace)์ด ํŒŒ๋ž€์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํ…Œ์ด๋ธ”์„ ํ†ตํ•ด ์ •์˜๋œ ๋ชจ๋“  ์ธ๋ฑ์Šค์—๋„ AccessShareLock์ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š” ์ž๋ฌผ์‡ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ํ•˜๋Š” ์ผ์€ ๋‹จ์ˆœํžˆ ํ…Œ์ด๋ธ”์„ ์„ ํƒํ•˜๋Š” ๋™์•ˆ ํ…Œ์ด๋ธ”์„ ์žฌ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๋ง๋œ๋‹ค. ์ฆ‰, ํ…Œ์ด๋ธ”์„ ์„ ํƒํ•˜๋ฉด ๊ทธ ์ˆœ๊ฐ„ ์‚ฌ๋ผ์ง€๋Š”๋ฐ ์ด๋Š” ์ž˜๋ชป๋œ ๊ฒƒ์ด๋ฏ€๋กœ AccessShare๋Š” "์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ์ด ํ…Œ์ด๋ธ”์„ ๋–จ์–ด๋œจ๋ฆฌ์ง€ ๋งˆ์„ธ์š”"๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์ž ๊ธˆ์ž…๋‹ˆ๋‹ค.. ๋ณธ์งˆ์ ์œผ๋กœ ๊ทธ๊ฒƒ์ด ๊ทธ๋…€๊ฐ€ ํ•˜๋Š” ์ „๋ถ€์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

ROW SHARE - ์ด ์ž ๊ธˆ์€ ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. SELECT ROW SHARE ๊ฐ ํ–‰์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ž ๊ทธ๋Š” ๋ฐฉ์‹. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์‹œ์ฒญํ•˜๋Š” ๋™์•ˆ ๋ˆ„๊ตฌ๋„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ๊ทธ๋ ‡๋‹ค๋ฉด SHARE LOCK์€ ๋ฌด์—‡์„ ํ• ๊นŒ์š”? SELECT์˜ ํŠธ๋žœ์žญ์…˜ ID๋Š” 681์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋ญ” ์ผ ์žˆ์—ˆ ๋‹ˆ? ์ˆซ์ž๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์€ "์ž ๊ธˆ" ํ•„๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํŠธ๋žœ์žญ์…˜ ID๋ฅผ ๊ฐ€์ ธ์™”๊ณ  ๋…์  ๋ชจ๋“œ์—์„œ ์ด๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ํ•˜๋Š” ์ผ์€ ํ…Œ์ด๋ธ” ์–ด๋”˜๊ฐ€์— ๊ธฐ์ˆ ์ ์œผ๋กœ ์ž ๊ฒจ ์žˆ๋Š” ํ–‰์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Š” ์ •ํ™•ํžˆ ์–ด๋””์ธ์ง€๋Š” ๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ์ž ์‹œ ํ›„์— ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ์ž๋ฌผ์‡ ๊ฐ€ ์šฐ๋ฆฌ์— ์˜ํ•ด ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋”ฐ๋ผ์„œ ๋ฐฐํƒ€์  ์ž ๊ธˆ์€ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐฐํƒ€์ ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ํ…Œ์ด๋ธ”์—์„œ ํ–‰์„ ์‚ญ์ œํ•˜๋ฉด ๋ณด์‹œ๋‹ค์‹œํ”ผ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

SHARE EXCLUSIVE๋Š” ๋” ๊ธด ์ž ๊ธˆ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด๊ฒƒ์€ ์‚ฌ์šฉ๋  (ANALYZE) ๋ถ„์„๊ธฐ ๋ช…๋ น์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

SHARE LOCK โ€“ ๊ณต์œ  ๋ชจ๋“œ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์ž ๊ธ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ณ ์œ  ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ผ๋ถ€์ธ SHARE LOCK์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ด๋ธ”์„ ์ž ๊ทธ๊ณ  SHARE LOCK์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ํ…Œ์ด๋ธ”์˜ SHARE LOCK์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ํ…Œ์ด๋ธ”์„ ์ฝ์„ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์ˆ˜์ •ํ•  ์ˆ˜๋Š” ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๊ณ ์œ  ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.

๊ณ ์œ ํ•œ ๋™์‹œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ž ๊ธˆ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์‹œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž ๊ธˆ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜ ์ž ๊ธˆ, ์ผ๋ฐ˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ด๋ธ” ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋™์•ˆ ํ…Œ์ด๋ธ” ์ธ๋ฑ์Šค์— ์“ฐ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ž ๊ธˆ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

SHARE ROW EXCLUSIVE - ๋ช…์‹œ์ ์œผ๋กœ(๋ช…์‹œ์ ์œผ๋กœ) ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋˜๋Š” ๊ทœ์น™์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ทœ์น™์ด ์‚ฌ์šฉ๋  ํŠน์ • ์‚ฌ๋ก€๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

EXCLUSIVE ์ž ๊ธˆ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ํ…Œ์ด๋ธ”์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์—ฌ๊ธฐ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์ž ๊ธˆ ์žฅ์น˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์˜ˆ๋ฅผ ๋“ค์–ด ACCESS EXCLUSIVE๋Š” ์ฐจ๋‹จ ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋ฉด CLUSTER table, ๊ทธ๋Ÿฌ๋ฉด ์•„๋ฌด๋„ ๊ฑฐ๊ธฐ์— ๊ธ€์„ ์“ธ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ด๋ธ” ์ž์ฒด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ธ๋ฑ์Šค๋„ ์ž ๊ธ‰๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด๊ฒƒ์€ ACCESS EXCLUSIVE ์ฐจ๋‹จ์˜ ๋‘ ๋ฒˆ์งธ ํŽ˜์ด์ง€๋กœ, ํ…Œ์ด๋ธ”์—์„œ ์ฐจ๋‹จํ•˜๋Š” ๋‚ด์šฉ์„ ์ •ํ™•ํžˆ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ณ„ ํ…Œ์ด๋ธ” ํ–‰์„ ์ž ๊ทธ๋Š”๋ฐ ์ด๋Š” ๋งค์šฐ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ œ๊ฐ€ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์€ ๋ชจ๋“  ๊ธฐ๋ณธ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ž ๊ธˆ, ํŠธ๋žœ์žญ์…˜ ID, ๊ฐ€์ƒ ํŠธ๋žœ์žญ์…˜ ID, ์˜๊ตฌ ํŠธ๋žœ์žญ์…˜ ID์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด์ œ ๋ช‡ ๊ฐ€์ง€ ์ฐจ๋‹จ ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋ ˆ์  ํ…Œ์ด์…˜์˜ ๋ชฉํ‘œ๋Š” Postgres๊ฐ€ ํŠน์ • ํ•ญ๋ชฉ์„ ์ฐจ๋‹จํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฐ€ ๋ถ€๋ถ„์„ ์ฐจ๋‹จํ•˜๋Š” ๋ฐ ๋งค์šฐ ๋Šฅ์ˆ™ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ๊ตฌ์ฒด์ ์ธ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

ํ…Œ์ด๋ธ”๊ณผ ํ…Œ์ด๋ธ”์˜ ํ•œ ํ–‰๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌด์–ธ๊ฐ€๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ํ…Œ์ด๋ธ”์— ExclusiveLock, Transaction ID ๋ฐ ExclusiveLock์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

ํ–‰์„ ๋‘ ๊ฐœ ๋” ์‚ฝ์ž…ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ์ด์ œ ํ…Œ์ด๋ธ”์—๋Š” ์„ธ ๊ฐœ์˜ ํ–‰์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•œ ํ–‰์„ ์‚ฝ์ž…ํ•˜๊ณ  ์ด๋ฅผ ์ถœ๋ ฅ์œผ๋กœ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๊ฐœ์˜ ํ–‰์„ ๋” ์‚ฝ์ž…ํ•˜๋ฉด ๋ฌด์—‡์ด ์ด์ƒํ•œ๊ฐ€์š”? ์ด์ƒํ•œ ์ ์€ ์ด ํ…Œ์ด๋ธ”์— ์„ธ ๊ฐœ์˜ ํ–‰์„ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ์ž ๊ธˆ ํ…Œ์ด๋ธ”์—๋Š” ์—ฌ์ „ํžˆ ๋‘ ๊ฐœ์˜ ํ–‰์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ณธ์งˆ์ ์œผ๋กœ Postgres์˜ ๊ธฐ๋ณธ ๋™์ž‘์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ 100๊ฐœ์˜ ํ–‰์„ ์ž ๊ทธ๋ฉด 100๊ฐœ์˜ ์ž ๊ธˆ ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— 1๊ฐœ์˜ ํ–‰์„ ์ฐจ๋‹จํ•˜๋ ค๋ฉด ํ•ด๋‹น ์ฟผ๋ฆฌ๊ฐ€ 000๊ฐœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฐจ๋‹จํ•˜๋ ค๋ฉด ๋ฐฑ๋งŒ ๋˜๋Š” ์ˆ˜์‹ญ์–ต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ณ„๋กœ ํšจ๊ณผ๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ฐœ๋ณ„ ํ–‰์— ๋Œ€ํ•ด ์ฐจ๋‹จ ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•˜๋Š” ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ๋ณต์žกํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ž ๊ธˆ ํ…Œ์ด๋ธ”์„ ์ฆ‰์‹œ ์ •์˜ํ•ด์•ผ ํ•˜๋Š”๋ฐ Postgres๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์—…๋ฐ์ดํŠธ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ง€๊ธˆ ํ–‰์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์žˆ๋Š”๋ฐ ํ•œ ๋ฒˆ์— ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ํ…Œ์ด๋ธ”์„ ์ž ๊ทธ๋Š” ๋™์‹œ์— ์ธ๋ฑ์Šค๋„ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํ…Œ์ด๋ธ”์—๋Š” ๊ณ ์œ  ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์ž ๊ฐ€์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ˆ„๊ตฌ๋„ ์ด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ฐจ๋‹จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋‘ ํ–‰์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฐ€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ–‰๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‘ ๋ฐฐ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ์ž ๊ธˆ ๋ผ์ธ ์ˆ˜๋Š” ์ •ํ™•ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

Postgres๊ฐ€ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด Postgres๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ํ–‰์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด MVCC์— ๋Œ€ํ•œ ๋‚ด ๊ฐ•์—ฐ์„ ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Postgres์—๋Š” ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ํ…Œ์ด๋ธ” ์ž ๊ธˆ ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋” ๋‚ฎ๊ณ  ํšจ์œจ์ ์ธ ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋ฌด์–ธ๊ฐ€๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”? ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ํ–‰์„ ์‚ญ์ œํ–ˆ๋Š”๋ฐ ์—ฌ์ „ํžˆ ๋‘ ๊ฐœ์˜ ์ฐจ๋‹จ ์ž…๋ ฅ์ด ์žˆ๊ณ , ๋ชจ๋‘ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์–ด๋„ ์—ฌ์ „ํžˆ ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์˜ˆ๋ฅผ ๋“ค์–ด 1์ค„์„ ์‚ฝ์ž…ํ•œ ๋‹ค์Œ 000์ค„์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•œ ๊ฐœ๋ณ„ ์ค„์€ ์—ฌ๊ธฐ์— ๊ธฐ๋ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ๋ฆฌ์ฆˆ ์ž์ฒด ๋‚ด์—์„œ ๋” ๋‚ฎ์€ ์ˆ˜์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  MVCC ์—ฐ์„ค์—์„œ ์ด์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž ๊ธˆ์„ ๋ถ„์„ํ•  ๋•Œ ํ…Œ์ด๋ธ” ์ˆ˜์ค€์—์„œ ์ž ๊ธฐ๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์—ฌ๊ธฐ์— ๊ฐœ๋ณ„ ํ–‰์ด ๊ธฐ๋ก๋˜๋Š” ๋ฐฉ์‹์„ ํ™•์ธํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋ช…์‹œ์  ์ฐจ๋‹จ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ƒˆ๋กœ ๊ณ ์นจ์„ ํด๋ฆญํ•˜๋ฉด ๋‘ ๊ฐœ์˜ ํ–‰์ด ์ž ๊น๋‹ˆ๋‹ค. ๋ชจ๋‘ ์„ ํƒํ•˜๊ณ  "๋ชจ๋“  ๊ณณ์—์„œ ์—…๋ฐ์ดํŠธ"๋ฅผ ํด๋ฆญํ•˜๋ฉด ์—ฌ์ „ํžˆ ๋‘ ๊ฐœ์˜ ์ฐจ๋‹จ ๊ธฐ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ฐ ๊ฐœ๋ณ„ ํ–‰์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ƒ์‚ฐ์„ฑ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์‚ฐ์„ฑ์ด ๋„ˆ๋ฌด ๋†’์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋ถˆ์พŒํ•œ ์ƒํ™ฉ์— ์ฒ˜ํ•˜๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๊ณต์œ ํ•œ๋‹ค๋ฉด 30๋ฒˆ ๋ชจ๋‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

ํ…Œ์ด๋ธ”์„ ๋ณต์›ํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์‚ญ์ œํ•œ ๋‹ค์Œ ํ•œ ํ–‰์„ ๋‹ค์‹œ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋งค์šฐ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ๊ณ  ์›ํ•˜๋Š” ๋™์ž‘์ธ Postgres์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๋™์ž‘์€ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์„ ํƒ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ์ด๊ฒƒ์„ ๋™์‹œ์— ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„ ํƒ์€ ์—…๋ฐ์ดํŠธ์™€ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์˜ ๋™์ผํ•œ ์ž‘์—…์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋…์ž์—๊ฒŒ ์ž‘๊ฐ€๋ฅผ ๋ง‰์ง€ ๋ง๋ผ๊ณ  ๋งํ•˜๊ณ , ์ž‘๊ฐ€๋Š” ๋…์ž๋ฅผ ๋ง‰์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด์ œ ์„ ํƒ์„ ํ•˜๊ฒ ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ INSERT๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด - 694๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‚ฝ์ž…์„ ์ˆ˜ํ–‰ํ•œ ํŠธ๋žœ์žญ์…˜์˜ ID๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ ๋‚ด ๋ฐฑ์—”๋“œ ID๋ฅผ ๋ณด๋ฉด 695์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ๋‚ด ํ…Œ์ด๋ธ”์— 695๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์—ฌ๊ธฐ์„œ ์ด๋ ‡๊ฒŒ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋ก€๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ 695๋Š” ๋ฐฐํƒ€์  ์ž ๊ธˆ์ด๊ณ  ์—…๋ฐ์ดํŠธ๋Š” ๋™์ผํ•œ ๋™์ž‘์„ ๊ฐ–์ง€๋งŒ ๋‘˜ ์‚ฌ์ด์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋งค์šฐ ํŠน์ดํ•œ ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ƒ๋‹จ์—๋Š” ShareLock, ํ•˜๋‹จ์—๋Š” ExclusiveLock์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๊ฑฐ๋ž˜๊ฐ€ ๋ชจ๋‘ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ผ์–ด๋‚˜๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด MVCC์—์„œ ์ œ๊ฐ€ ํ•˜๋Š” ๊ฐ•์—ฐ์„ ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ฆ‰, SELECT์™€ UPDATE๋ฅผ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์žฌ์„ค์ •ํ•˜๊ณ  ์ž‘์—…์„ ํ•œ ๋ฒˆ ๋” ์ˆ˜ํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋™์ผํ•œ ํ–‰์—์„œ ๋‘ ๊ฐœ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์–ตํ•˜์„ธ์š”, ๋…์ž๊ฐ€ ์ž‘๊ฐ€๋ฅผ ๋ง‰๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ์ž‘๊ฐ€๊ฐ€ ๋…์ž๋ฅผ ๋ง‰๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•œ ์ž‘๊ฐ€๊ฐ€ ๋‹ค๋ฅธ ์ž‘๊ฐ€๋ฅผ ๋ง‰๋Š”๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋‘ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ๋™์ผํ•œ ํ–‰์„ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด Lockdemo ํ…Œ์ด๋ธ”์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•œ ํ–‰์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜๋‹น 698.

์ด๋ฅผ 2๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. 699๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค. ์„ฑ๊ณตํ–ˆ๊ฑฐ๋‚˜ ๊ฑฐ๋ž˜๊ฐ€ ๋ณด๋ฅ˜ ์ค‘์ด๋ฉฐ ํ™•์ธ ๋˜๋Š” ์ทจ์†Œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋ณด์„ธ์š”. 2/51์ด ์ฒซ ๋ฒˆ์งธ ๊ฑฐ๋ž˜์ด์ž ์ฒซ ๋ฒˆ์งธ ์„ธ์…˜์ž…๋‹ˆ๋‹ค. 3/112๋Š” ํ•ด๋‹น ๊ฐ’์„ 3์œผ๋กœ ๋ณ€๊ฒฝํ•œ ๋งจ ์œ„์˜ ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•Œ๋‹ค์‹œํ”ผ ๋งจ ์œ„์˜ ์š”์ฒญ์€ 699๋กœ ์ž์ฒด์ ์œผ๋กœ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 3/112๋Š” ์ž ๊ธˆ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Lock_mode ์—ด์€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 699๋ฅผ ์˜ˆ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  699๊ฐ€ ์–ด๋”” ์žˆ๋Š”์ง€ ๋ณด๋ฉด ๋” ๋†’์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฒซ ๋ฒˆ์งธ ์„ธ์…˜์€ ๋ฌด์—‡์„ ํ–ˆ๋‚˜์š”? ๊ทธ๋…€๋Š” ์ž์‹ ์˜ ๊ฑฐ๋ž˜ ID์— ๋Œ€ํ•œ ๋…์  ์ž ๊ธˆ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Postgres๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ž์ฒด ๊ฑฐ๋ž˜ ID๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋ ค๋ฉด ๋ณด๋ฅ˜ ์ค‘์ธ ๊ฑฐ๋ž˜๊ฐ€ ์žˆ๋Š” ๋™์•ˆ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ด์ƒํ•œ ์„ ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์™ผ์ชฝ์—๋Š” ์ฒ˜๋ฆฌ ID๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์—ด์—๋Š” ๊ฐ€์ƒ ํŠธ๋žœ์žญ์…˜ ID๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ์„ธ ๋ฒˆ์งธ ์—ด์—๋Š” lock_type์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌด์—‡์„ ์˜๋ฏธ ํ•˜๋Š”๊ฐ€? ๋ณธ์งˆ์ ์œผ๋กœ ๊ทธ๊ฒƒ์ด ๋งํ•˜๋Š” ๊ฒƒ์€ ๊ฑฐ๋ž˜ ID๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งจ ์•„๋ž˜์˜ ๋ชจ๋“  ํ–‰์—๋Š” ๊ด€๊ณ„๊ฐ€ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ…Œ์ด๋ธ”์—๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์ž๋ฌผ์‡ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๊ณ„ ์ž ๊ธˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์Šค์Šค๋กœ ์ฐจ๋‹จํ•˜๋Š” transactionid ์ฐจ๋‹จ์ด ์žˆ๋Š”๋ฐ, ์ด๋Š” ์ •ํ™•ํžˆ ์ฒซ ๋ฒˆ์งธ ํ–‰์ด๋‚˜ transactionid๊ฐ€ ์žˆ๋Š” ๋งจ ์•„๋ž˜์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ 699๊ฐ€ ์ž‘์—…์„ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๋ณผ๊ฒŒ์š”. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ๋Š” ๋‘ ๊ฐ€์ง€ ์ผ์ด ๋™์‹œ์— ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ–‰์—์„œ ์ž์ฒด์ ์œผ๋กœ ์ž ๊ธฐ๋Š” ํŠธ๋žœ์žญ์…˜ ID ์ž ๊ธˆ์„ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋…€๋Š” ์‚ฌ๋žŒ๋“ค์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

6๋ฒˆ์งธ ์ค„์„ ๋ณด์‹œ๋ฉด ์ฒซ๋ฒˆ์งธ์™€ ๊ฐ™์€ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠธ๋žœ์žญ์…˜ 699๊ฐ€ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. 700์€ ์ž๋™ ์ž ๊ธˆ ๊ธฐ๋Šฅ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งจ ์•„๋ž˜ ํ–‰์—๋Š” 699๊ฐ€ ์ž‘์—…์„ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  lock_type ํŠœํ”Œ์—๋Š” ์ˆซ์ž๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

0/10์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ์ด์ž ์ด ํŠน์ • ํ–‰์˜ ์˜คํ”„์…‹์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋ฉด 0/11์ด ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” 0/10์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด ์ž‘์—…์— ๋Œ€ํ•œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๊ฐ€ ํ™•์ธ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์‹œ๋ฆฌ์ฆˆ์ž„์„ ํ™•์ธํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ์ปค๋ฐ‹์„ ๋ˆ„๋ฅธ ํ›„ ์—…๋ฐ์ดํŠธ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ด๊ฒƒ์ด ๋‹ค์‹œ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ 700์€ ์œ ์ผํ•œ ์ž ๊ธˆ์ด๋ฉฐ ์ปค๋ฐ‹๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. 699๊ฐ€ ์†Œ์ง„๋˜๋ฉด ๋” ์ด์ƒ ์•„๋ฌด๊ฒƒ๋„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ œ ํŠธ๋žœ์žญ์…˜ 700์€ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด๋ฉฐ ํ—ˆ์šฉ๋œ ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ž ๊ธˆ์ด ์žˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋”์šฑ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ด๋ฒˆ์—๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•  ๋˜ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ์ด ์š”์ฒญ์„ ์ดํ•ดํ•˜๋ฆฌ๋ผ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด๋Š” ๋‹ค๋ฅธ ์„น์…˜๋„ ํฌํ•จํ•˜๋Š” ์žฌ๊ท€ ๋ทฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์‹œ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง‘๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ํ™œ์šฉํ•ด๋ณด์ž.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

3๊ฐœ์˜ ๋™์‹œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ–‰์ด ์ด์ œ 4๊ฐœ๋ผ๊ณ  ๋งํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  XNUMX์„ XNUMX๋กœ ๋ณ€๊ฒฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์—ฌ๊ธฐ์— 4๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ ID๋Š” 702์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  4๋ฅผ 5๋กœ ๋ฐ”๊พธ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  5๋ฅผ 6์œผ๋กœ, 6์„ 7๋กœ ๋ฐ”๊พธ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํ•˜๋‚˜์˜ ๊ฑฐ๋ž˜๊ฐ€ ๋๋‚˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์„ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์„ ์ค„์„ ์„œ๊ฒ ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ–‰์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? 702์ž…๋‹ˆ๋‹ค. ์›๋ž˜ ์ด ๊ฐ’์„ ์„ค์ •ํ•œ ํŠธ๋žœ์žญ์…˜ ID์ž…๋‹ˆ๋‹ค. ๋‚˜์˜ Granted ์นผ๋Ÿผ์—๋Š” ๋ฌด์—‡์ด ์ ํ˜€ ์žˆ๋‚˜์š”? ๋‚˜์—๊ฒ ํ”์ ์ด ์žˆ๋‹ค f. ํŠธ๋žœ์žญ์…˜ ID 5๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— (6, 7, 702)์ด ์Šน์ธ๋  ์ˆ˜ ์—†๋Š” ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜ ID ์ฐจ๋‹จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด 5๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜ ID ์ž ๊ธˆ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  704, 705๋ฅผ ๋ณด๋ฉด ๊ฑฐ๊ธฐ์—๋Š” ์•„์ง ์•„๋ฌด๊ฒƒ๋„ ์“ฐ์—ฌ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๋“ค์€ ์•„์ง ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‹จ์ง€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฅธ๋‹ค๊ณ  ์”๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋๋‚ด๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ํ–‰์„ ๋ฐ”๊ฟ€ ๊ธฐํšŒ๊ฐ€ ์žˆ์„ ๋•Œ ๊นจ์–ด๋‚˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ์ž ์— ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋ชจ๋‘ 12๋ฒˆ์งธ ์ค„์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ณธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 0/12์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋”ฐ๋ผ์„œ ์ฒซ ๋ฒˆ์งธ ๊ฑฐ๋ž˜๊ฐ€ ์Šน์ธ๋˜๋ฉด ์—ฌ๊ธฐ์—์„œ ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด ๋ช…ํ™•ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ๊นจ๋—ํ•ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ์‹ค์ œ๋กœ ์•„์ง๋„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

ํ˜„์žฌ ์ƒํ™ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 702 ์ปค๋ฐ‹. ์ด์ œ 703์€ ์ด ํ–‰ ์ž ๊ธˆ์„ ํš๋“ํ•˜๊ณ  704๋Š” 703์ด ์ปค๋ฐ‹๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  705๋„ ์ด๊ฒƒ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฃŒ๋˜๋ฉด ๊ทธ๋“ค์€ ์Šค์Šค๋กœ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ๋ชจ๋‘๊ฐ€ ์ค„์„ ์„œ๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ์ง€์ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋ชจ๋‘๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์ฐจ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ตํ†ต ์ฒด์ฆ ์ƒํ™ฉ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ฐจ๊ฐ€ ๋ฉˆ์ถ”๊ณ  ๋ชจ๋‘๊ฐ€ ๊ธธ๊ฒŒ ์ค„์„ ์„ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋™ํ•˜๋ฉด ๋‹ค์Œ ์ฐจ๋Ÿ‰์ด ์•ž์œผ๋กœ ์ฃผํ–‰ํ•˜์—ฌ ๋ธ”๋ก์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

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

์˜ˆ๋ฅผ ๋“ค์–ด, Ivan์ด "๋‚˜์—๊ฒŒ ๋ญ”๊ฐ€๋ฅผ ์ฃผ์„ธ์š”"๋ผ๊ณ  ๋งํ•˜๋ฉด ๋‚˜๋Š” "์•„๋‹ˆ์š”, ๋‹น์‹ ์ด ๋‚˜์—๊ฒŒ ๋‹ค๋ฅธ ๊ฒƒ์„ ์ฃผ์–ด์•ผ๋งŒ ๊ทธ๊ฒƒ์„ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” โ€œ์•„๋‹ˆ์š”, ๋‹น์‹ ์ด ๋‚˜์—๊ฒŒ ์ฃผ์ง€ ์•Š์œผ๋ฉด ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‹น์‹ ์—๊ฒŒ ์ฃผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.โ€๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ ๊ต์ฐฉ์ƒํƒœ์— ๋น ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” Ivan์ด ์ด๊ฒƒ์„ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ์–ป๊ณ  ์‹ถ์–ดํ•˜๋Š” ๋‘ ์‚ฌ๋žŒ์ด ์žˆ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์›ํ•˜๋Š” ๊ฒƒ์„ ์ค„ ๋•Œ๊นŒ์ง€ ๊ทธ๊ฒƒ์„ ์ค„ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๊ฒฐ์ฑ…์ด ์—†์Šต๋‹ˆ๋‹ค.

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

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด์ œ ๋‘ ๊ฐœ์˜ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ์„ค์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 50๊ณผ 80์„ ์ž…๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ–‰์—์„œ๋Š” 50์—์„œ 50์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜ ๋ฒˆํ˜ธ๋Š” 710์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋Ÿฐ ๋‹ค์Œ 80์„ 81๋กœ, 50์„ 51๋กœ ๋ณ€๊ฒฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋ชจ์Šต์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 710์—๋Š” ํ–‰์ด ์ฐจ๋‹จ๋˜์—ˆ์œผ๋ฉฐ 711์€ ํ™•์ธ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์ด๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. 710์€ ์šฐ๋ฆฌ ์‹œ๋ฆฌ์ฆˆ์˜ ์†Œ์œ ์ž์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  711์€ 710์ด ๊ฑฐ๋ž˜๋ฅผ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์–ด๋Š ํ–‰์—์„œ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ์ด์ƒํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด์ œ 80์„ 80์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. 710์€ 711์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ , 711์€ 710์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ผ์€ ์ž˜ ๋๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ๋ฒ—์–ด๋‚  ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ์„œ๋กœ์˜ ๋ฐ˜์‘์„ ๊ธฐ๋Œ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋ชจ๋“  ๊ฒƒ์„ ์ง€์—ฐ์‹œํ‚ค๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  Postgres์—๋Š” ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด๋ฅผ ์•Œ์•„์ฐจ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ๊ทธ๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค, ์ฆ‰ 711 ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์ฐจ๋‹จ๋œ SHARE LOCK์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ํ”„๋กœ์„ธ์Šค๋Š” ์ด๋Ÿฌ์ €๋Ÿฌํ•œ ํŠธ๋žœ์žญ์…˜ ID์— ๋Œ€ํ•ด SHARE LOCK์ด ์ œ๊ณต๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ๊ณ  ์ด๋Ÿฌ์ €๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์ฐจ๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์—๋Š” ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

XNUMX๋ฐฉํ–ฅ ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ์˜ˆ.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด ์ˆซ์ž๋ฅผ ํ‘œ์— ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. 40์„ 40์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

60์„ 61๋กœ, 80์„ 81๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  80์„ ๋ฐ”๊พธ๋ฉด ํŽ‘!

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  714๋Š” ์ด์ œ 715๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 716์€ 715๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์—ฌ๊ธฐ์—๋Š” ๋” ์ด์ƒ ๋‘ ์‚ฌ๋žŒ์ด ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ด๋ฏธ ์„ธ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์—๊ฒŒ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ์›ํ•˜๊ณ , ์ด ์‚ฌ๋žŒ์€ ์ œXNUMX์ž์—๊ฒŒ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ์›ํ•˜๊ณ , ์ œXNUMX์ž๋Š” ๋‚˜์—๊ฒŒ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ํ•ด์•ผ ํ•  ์ผ์„ ์™„๋ฃŒํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ ์‚ผ์ž ๊ธฐ๋‹ค๋ฆผ์— ๋น ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  Postgres๋Š” ์ด๊ฒƒ์ด ์–ด๋Š ํ–‰์—์„œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์„ธ ๊ฐœ์˜ ์ž…๋ ฅ์ด ์„œ๋กœ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—๋Š” ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. 20๊ฐœ์˜ ํ•ญ๋ชฉ์ด ์„œ๋กœ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋‹ค์Œ ๋ฌธ์ œ๋Š” ์ง๋ ฌํ™” ๊ฐ€๋Šฅ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

ํŠน๋ณ„ํ•œ ์ง๋ ฌํ™” ๊ฐ€๋Šฅ ์ž ๊ธˆ์ธ ๊ฒฝ์šฐ.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  719๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ถœ๋ ฅ์€ ๋งค์šฐ ์ •์ƒ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ํด๋ฆญํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์„ ์ง๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ SA ์ž ๊ธˆ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ง๋ ฌํ™” ๊ฐ€๋Šฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ง๋ ฌ ์ž ๊ธˆ ์žฅ์น˜์ธ SARieadLock์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ์ž ๊ธˆ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ จ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๋˜ํ•œ ๊ณ ์œ  ์ธ๋ฑ์Šค๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด ํ…Œ์ด๋ธ”์—๋Š” ๊ณ ์œ  ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์— ์ˆซ์ž 2๋ฅผ ๋„ฃ์œผ๋ฉด 2๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งจ ์œ„์—๋Š” ๋˜ ๋‹ค๋ฅธ 2๋ฅผ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  721์—๋Š” ์ „์šฉ ์ž ๊ธˆ ์žฅ์น˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ 722๋Š” 721์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ์ง€ ์•Œ ๋•Œ๊นŒ์ง€ 2๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— 721์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ํ•˜์œ„ ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์—ฌ๊ธฐ์—๋Š” 723์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ํฌ์ธํŠธ๋ฅผ ์ €์žฅํ•œ ๋‹ค์Œ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ƒˆ๋กœ์šด ๊ฑฐ๋ž˜ ID๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹น์‹ ์ด ์•Œ์•„์•ผ ํ•  ๋˜ ๋‹ค๋ฅธ ํ–‰๋™ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜ ID๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. 724๊ฐœ์˜ ์žŽ. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ 725๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ญ˜ ํ•˜๋ ค๋Š” ๊ฑฐ์ง€? ๋‚˜๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ดํ•œ ์ž ๊ธˆ์˜ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•œ ์ž ๊ธˆ์ด๋“  SAVEPOINT์ด๋“  ์ž ๊ธˆ ํ…Œ์ด๋ธ”์— ๋‚˜ํƒ€๋‚˜๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์ž ๊ธˆ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด๋Š” pg_advisory_lock์ด ์žˆ๋Š” ๋ช…์‹œ์ (๋ช…์‹œ์ ) ์ž ๊ธˆ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์ฐจ๋‹จ ์œ ํ˜•์ด ๊ถŒ๊ณ ๋กœ ๋‚˜์—ด๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์— ๋นจ๊ฐ„์ƒ‰์œผ๋กœ "๊ถŒ๊ณ "๋ผ๊ณ  ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  pg_advisory_unlock์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์™€ ๊ฐ™์ด ๋™์‹œ์— ์ฐจ๋‹จํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๋ก ์ ์œผ๋กœ, ์ €๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ๋†€๋ผ์šด ์‚ฌ์‹ค์„ ํ•œ ๊ฐ€์ง€ ๋” ๋ณด์—ฌ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ pg_locks ํ…Œ์ด๋ธ”์„ pg_stat_activity ํ…Œ์ด๋ธ”๊ณผ ๊ฒฐํ•ฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์™œ ์ด ์ผ์„ ํ•˜๊ณ  ์‹ถ์€ ๊ฑธ๊นŒ์š”? ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ํ˜„์žฌ ์„ธ์…˜์„ ์‚ดํŽด๋ณด๊ณ  ๊ทธ๋“ค์ด ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์ž ๊ธˆ์˜ ์ข…๋ฅ˜๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ์ž ๊ธˆ ํ…Œ์ด๋ธ”๊ณผ ์ฟผ๋ฆฌ ํ…Œ์ด๋ธ”์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋งค์šฐ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ pg_stat_view๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ํ–‰์„ ํ•˜๋‚˜์”ฉ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” 724๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ–‰์„ XNUMX์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ ์—ฌ๊ธฐ์—์„œ ๋ฌด์—‡์ด ๋ณด์ด๋‚˜์š”? ์ด๋Š” ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์™ผ์ชฝ ์—ด์— ๋‚˜์—ด๋œ ์ „์ฒด ์š”์ฒญ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์˜ค๋ฅธ์ชฝ์—์„œ ๋ง‰ํžŒ ๋ถ€๋ถ„๊ณผ ์ด๋กœ ์ธํ•ด ์ƒ์„ฑ๋˜๋Š” ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งค๋ฒˆ ๊ฐ ์„ธ์…˜์œผ๋กœ ๋Œ์•„๊ฐ€ ์ฐธ์—ฌํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ๋”์šฑ ๋ช…ํ™•ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ ํ•ฉ๋‹ˆ๋‹ค.

๋งค์šฐ ์œ ์šฉํ•œ ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์€ pg_blocking_pids. ๋‹น์‹ ์€ ์•„๋งˆ ๊ทธ๋…€์— ๋Œ€ํ•ด ๋“ค์–ด๋ณธ ์ ์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋…€๊ฐ€ ๋ฌด์—‡์„ํ•˜๊ณ  ์žˆ๋‹ˆ? ์ด๋ฅผ ํ†ตํ•ด ์ด ์„ธ์…˜ 11740์— ๋Œ€ํ•ด ์–ด๋–ค ํŠน์ • ํ”„๋กœ์„ธ์Šค ID๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  11740์ด 724๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  724๊ฐ€ ๋งจ ์œ„์— ์žˆ์Šต๋‹ˆ๋‹ค. 11306์€ ํ”„๋กœ์„ธ์Šค ID์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๊ธฐ๋Šฅ์€ ์ž ๊ธˆ ํ…Œ์ด๋ธ”์„ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์กฐ๊ธˆ ๋ณต์žกํ•˜๋‹ค๋Š” ๊ฒƒ๋„ ์•Œ์ง€๋งŒ, ์—ฌ๋Ÿฌ๋ถ„์€ ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ ์ด ํ•จ์ˆ˜๋Š” ์ด ์ž ๊ธˆ ํ…Œ์ด๋ธ”์„ ์‚ดํŽด๋ณด๊ณ  ์ด ํ”„๋กœ์„ธ์Šค ID์— ๋Œ€๊ธฐ ์ค‘์ธ ์ž ๊ธˆ์ด ๋ถ€์—ฌ๋œ ์œ„์น˜๋ฅผ ์ฐพ์œผ๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž ๊ธˆ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ํ”„๋กœ์„ธ์Šค ID๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋‚ด๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. pg_blocking_pids.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 9.6์—์„œ๋งŒ ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธฐ๋Šฅ์€ ๋‚˜์˜จ ์ง€ 5๋…„๋ฐ–์— ์•ˆ ๋์ง€๋งŒ ๋งค์šฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ด์•ผ ํ•  ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์ •ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ด๊ฒƒ์ด ์ œ๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ˆ์ƒํ–ˆ๋˜ ๋Œ€๋กœ ์Šฌ๋ผ์ด๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์‹œ๊ฐ„์„ ๋‹ค ์จ๋ฒ„๋ ธ์–ด์š”. ๊ทธ๋ฆฌ๊ณ  ์Šฌ๋ผ์ด๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž๋ฆฌ์— ์žˆ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•˜๋‹ค๋Š” ๋ง์”€์„ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚จ์€ ์ปจํผ๋Ÿฐ์Šค๋„ ์ฆ๊ฑฐ์šฐ์‹ค ๊ฑฐ๋ผ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์งˆ๋ฌธ :

์˜ˆ๋ฅผ ๋“ค์–ด ํ–‰์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๋‘ ๋ฒˆ์งธ ์„ธ์…˜์—์„œ ์ „์ฒด ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ์˜๋„ ์ž ๊ธˆ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Postgres์— ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SELECT๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด AccessShareLock์ด ๋ฐœํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ํ…Œ์ด๋ธ”์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ํ–‰์„ ์‚ญ์ œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ „์ฒด ํ…Œ์ด๋ธ”๊ณผ ํ–‰์— ๋Œ€ํ•ด ์ด AccessShareLock์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๊ตฐ๊ฐ€ ๋™์‹œ์— ์ „์ฒด ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์™„๋ฃŒ๋˜๋ฉด ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฑฐ๊ธฐ์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ๋™์•ˆ์—๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•ด๋ณด์ž. ์‚ญ์ œ ์˜ˆ์‹œ๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ „์ฒด ํ…Œ์ด๋ธ” ์œ„์˜ ํ–‰์— ๋ฐฐํƒ€์  ์ž ๊ธˆ์ด ์–ด๋–ป๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ž ๊ธˆ ์ „์šฉ์ฒ˜๋Ÿผ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ?

๋„ค, ๊ทธ๋Ÿด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. SELECT๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ShareExclusive๋ฅผ ๊ฐ–๊ฒŒ ๋œ ๋‹ค์Œ ์ด๋ฅผ Row Exclusive๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”? ๊ทธ๋Ÿฌ๋‚˜ ๋†€๋ž๊ฒŒ๋„ ์ด๋Š” ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ž ๊ธˆ ์ˆ˜์ค€์„ ๋†’์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋ณธ์งˆ์ ์œผ๋กœ ์‚ญ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ์ž ๊ธˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด ์ž ๊ธˆ ์žฅ์น˜๋ฅผ ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋„ ์—ฌ์ „ํžˆ ์‚ญ์ œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฑด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•„์š”. ์ฆ‰, ๋‚ฎ์€ ๋ ˆ๋ฒจ์ผ ๋•Œ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ๋ฒจ์„ ์˜ฌ๋ ค๋„ ํ…Œ์ด๋ธ”์ด ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋” ๊ฐ•๋ ฅํ•œ ์ž ๊ธˆ์„ ๋„์ž…ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ์ž ๊ธˆ์„ ํฌ๊ธฐํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ž ๊ธˆ ์—์Šค์ปฌ๋ ˆ์ด์…˜ ์‚ฌ๋ก€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ „๋ฐ˜์ ์œผ๋กœ ์˜ˆ๋ฐฉ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ•˜๋ฏ€๋กœ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฌผ์–ด๋ด์ฃผ์…”์„œ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์„ธ์…˜์ด ๋งŽ๊ณ , ์‚ฌ์šฉ์ž ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ๊ต์ฐฉ์ƒํƒœ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

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

๊ท€ํ•˜์˜ ๊ณต์—ฐ์— ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! Vacuum Full์— ๋Œ€ํ•ด ๋ง์”€ํ•˜์…จ๋Š”๋ฐ, ์ œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด Vacuum Full์€ ๋ณ„๋„์˜ ์ €์žฅ์†Œ์— ์žˆ๋Š” ๋ ˆ์ฝ”๋“œ์˜ ์ˆœ์„œ๋ฅผ ์™œ๊ณกํ•˜๋ฏ€๋กœ ํ˜„์žฌ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ง„๊ณต ์ „์ฒด๊ฐ€ ๋ฐฐํƒ€์  ์ž ๊ธˆ ์•ก์„ธ์Šค๋ฅผ ์ทจํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ด๋ฉฐ ์“ฐ๊ธฐ ์ž‘์—…๊ณผ ์ถฉ๋Œํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

Postgres์— ์ž ๊ธˆ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด Oracle์—์„œ๋Š” "์—…๋ฐ์ดํŠธ ์„ ํƒ"์ด๋ผ๊ณ  ์“ฐ๊ณ  ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์ „์— 50์ดˆ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์šฉํ•˜๊ธฐ์—๋Š” ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Postgres์—์„œ๋Š” ์ „ํ˜€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์–ด๋Š ์ •๋„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ž ๊ธˆ์— ๋Œ€ํ•œ ์‹œ๊ฐ„ ์ œํ•œ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰์‹œ ์ž ๊ธˆ์„ ์–ป์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ no way ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž ๊ธˆ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋˜๋Š” ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ตฌ๋ฌธ ์ˆ˜์ค€์—์„œ๋Š” ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋ฒ„์—์„œ ๋ณ€์ˆ˜๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์Šฌ๋ผ์ด๋“œ 75๋ฅผ ์—ด ์ˆ˜ ์žˆ๋‚˜์š”?

๋„ค.

Postgres ์ž ๊ธˆ ๊ด€๋ฆฌ์ž ์ž ๊ธˆ ํ•ด์ œ. ๋ธŒ๋ฃจ์Šค ๋ชธ์ง€์•ˆ

๊ทธ๋ฆฌ๊ณ  ๋‚ด ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‘ ์—…๋ฐ์ดํŠธ ํ”„๋กœ์„ธ์Šค ๋ชจ๋‘ 703์„ ์˜ˆ์ƒํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Postgres๊ฐ€ ์™œ ์ด๋Ÿฐ ์ผ์„ ํ•˜๋Š”์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 703์ด ๋งŒ๋“ค์–ด์กŒ์„ ๋•Œ๋Š” 702๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  704์™€ 705๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ์•„์ง ์•„๋ฌด๊ฒƒ๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์—‡์„ ๊ธฐ๋Œ€ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Postgres๋Š” ์ด๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ž ๊ธˆ์„ ์–ป์„ ์ˆ˜ ์—†์œผ๋ฉด ์ด๋ฏธ ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— โ€œWhatโ€™s the point inprocess you?โ€๋ผ๊ณ  ์”๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๊ณต์ค‘์— ๋งค๋‹ฌ์•„ ๋†“์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „ํ˜€ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋‚˜์š”? 702๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•˜๊ณ  703์ด ์ž ๊ธˆ์„ ์ˆ˜์‹ ํ•˜์ž๋งˆ์ž ์‹œ์Šคํ…œ์ด ๋‹ค์‹œ ๋Œ์•„์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋…€๋Š” ์ด์ œ ์šฐ๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋‘ ๋ช… ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘˜ ๋‹ค ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

Postgres๊ฐ€ ์™œ ์ด๋Ÿฐ ์ผ์„ ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ f๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐโ€ฆ ์ด๊ฒƒ์€ ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋œ ์šฉ์–ด๊ฐ€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์„ฑ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ด€์›์ด 20๋ช…์ด๋”๋ผ๋„ ๋ชจ๋‘๊ฐ€ ํ•˜๋‚˜์˜ ์„ฑ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋•Œ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ‘์ž๊ธฐ ๊ทธ๋“ค์€ ๋ชจ๋‘ ๋™์‹œ์— ๊นจ์–ด๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‘๊ฐ€ ๋ฐ˜์‘ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ชจ๋‘๊ฐ€ 703์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ๋” ๋งŒ๋“ค์–ด ๋†“์•˜์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ชจ๋‘๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์ฆ‰์‹œ ๊ทธ๋“ค์„ ๋ชจ๋‘ ์ •๋ ฌํ•ด ๋†“์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ดํ›„์— ์ƒ์„ฑ๋œ ๋‹ค๋ฅธ ์ƒˆ ์š”์ฒญ(์˜ˆ: 707)์ด ๋‚˜ํƒ€๋‚˜๋ฉด ๋‹ค์‹œ ๋น„์–ด ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ํ˜„ ๋‹จ๊ณ„์—์„œ 702๊ฐ€ 703์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ณ  ๊ทธ ์ดํ›„์— ์˜ค๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ์ด ๋ถ„์•ผ์— ์ง„์ž…ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ์›จ์ดํ„ฐ๊ฐ€ ๋– ๋‚˜์ž๋งˆ์ž ์—…๋ฐ์ดํŠธ ์ „ ๊ทธ ์ˆœ๊ฐ„์— ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ๋™์ผํ•œ ํ† ํฐ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ด์„œ ์ œ๋Œ€๋กœ ์ฃผ๋ฌธํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”.

๋‚˜๋Š” ํ•ญ์ƒ ์ด๊ฒƒ์„ ๋‹ค์†Œ ์ด์ƒํ•œ ํ˜„์ƒ์œผ๋กœ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๊ธฐ์„œ๋Š” ์ „ํ˜€ ๋‚˜์—ดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์ƒˆ๋กœ์šด ์ž๋ฌผ์‡ ๋ฅผ ์ค„ ๋•Œ๋งˆ๋‹ค ์šฐ๋ฆฌ๋Š” ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋ชจ๋‘ ์ณ๋‹ค๋ณด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ชจ๋‘ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋“ค์–ด์˜ค๋Š” ์ƒˆ๋กœ์šด ์‚ฌ๋žŒ์€ ๋‹ค์Œ ์‚ฌ๋žŒ์ด ์ฒ˜๋ฆฌ๋ฅผ ๋งˆ์นœ ํ›„์—๋งŒ ๋Œ€๊ธฐ์—ด์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์•„์ฃผ ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

705๊ฐ€ 704๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ๋…ผ๋ฆฌ์ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์œผ๋กœ๋Š” ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊นจ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊นจ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”๊ฐ€? ๋งจ ์œ„์— ์žˆ๋Š” 703์ด ์ž์‹ ์˜ ๊ฑฐ๋ž˜ ID๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐจ๋‹จํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Postgres์˜ ์ž‘๋™ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  703์€ ์ž์ฒด ํŠธ๋žœ์žญ์…˜ ID๋กœ ์ฐจ๋‹จ๋˜๋ฏ€๋กœ ๋ˆ„๊ตฐ๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด 703์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณธ์งˆ์ ์œผ๋กœ 703์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์™„๋ฃŒ ํ›„์—์•ผ ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๊นจ์–ด๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด ๊ณผ์ •์ด ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ชจ๋“  ๊ฒƒ์„ ์ ์ง„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ํ™œ์„ฑํ™”๋˜๋Š”์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ด์ œ ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊นจ์šธ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฌด์ž‘์œ„๋กœ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊นจ์šธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜ ๋‹ค ์ฃผ๋ชฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ๋Š” CP-๋ฌดํ•œ๋Œ€๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋‚˜์ค‘์— ๊นจ์–ด๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‚˜์ค‘์— ๋ธ”๋ก์„ ๊นจ์šด ๊ฒฝ์šฐ ๋ฐฉ๊ธˆ ๋ธ”๋ก์„ ๋ฐ›์€ ์‚ฌ๋žŒ์„ ๊ธฐ๋‹ค๋ฆฌ๋ฏ€๋กœ ์ •ํ™•ํžˆ ๋ˆ„๊ฐ€ ๋จผ์ € ๊นจ์–ด๋‚ ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋งŒ๋“ค์–ด๋‚ด๊ธฐ๋งŒ ํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ๋ฌด์ž‘์œ„ ์ˆœ์„œ๋กœ ๊ทธ๋“ค์„ ๊นจ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด Egor Rogov์˜ ์ž๋ฌผ์‡ ์— ๊ด€ํ•œ ๊ธฐ์‚ฌ. ๋ณด์„ธ์š”, ๊ทธ๊ฒƒ๋“ค์€ ๋˜ํ•œ ํฅ๋ฏธ๋กญ๊ณ  ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ฃผ์ œ๋Š” ๋งค์šฐ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ๊ณ ๋งˆ์›Œ์š”, ๋ธŒ๋ฃจ์Šค!

์ถœ์ฒ˜ : habr.com

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