์ธ์Šคํ„ด์Šค์˜ ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ตœ์ ํ™”

์ด ๋ฌธ์„œ์—์„œ๋Š” Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ด€๋ฆฌ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ ํ•ญ๋ชฉ ์‹๋ณ„

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ธก์ •ํ•ญ๋ชฉ ํƒ์ƒ‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์‹๋ณ„

์ธก์ •ํ•ญ๋ชฉ ํƒ์ƒ‰๊ธฐ์˜ database/memory/components.usage ์ธก์ •ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ํ†ต๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ ์ฟผ๋ฆฌ์˜ ์„ค๋ช… ๊ณ„ํš ๋ถ„์„

์ฟผ๋ฆฌ ํ†ต๊ณ„๋Š” Cloud SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ง„๋‹จํ•˜๊ณ  ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ํ†ต๊ณ„์—์„œ๋Š” ์žฅ๊ธฐ ์‹คํ–‰ ์ฟผ๋ฆฌ ๋ชฉ๋ก๊ณผ ํ•จ๊ป˜ ์„ค๋ช… ๊ณ„ํš(PostgreSQL ๋ฌธ์„œ)์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์„ค๋ช… ๊ณ„ํš์„ ๊ฒ€ํ† ํ•˜๊ณ  ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์Šค์บ” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋Š” ์ฟผ๋ฆฌ ๋ถ€๋ถ„์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์‹คํ–‰ ์‹œ๊ฐ„์— ๊ด€๊ณ„์—†์ด ์ฟผ๋ฆฌ ํ†ต๊ณ„๋Š” ๋ชจ๋“  ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ณ„ํš์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋Š” ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‹๋ณ„ํ•˜์—ฌ ์–ด๋–ค ์ฟผ๋ฆฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜ค๋žซ๋™์•ˆ ์ฐจ๋‹จํ•˜๋Š”์ง€ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ PostgreSQL ์Šค์บ” ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋น„ํŠธ๋งต ํž™ ์Šค์บ”
  • ๋น ๋ฅธ ์ •๋ ฌ
  • ํ•ด์‹œ ์กฐ์ธ ๋˜๋Š” ํ•ด์‹œ

Gemini ์ง€์› ์ธ์Šคํ„ด์Šค์˜ ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ๊ด€๋ จ ๋กœ๊ทธ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‹ค์šดํƒ€์ž„์œผ๋กœ ์ด์–ด์ง€๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ(OOM) ๋Œ€์‹  Gemini๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋†’์€ ์ฟผ๋ฆฌ ์‹คํ–‰ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‹ค์šดํƒ€์ž„์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ์›์ธ์ด ๋˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋กœ๊ทธ์—์„œ ๋‹ค์Œ ํ•ญ๋ชฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  (...timestampโ€ฆ.) db=postgres, user=customer FATAL: terminating connection due to administrator command

OOM ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์ข…๋ฃŒ๋œ ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์ฟผ๋ฆฌ๋ฅผ ์บก์ฒ˜ํ•˜๋Š” ๋‹ค์Œ PostgreSQL์šฉ Cloud SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๋Š” ์›๋ž˜ ์ฟผ๋ฆฌ๊ฐ€ ์ •๊ทœํ™”๋œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

  db=postgres,user=customer LOG:  postgres process with PID 1734 for the query "SELECT COUNT(product) AS item_count FROM test_table WHERE product_type = $1 AND product LIKE $2 AND c6_2 IN ($3,$4,$5,$6,$7)" has been cancelled.

๋‹ค์Œ ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€์—๋„ ์•Œ๋ฆผ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  • ์ง€๋‚œ 24์‹œ๊ฐ„ ๋™์•ˆ ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
  • ์ง€๋‚œ 24์‹œ๊ฐ„ ๋‚ด์— ์ทจ์†Œ๋œ ์ •๊ทœํ™”๋œ ์ฟผ๋ฆฌ ๋ชฉ๋ก
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ตœ์ ํ™”์— ๋Œ€ํ•œ Google ๋ฌธ์„œ ๋งํฌ

๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ - ๊ถŒ์žฅ์‚ฌํ•ญ

๋‹ค์Œ ๊ถŒ์žฅ์‚ฌํ•ญ์€ ์ผ๋ฐ˜์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์—์„œ ๊ณ„์† ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฒฐ๊ตญ out of memory ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ํ™•๋ฅ ์ด ๋†’์Šต๋‹ˆ๋‹ค. PostgreSQL ๋˜๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ˆ˜์š”๋กœ ์ธํ•ด ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๋ฉด PostgreSQL ๋กœ๊ทธ์— Out of Memory ์ปค๋„ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  PostgreSQL ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฒฐ๊ตญ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Out of Memory: Killed process 12345 (postgres)

OOM ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ๋Š” ํ™œ์„ฑ ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๋งŽ์€ work_mem ๊ฐ’์ด ๋†’์„ ๋•Œ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ OOM์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ๋˜๋Š” PostgreSQL์šฉ Cloud SQL ์ธ์Šคํ„ด์Šค์—์„œ OOM์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • work_mem ์„ค์ •

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

  • ํ™œ์„ฑ ์„ธ์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง

    ๊ฐ ์—ฐ๊ฒฐ์€ ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ™œ์„ฑ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

      SELECT
        state,
        usename,
        count(1)
      FROM
        pg_stat_activity
      WHERE
        pid <> pg_backend_pid()
      GROUP BY
        state,
        usename
      ORDER BY
        1;
    

    ํ™œ์„ฑ ์„ธ์…˜์ด ๋งŽ์€ ๊ฒฝ์šฐ ํ™œ์„ฑ ์„ธ์…˜ ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ทผ๋ณธ ์›์ธ(์˜ˆ: ํŠธ๋žœ์žญ์…˜ ์ž ๊ธˆ)์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

  • shared_buffers ์„ค์ •

    shared_buffers๊ฐ€ ๋†’์€ ๊ฐ’์œผ๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ work_mem๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์ž‘์—…์ด๋‚˜ ์ƒˆ ์—ฐ๊ฒฐ ์„ค์ •์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก shared_buffers ๊ฐ’์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

    ์บ์‹œ ์ ์ค‘๋ฅ 

    PostgreSQL์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€์žฅ ์ž์ฃผ ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์— ๋ณด๊ด€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ๊ณต์œ  ๋ฒ„ํผ์— ์บ์‹œ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์— ์ง์ ‘ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์บ์‹œ ์ ์ค‘์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ  ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์˜ ๊ณต์œ  ๋ฒ„ํผ๋กœ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ํด๋ผ์ด์–ธํŠธ์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์บ์‹œ ๋ถ€์ ์ค‘์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์บ์‹œ ์ ์ค‘๋ฅ ์€ ์บ์‹œ๊ฐ€ ์ฒ˜๋ฆฌํ•œ ์ฝ˜ํ…์ธ  ์š”์ฒญ์„ ์ˆ˜์‹ ๋œ ์š”์ฒญ๊ณผ ๋น„๊ตํ•ด์„œ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. PostgreSQL ์ธ์Šคํ„ด์Šค์˜ ํ…Œ์ด๋ธ” ์š”์ฒญ์— ๋Œ€ํ•œ ์บ์‹œ ์ ์ค‘๋ฅ ์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    SELECT
      sum(heap_blks_read) as heap_read,
      sum(heap_blks_hit)  as heap_hit,
      sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) as ratio
    FROM
      pg_statio_user_tables;
    

    PostgreSQL ์ธ์Šคํ„ด์Šค์˜ ์ƒ‰์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์บ์‹œ ์ ์ค‘๋ฅ ์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      SELECT
        sum(idx_blks_read) as idx_read,
        sum(idx_blks_hit)  as idx_hit,
        (sum(idx_blks_hit) - sum(idx_blks_read)) / sum(idx_blks_hit) as ratio
      FROM
        pg_statio_user_indexes;
    

    ์ผ๋ฐ˜์ ์œผ๋กœ 95~99%์˜ ์บ์‹œ ์ ์ค‘๋ฅ ์ด ์ ์ ˆํ•œ ๊ฐ’์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

  • PostgreSQL์šฉ Cloud SQL์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด huge_pages ํ”Œ๋ž˜๊ทธ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. huge_pages์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ PostreSQL ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  • max_locks_per_transaction ์„ค์ •

    max_locks_per_transaction ๊ฐ’์€ ๋™์‹œ์— ์ž ๊ธ€ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์ธ 64๊ฐœ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž‘์—… ์ค‘์ธ ๋ฐ์ดํ„ฐ ์„ธํŠธ ๊ทœ๋ชจ๊ฐ€ ํฌ๋ฉด OOM์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. OOM์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก max_locks_per_transaction ๊ฐ’์„ ์ถฉ๋ถ„ํžˆ ๋†’์ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

    max_locks_per_transaction ๊ฐ’์€ max_locks_per_transaction * (max_connections + max_prepared_transactions)๊ฐœ์˜ ๊ฐ์ฒด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ์ฒด๊ฐ€ 300,000๊ฐœ์ด๊ณ  max_connections ๊ฐ’์ด 200์ด๋ฉด max_locks_per_transaction์€ 1,500์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • max_pred_locks_per_transaction ์„ค์ •

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

  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์—ฌ์ „ํžˆ ๋†’๊ณ  ์ฟผ๋ฆฌ๊ฐ€ ํƒ€๋‹นํ•œ ํŠธ๋ž˜ํ”ฝ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋ฉด ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค ์ˆ˜๋ฅผ ๋Š˜๋ ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„์ •์ƒ ์ข…๋ฃŒ๋‚˜ ๋‹ค์šดํƒ€์ž„์„ ๋ฐฉ์ง€ํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„