PostgreSQL ํŠœ๋‹์„ ์œ„ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜.โ€ ๋‹ˆ์ฝœ๋ผ์ด ์‚ฌ๋ชจํฌ๋ฐœ๋กœํ”„

Nikolai Samokhvalov์˜ ๋ณด๊ณ ์„œ "PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜"์˜ ๋‚ด์šฉ์„ ์ฝ์–ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Shared_buffers = 25% โ€“ ๋งŽ์Šต๋‹ˆ๊นŒ, ์ ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ ๋งž๋‚˜์š”? ๋‹ค์†Œ ์˜ค๋ž˜๋œ ๊ถŒ์žฅ ์‚ฌํ•ญ์ด ๊ท€ํ•˜์˜ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•œ์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‚˜์š”?

์ด์ œ "์„ฑ์ธ์ฒ˜๋Ÿผ" postgresql.conf ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฌธ์ œ์— ์ ‘๊ทผํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ๋งน๋ชฉ์ ์ธ "์ž๋™ ํŠœ๋„ˆ"์˜ ๋„์›€์ด๋‚˜ ๊ธฐ์‚ฌ ๋ฐ ๋ธ”๋กœ๊ทธ์˜ ์˜ค๋ž˜๋œ ์กฐ์–ธ์ด ์•„๋‹ˆ๋ผ ๋‹ค์Œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์—„๊ฒฉํ•˜๊ฒŒ ๊ฒ€์ฆ๋œ ์‹คํ—˜์€ ์ž๋™์œผ๋กœ ๋Œ€๋Ÿ‰์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉฐ ๊ฐ€๋Šฅํ•œ ํ•œ "์ „ํˆฌ"์— ๊ฐ€๊นŒ์šด ์กฐ๊ฑด์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  2. DBMS์™€ OS์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด.

๋‚ธ์‹œ CLI ์‚ฌ์šฉ(https://gitlab.com/postgres.ai/nancy), ๋‹ค์–‘ํ•œ ์ƒํ™ฉ, ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ํŠน์ • ์˜ˆ(์•…๋ช… ๋†’์€ shared_buffers)๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์ธํ”„๋ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ๋กœ๋“œ์— ๋Œ€ํ•œ ์ตœ์ ์˜ ์„ค์ •์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•œ ์‹คํ—˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. XNUMX๊ฐœ์›” ์กฐ๊ธˆ ๋„˜๊ฒŒ ์ง€์†๋œ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๋‚˜์— ๋Œ€ํ•ด ์กฐ๊ธˆ. 14๋…„ ๋„˜๊ฒŒ Postgres๋ฅผ ์‚ฌ์šฉํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์ˆ˜์˜ ์†Œ์…œ ๋„คํŠธ์›Œํ‚น ํšŒ์‚ฌ๊ฐ€ ์„ค๋ฆฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Postgres๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ ํ˜„์žฌ๋„ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์„ธ๊ณ„ 2์œ„์ธ Meetup์˜ RuPostgres ๊ทธ๋ฃน๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ์„œํžˆ 2๋ช…์— ๊ฐ€๊นŒ์›Œ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. RuPostgres.org.

๊ทธ๋ฆฌ๊ณ  Highload๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ ์ปจํผ๋Ÿฐ์Šค์˜ PC์—์„œ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŠนํžˆ Postgres๋ฅผ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๊ทธ๋ฆฌ๊ณ  ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ์ €๋Š” ์—ฌ๊ธฐ์—์„œ 11๊ฐœ ์‹œ๊ฐ„๋Œ€์— ๋Œ€ํ•œ Postgres ์ปจ์„คํŒ… ์—…๋ฌด๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์ด ๋ณด๊ณ ์„œ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • "๋งŒ๋Šฅ ํ•ด๊ฒฐ์ฑ…" ๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค๋ช… - 8GB ๋˜๋Š” 25% shared_buffers๋ฅผ ์„ค์ •ํ•˜๋ฉด ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. shared_buffers์— ๊ด€ํ•œ ๋‚ด์šฉ์€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ•˜๋“œ์ฝ”์–ด "๋‚ด๋ถ€".

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ๊นŒ์š”?

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์ด ๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์ฒซ์งธ, ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ, ๋ฐฑ์—… ๋ฐฐํฌ ๋“ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ DBA์˜ ์ฃผ์š” ์ž„๋ฌด๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ฐพ์•„ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๊ทธ๋ฆฌ๊ณ  ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. Pg_stat_statements๋Š” ๋Š๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  pgBadger๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Postgres ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ์‹ฌ๊ฐํ•œ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ ‘๊ทผ ๋ฐฉ์‹์—์„œ๋Š” ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ด์ด "?"์™€ ๊ฐ™์€ ๊ทธ๋ฃน SELECT * FROM ํ…Œ์ด๋ธ”์„ ๋ณด๋ฉด ๋˜๋Š” Postgres 10๋ถ€ํ„ฐ "$"์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ธ๋ฑ์Šค ์Šค์บ”์ธ์ง€ ์‹œํ€€์Šค ์Šค์บ”์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์ข€์ฒ˜๋Ÿผ ์ ‘ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋ฉด ์ธ๋ฑ์Šค ์Šค์บ”์ด ๋œ๋‹ค. ๊ฑฐ๊ธฐ์— ํ…Œ์ด๋ธ”์˜ 90%๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๊ฐ’์„ ๋Œ€์ฒดํ•˜๋ฉด Postgres๊ฐ€ ํ†ต๊ณ„๋ฅผ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— seq ์Šค์บ”์ด ๋ถ„๋ช…ํ•ด์ง‘๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ด์ง€๋งŒ ์ด๋Š” pg_stat_statements์˜ ํฐ ๋‹จ์ ์ž…๋‹ˆ๋‹ค.

๋กœ๊ทธ ๋ถ„์„์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ์›์น™์ ์œผ๋กœ "log_min_duration_statement = 0"์„ ๊ฐ๋‹นํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด์„œ๋„ ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ „์ฒด ๊ทธ๋ฆผ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งค์šฐ ๋น ๋ฅธ ์ผ๋ถ€ ์ฟผ๋ฆฌ๋Š” ์—„์ฒญ๋‚œ ์–‘์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž„๊ณ„๊ฐ’ ๋ฏธ๋งŒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

DBA๋Š” ๋ฐœ๊ฒฌํ•œ ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๊นŒ?

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

  • ๊ตฌ์„ฑ์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค ์„ธํŠธ๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • SQL ์ฟผ๋ฆฌ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค(๊ฐ€์žฅ ์–ด๋ ค์šด ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค).
  • ์šฉ๋Ÿ‰์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•).

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

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

์ƒํ™œ ์˜ˆ

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๊ทธ๋ฆฌ๊ณ  XNUMX๋…„ ํ›„ ์šฐ๋ฆฌ์˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋Š˜ ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์‹คํ—˜์„ ํ†ตํ•ด ๊ณผ๊ฑฐ์˜ ๊ฒƒ๊ณผ ํ˜„์žฌ์˜ ๊ฒƒ์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์‹คํ—˜์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋„ค ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์šฐ๋ฆฌ๋Š” ์‹คํ—˜์„ ์‹œ์ž‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ pg_stat_statements๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์™ผ์ชฝ์€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ์ž…๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ - ๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ๋‚˜์š”?

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์™ผ์ชฝ์—์„œ๋Š” default_statistics_target = 100, ์˜ค๋ฅธ์ชฝ์—์„œ๋Š” =1. ์ด๊ฒƒ์ด ๋„์›€์ด ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด 000% ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๋‹ค๋ฅธ ์ง€์—ญ์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ. ์ˆ˜๋…„ ๋™์•ˆ ํ…Œ์ŠคํŠธ์—๋Š” CI ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ์—†์ด๋Š” ์ œ๋Œ€๋กœ ๋œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์‚ฐ์—…์„ ๊ด€์ฐฐํ•˜์—ฌ ๊ฒฐ๋ก ์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

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

์ œ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๋†’์€ ์ˆ˜์ค€์˜ ์ž๋™ํ™”๋Š” ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ๋งŽ์€ ์‹คํ—˜์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ŠคํŠธ๋ฆฌ๋ฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Nancy CLI - "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ตฌ์†Œ"์˜ ๊ธฐ์ดˆ

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ด ์ผ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ €๋Š” ๊ฑฐ์˜ XNUMX๋…„ ์ „์ธ XNUMX์›”์— ์ด๋Ÿฌํ•œ ์•„์ด๋””์–ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์˜คํ”ˆ ์†Œ์Šค์— Nancy CLI๋ผ๋Š” ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ตฌ์‹ค์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฐ˜์ด๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๋‚ธ์‹œ โ€” Gitlab์˜ ์˜คํ”ˆ ์†Œ์Šค์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค, ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋“œ์— ๋งํฌ๋ฅผ ๊ฑธ์–ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ํด๋ฆญํ•˜๋ฉด ๊ฑฐ๊ธฐ์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„์›€ ๋ชจ๋“ ๋ฉด์—์„œ.

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์ด๊ฒƒ์€ ์–ด๋””์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ์ด๋Š” ๋กœ์ปฌ์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋””์„œ๋‚˜ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ MacBook์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค๊ฐ€ ํ•„์š”ํ•ด์š”. ๊ฐ€์ž. ๊ทธ๊ฒŒ ๋‹ค์•ผ. ํ•˜๋“œ์›จ์–ด๋‚˜ ๊ฐ€์ƒ ๋จธ์‹  ๋“ฑ ์–ด๋Š ๊ณณ์—์„œ๋“  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ EC2 ์ธ์Šคํ„ด์Šค์˜ Amazon์—์„œ ์›๊ฒฉ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋งค์šฐ ๋ฉ‹์ง„ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด์ œ ์šฐ๋ฆฌ๋Š” i500 ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์–ด๋ฆฐ ์ธ์Šคํ„ด์Šค๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ i3-3-xlarge๊นŒ์ง€ 16๊ฐœ ์ด์ƒ์˜ ์‹คํ—˜์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  500๋ฒˆ์˜ ์‹คํ—˜์— 64๋‹ฌ๋Ÿฌ์˜ ๋น„์šฉ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ 15๋ถ„ ๋™์•ˆ ์ง€์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ŠคํŒŸ์ด ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ธํ•ด ๋งค์šฐ ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค. Amazon์˜ ์ดˆ๋‹น ์ฒญ๊ตฌ์•ก ์ธ 70 % ํ• ์ธ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋งŽ์€ ์ผ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์—ฐ๊ตฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๊ทธ๋ฆฌ๊ณ  Postgres์˜ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋ฒ„์ „์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ์˜ค๋ž˜๋œ ๋ฒ„์ „๊ณผ ์ƒˆ๋กœ์šด 12๋ฒˆ์งธ ๋ฒ„์ „์„ ์™„์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ฆฌ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์šฐ๋ฆฌ๋Š” ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ:

  • ๋คํ”„/SQL ํŒŒ์ผ.
  • ์ฃผ์š” ๋ฐฉ๋ฒ•์€ PGDATA ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์›์น™์ ์œผ๋กœ ๋ฐฑ์—… ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐฑ์—…์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฑฐ๊ธฐ์—์„œ ํด๋ก ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด Amazon ๋ฐ Google๊ณผ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ์˜คํ”ผ์Šค๊ฐ€ ์ด๋ฅผ ๋Œ€์‹ ํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋Š” ์‹ค์ œ ํ”„๋กœ๋•์…˜์„ ๋ณต์ œํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํŽผ์น˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ ๋ฐฉ๋ฒ•์€ Postgres์—์„œ ์–ด๋–ค ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋Š” ์—ฐ๊ตฌ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. pgbench ์ž…๋‹ˆ๋‹ค. pgbench๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ํ•˜๋‚˜์˜ "db-pgbench" ์˜ต์…˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ์—๊ฒŒ ๊ทœ๋ชจ๋ฅผ ๋งํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ช…์‹œ๋œ ๋Œ€๋กœ ๋ชจ๋“  ๊ฒƒ์ด ํด๋ผ์šฐ๋“œ์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์„ ๋กœ๋“œํ•˜์„ธ์š”.

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

  • ์ผ์ข…์˜ SQL์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ผ์ข…์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ™•์ธํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ANALAZE๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ง„๊ณต์ด ์žˆ๊ธฐ ์ „๊ณผ ์ง„๊ณต์ด ๋๋‚œ ํ›„์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  SQL.
  • ๊ตฌ์„ฑ์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ๋ผ๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด Amazon์—์„œ 100๊ฐœ์˜ ๊ฐ’์„ ํ™•์ธํ•˜๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ช‡ ์‹œ๊ฐ„ ์•ˆ์— ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ๋ผ๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ๋ช‡ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ ์ค‘์ธ ํŒจ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ จ์˜ ํŒจ์น˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ ๋™์ผํ•œ pgdata๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Postgres๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ณ  ์บ์‹œ๊ฐ€ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ๋ถ€ํ•˜๋ฅผ ์šด์ „ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

  • pg ์Šค๋ƒ…์ƒท๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค.์Šคํƒฏ***. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์€ pg_stat_statements, pg_stat_kcacke์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์š”์ฒญ์„ ๋ถ„์„ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ํ™•์žฅ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  pg_stat_bgwriter์—๋Š” pgwriter ํ†ต๊ณ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฒดํฌํฌ์ธํŠธ์™€ ๋ฐฑ์—”๋“œ ์ž์ฒด๊ฐ€ ๋”ํ‹ฐ ๋ฒ„ํผ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณด๋Š” ๊ฒƒ์€ ๋ชจ๋‘ ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, shared_buffers๋ฅผ ์„ค์ •ํ•  ๋•Œ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์–ผ๋งˆ๋‚˜ ๊ต์ฒด๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.
  • Postgres ๋กœ๊ทธ๋„ ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ๋กœ๊ทธ โ€“ ์ค€๋น„ ๋กœ๊ทธ์™€ ๋กœ๋“œ ์žฌ์ƒ ๋กœ๊ทธ.
  • ๋น„๊ต์  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ FlameGraphs์ž…๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ๋กœ๋“œ ์žฌ์ƒ์„ ์œ„ํ•ด pgreplay ๋˜๋Š” pgbench ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ์ถœ๋ ฅ์€ ๊ธฐ๋ณธ ์ถœ๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ TPS๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ๋ณด์•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ ์ •๋ณด.
  • ๊ธฐ๋ณธ CPU ๋ฐ IO ๊ฒ€์‚ฌ. ์ด๋Š” Amazon์˜ EC2 ์ธ์Šคํ„ด์Šค์— ๋” ๋งŽ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ์—์„œ 100๊ฐœ์˜ ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๊ทธ๊ณณ์—์„œ 100๊ฐœ์˜ ๋‹ค๋ฅธ ์‹คํ–‰์„ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ 10๋ฒˆ์˜ ์‹คํ—˜์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ ๋ˆ„๊ตฐ๊ฐ€์— ์˜ํ•ด ์–ต์••๋ฐ›๊ณ  ์žˆ๋Š” ๊ฒฐํ•จ ์žˆ๋Š” ์‚ฌ๋ก€๋ฅผ ์ ‘ํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์ด ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ฑฐ์˜ ๋‚จ์•„ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋Š” ํ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Alexey Kopytov์˜ sysbench์˜ ๋„์›€์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, CPU ์ž‘๋™ ๋ฐฉ์‹๊ณผ IO ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์—ฌ๋Ÿฌ ํšŒ์‚ฌ์˜ ์‚ฌ๋ก€๋ฅผ ๋ณด๋ฉด ๊ธฐ์ˆ ์ ์ธ ์–ด๋ ค์›€์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

https://gist.github.com/NikolayS/08d9b7b4845371d03e195a8d8df43408

๋ฌธ์ œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ์„ , ๋กœ๊ทธ์— ์–ด๋–ค ์ŠคํŠธ๋ฆผ์ด ๊ธฐ๋ก๋  ๊ฒƒ์ธ์ง€ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. pg_stat_statements๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ์ฟผ๋ฆฌ(๋งํฌ๋Š” ์Šฌ๋ผ์ด๋“œ์— ์žˆ์Œ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๋‹น ๊ธฐ๋ก๋˜๋Š” ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋Œ€๋žต์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด ์š”์ฒญ์ด ์ดˆ๋‹น 802๋ฒˆ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ดˆ๋‹น bytes_per - 300 kB/s๊ฐ€ ํ”Œ๋Ÿฌ์Šค ๋˜๋Š” ๋งˆ์ด๋„ˆ์Šค๋กœ ๊ธฐ๋ก๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์›์น™์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๊ทธ๋Ÿฌํ•œ ํ๋ฆ„์„ ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

ํ•˜์ง€๋งŒ! ์‚ฌ์‹ค์€ ๋‹ค์–‘ํ•œ ๋กœ๊น… ์‹œ์Šคํ…œ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ๋žŒ๋“ค์˜ ๊ธฐ๋ณธ๊ฐ’์€ ๋Œ€๊ฐœ "syslog"์ž…๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๊ทธ๋ฆฌ๊ณ  syslog๊ฐ€ ์žˆ์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ฆผ์ด ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. pgbench๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ ๋กœ๊น…์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๋กœ๊น…ํ•˜์ง€ ์•Š์Œ - ์™ผ์ชฝ ์—ด์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 161TPS๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. syslog๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Amazon์˜ Ubuntu 000์—์„œ 16.04TPS๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋กœ๊น… ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์ƒํ™ฉ์ด ํ›จ์”ฌ ์ข‹์•„์ง‘๋‹ˆ๋‹ค. ์ฆ‰, ์šฐ๋ฆฌ๋Š” ํ•˜๋ฝํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์ง€๋งŒ ๊ฐ™์€ ์ •๋„๋Š” ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๊ทธ๋ฆฌ๊ณ  Journald๋„ ์ฐธ์—ฌํ•˜์—ฌ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ๊ทธ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” CentOS 7์—์„œ๋Š” TPS๊ฐ€ 44๋ฐฐ๋‚˜ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

  • IOPS ๋ฐ ์“ฐ๊ธฐ ํ๋ฆ„์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋กœ๊น… ์‹œ์Šคํ…œ์„ ํ™•์ธํ•˜์„ธ์š”.
  • ์˜ˆ์ƒ ๋ถ€ํ•˜๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ํฐ ๊ฒฝ์šฐ ์ƒ˜ํ”Œ๋ง์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

pg_stat_statements๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๊ทธ๊ฒƒ์€ ๊ฑฐ๊ธฐ์— ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์š”์ฒญ ๊ทธ๋ฃน์„ ํŒŒ์ผ์—์„œ ํŠน๋ณ„ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ทจํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ pgbench์˜ ๋งค์šฐ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” "-f" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ์‚ฝ์ž…ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

"-f"๋ฅผ ๋งŽ์ด ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์— "@"์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ํŒŒ์ผ์ด ์–ด๋–ค ๊ณต์œ ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, 10%์˜ ๊ฒฝ์šฐ์— ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๊ณ  20%์˜ ๊ฒฝ์šฐ์— ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๊ฐ€ ์ƒ์‚ฐ ํ˜„์žฅ์—์„œ ๋ณด๋Š” ๊ฒƒ๊ณผ ๋” ๊ฐ€๊นŒ์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

๊ทธ๋Š” ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ์ด์œ ๋กœ ํƒœ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋ง๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์™€์„œ ๊ธฐ๋ฐ˜์„ ์‚ดํŽด๋ณด๊ณ  ์กด์žฌํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ๊ทธ๋ฆฌ๊ณ  ์›์น™์ ์œผ๋กœ health_check๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ˆ™๋ จ๋œ DBA๋ผ๋ฉด health_check๋ฅผ ์ˆ˜ํ–‰ํ•˜์„ธ์š”. ์ธ๋ฑ์Šค ์‚ฌ์šฉ ๋“ฑ์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. OKmeter๊ฐ€ ์žˆ๋‹ค๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Postgres์— ๋Œ€ํ•œ ๋ฉ‹์ง„ ๋ชจ๋‹ˆํ„ฐ๋ง์ž…๋‹ˆ๋‹ค. OKmeter.io โ€“ ์„ค์น˜ํ•ด ์ฃผ์„ธ์š”. ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ ๋ฃŒ์ž…๋‹ˆ๋‹ค.

ํ•˜๋‚˜๋„ ์—†์œผ๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋ง์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ CPU, IO, ์˜ˆ์•ฝ์ด ์žˆ๊ณ  ๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋” ๋งŽ์€ ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. autovacuum์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€, ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. io์—์„œ๋Š” ์ฒดํฌํฌ์ธํŠธ๋ฅผ bgwriter ๋ฐ ๋ฐฑ์—”๋“œ ๋“ฑ์—์„œ ๋ถ„๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๋Œ€๊ธฐ์—…์— ๋„์›€์„ ์ค„ ๋•Œ ๋ญ”๊ฐ€๋ฅผ ๋นจ๋ฆฌ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ๊ทธ๋“ค์€ OKmeter๋ฅผ ๋นจ๋ฆฌ ๊ตฌ์ž…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๋“ค์€ XNUMX๊ฐœ์›” ์•ˆ์— ๊ทธ๊ฒƒ์„ ์‚ด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ํŒจํ‚ค์ง€๋Š” ์‹ ์†ํ•˜๊ฒŒ ๋ฐฐ์†กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ Postgres-checkup์ด๋ผ๊ณ  ๋ถˆ๋ €์Šต๋‹ˆ๋‹ค. ์˜ํ•™์ ์œผ๋กœ๋Š” ์ •๊ธฐ์ ์ธ ๊ฑด๊ฐ•๊ฒ€์ง„์ž…๋‹ˆ๋‹ค. ์ž๋™์ฐจ๋ฅผ ์ฃผ์ œ๋กœ ํ•œ๋‹ค๋ฉด ์œ ์ง€๋ณด์ˆ˜์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋žœ๋“œ์— ๋”ฐ๋ผ ์ž๋™์ฐจ ์ •๋น„๋Š” XNUMX๊ฐœ์›” ๋˜๋Š” XNUMX๋…„์— ํ•œ ๋ฒˆ์”ฉ ์‹ค์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์ง€ ์œ ์ง€๋ณด์ˆ˜ ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜์‹œ๋‚˜์š”? ์ฆ‰, ์ •๊ธฐ์ ์œผ๋กœ ์‹ฌ์ธต ์กฐ์‚ฌ๋ฅผ ํ•˜์‹œ๋‚˜์š”? ๋ฐ˜๋“œ์‹œ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—…์„ ํ•œ ๋‹ค์Œ ์ ๊ฒ€์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ๊ทธ๋Ÿฌํ•œ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆ๊ณผ XNUMX๊ฐœ์›” ์ •๋„ ์ „๋ถ€ํ„ฐ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋“ฑ์žฅํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์•„์ง ์–ด๋ฆฌ์ง€๋งŒ ๊ฑฐ๊ธฐ์—๋Š” ๋งŽ์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๊ฐ€์žฅ "์˜ํ–ฅ๋ ฅ ์žˆ๋Š”" ์ฟผ๋ฆฌ ๊ทธ๋ฃน ์ˆ˜์ง‘ - Postgres-checkup์—์„œ K003 ๋ณด๊ณ 

๊ทธ๋ฆฌ๊ณ  ๋ณด๊ณ ์„œ K๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์„ธ ๊ฐœ์˜ ๋ณด๊ณ ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿฐ ๋ณด๊ณ ์„œ K003์ด ์žˆ์Šต๋‹ˆ๋‹ค. total_time๋ณ„๋กœ ์ •๋ ฌ๋œ pg_stat_statements์˜ ์ƒ๋‹จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ ๊ทธ๋ฃน์„ total_time๋ณ„๋กœ ์ •๋ ฌํ•˜๋ฉด ๋งจ ์œ„์— ์‹œ์Šคํ…œ์„ ๊ฐ€์žฅ ๋งŽ์ด ๋กœ๋“œํ•˜๋Š” ๊ทธ๋ฃน, ์ฆ‰ ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•˜๋Š” ๊ทธ๋ฃน์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๊ทธ๋ฃน ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋” ์ด์ƒ ์š”์ฒญ์ด ์•„๋‹ˆ๋ผ ์š”์ฒญ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ถ”์ƒํ™”๋ฉ๋‹ˆ๋‹ค.

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

์–ด์ฉŒ๋ฉด ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ๋ณด๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋“œ๋ฌผ์ง€๋งŒ ์‚ฌ๋žŒ์ด 15์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋งค์šฐ ์งœ์ฆ๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ „์ฒด์ ์œผ๋กœ๋Š” ๋„ˆ๋ฌด ๋“œ๋ฌผ์–ด์„œ ๋ณผ ์ˆ˜ ์—†์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ž์›์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

๋‹ค์Œ์œผ๋กœ ์ดˆ๋‹น total_time์€ ์ œ๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์ธก์ •ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ดˆ๋‹น ์ดˆ ๋‹จ์œ„๋กœ ์ธก์ •๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‹œ์Šคํ…œ์ด ์ดˆ๋‹น ์ด ์š”์ฒญ ๊ทธ๋ฃน์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์ดˆ๋‹น XNUMX์ดˆ ์ด์ƒ์ด ๋ณด์ธ๋‹ค๋ฉด ์ฝ”์–ด๋ฅผ XNUMX๊ฐœ ์ด์ƒ ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งค์šฐ ์ข‹์€ ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด ์นœ๊ตฌ์—๊ฒŒ๋Š” ์ตœ์†Œํ•œ XNUMX๊ฐœ์˜ ์ฝ”์–ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ๋…ธํ•˜์šฐ์ž…๋‹ˆ๋‹ค. ์–ด๋””์„œ๋„ ์ด๋Ÿฐ ๊ฒƒ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ํ•˜์„ธ์š” - ์ด๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค - ์ดˆ๋‹น 100์ดˆ์ž…๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” CPU๊ฐ€ XNUMX%์ผ ๋•Œ ์ดˆ๋‹น XNUMX๋ถ„, ์ฆ‰ ์ด ์š”์ฒญ์—๋งŒ XNUMX๋ถ„์„ ์†Œ๋น„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ ์ดˆ๋‹น ํ–‰์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ๋ฐ˜ํ™˜ํ•œ ์ดˆ๋‹น ํ–‰ ์ˆ˜๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

๊ฐ ์ฟผ๋ฆฌ๋Š” ํ‰๊ท ์ ์œผ๋กœ ๋ช‡ ๊ฐœ์˜ ํ–‰์„ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์ด ๊ทธ๋ฃน์ด 8๊ฐœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค. ํ‰๊ท ์ ์œผ๋กœ ์บ์‹œ์—์„œ ๊ฐ€์ ธ์™€ ์ฝ์€ ์–‘์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ํ›Œ๋ฅญํ•˜๊ฒŒ ์บ์‹œ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ทธ๋ฃน์˜ ๊ฒฌ๊ณ ํ•œ ํžˆํŠธ์ž‘.

๊ทธ๋ฆฌ๊ณ  ๊ฐ ์ค„์˜ ๋„ค ๋ฒˆ์งธ ํ•˜์œ„ ๋ฌธ์ž์—ด์€ ์ „์ฒด์˜ ๋ช‡ ํผ์„ผํŠธ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ „ํ™”๊ฐ€ ์™”์Šต๋‹ˆ๋‹ค. 1์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ด ๊ทธ๋ฃน์ด ์–ด๋–ค ๊ธฐ์—ฌ๋ฅผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๊ทธ๋ฃน์˜ ๊ธฐ์—ฌ๋„๊ฐ€ 000% ๋ฏธ๋งŒ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋„ˆ๋ฌด ๋Š๋ ค์„œ ์ „์ฒด ๊ทธ๋ฆผ์—์„œ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฃน์€ ํ†ตํ™” ์š”๊ธˆ์ด 000%์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ „์ฒด ํ†ตํ™”์˜ 0,01%๊ฐ€ ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.

Total_time๋„ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ ๊ทธ๋ฃน์— ์ด ์ž‘์—… ์‹œ๊ฐ„์˜ 14%๋ฅผ ์†Œ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ - 11% ๋“ฑ

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ total_time์˜ 80-90%๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. โ€œ@โ€ ๋‹ค์Œ์—๋Š” ๋ฌด์—‡์„ ๋„ฃ์–ด์•ผ ํ•˜๋‚˜์š”? ์šฐ๋ฆฌ๋Š” ์ „ํ™”๋ฅผ ๋ณด๊ณ  ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ด€์‹ฌ์ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ  ์—ฌ๊ธฐ์— ๋งŽ์€ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ด ๋น„์œจ์„ ํ†ตํ•ด ๊ฐ ํŒŒ์ผ์˜ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ ์šฐ๋ฆฌ๋Š” pgbench๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ž‘์—…์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

K001๊ณผ K002๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

K001์€ 75๊ฐœ์˜ ํ•˜์œ„ ๋ฌธ์ž์—ด์ด ์žˆ๋Š” ํ•˜๋‚˜์˜ ํฐ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ ์ „์ฒด ๋ถ€ํ•˜์˜ ํŠน์ง•์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์—ด๊ณผ ๋‘ ๋ฒˆ์งธ ํ•˜์œ„ ํ–‰์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ดˆ๋‹น ์•ฝ 10์ดˆ, ์ฆ‰ ์ฝ”์–ด๊ฐ€ XNUMX๊ฐœ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฉ๋Ÿ‰์˜ ์•ฝ XNUMX%๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ด๋ ‡๊ฒŒ ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”์–ด๊ฐ€ XNUMX๊ฐœ๋ผ๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์ฐจ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ž์›์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

K002๋Š” ๋‚ด๊ฐ€ ์ฟผ๋ฆฌ ํด๋ž˜์Šค(์˜ˆ: SELECT, INSERT, UPDATE, DELETE)๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž ๊ธˆ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ SELECT FOR UPDATE๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—์„œ SELECT๋Š” ์ผ๋ฐ˜ ๋…์ž(๋ชจ๋“  ํ˜ธ์ถœ์˜ 82%์ด์ง€๋งŒ ๋™์‹œ์— total_time์—์„œ๋Š” 74%)๋ผ๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋งŽ์ด ํ˜ธ์ถœ๋˜์ง€๋งŒ ๋ฆฌ์†Œ์Šค๋ฅผ ๋œ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” "์˜ฌ๋ฐ”๋ฅธ shared_buffers๋ฅผ ์–ด๋–ป๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"๋ผ๋Š” ์งˆ๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์•„์ด๋””์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์–ผ๋งˆ๋‚˜ ๋ ์ง€, ์ฆ‰ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์–ผ๋งˆ๋‚˜ ๋ ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ TPS ๋˜๋Š” QPS๋กœ ์ธก์ •๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ํŠœ๋‹ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์ฐจ์—์„œ ์ดˆ๋‹น ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ํŠธ๋žœ์žญ์…˜์„ ์งœ๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ์˜ ๊ฒฝ์šฐ ์ •ํ™•ํžˆ ์ดˆ๋‹น 311์ž…๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

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

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ถŒ์žฅ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์งˆ๋ฌธ

์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‘ ์กฐ๊ฐ.

๋„ค, ๋‘ ์กฐ๊ฐ์ด์—์š”. ๋‚˜๋งŒ ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ ๋์–ด์š”. Nancy์™€ ์ œ๊ฐ€ ์ž‘์—…ํ•  ๋•Œ ํ•˜๋‚˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ „์ฒด ๊ทธ๋ฃน์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ธํƒ€ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ์›ํ•˜๋Š”๋งŒํผ ๊ฑฐ๊ธฐ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งŽ์€ ๊ฒƒ์„ ๋ฐ”๊พธ๋ฉด ์ž˜๋ชป๋œ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

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

๊ทธ๋ฆฌ๊ณ  ์งˆ๋ฌธ์ด ํ•˜๋‚˜ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์ Š๊ณ  ๋ฐœ์ „ ์ค‘์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ๋Š” ์ด๋ฏธ ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๊นŒ?

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

์‹คํ—˜์‹ค์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๋‚˜๋ฉด ์•„๋งˆ๋„ ํ”ผ๋“œ๋ฐฑ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋”” ๋ณด์ž. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š”! ์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์•„๋งˆ์กด ์ง€์›์ด ์žˆ๋‹ค๋Š” ๊ฑธ ๋ดค์Šต๋‹ˆ๋‹ค. GSP๋ฅผ ์ง€์›ํ•  ๊ณ„ํš์ด ์žˆ๋‚˜์š”?

์ข‹์€ ์งˆ๋ฌธ. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ์€ ๋ˆ์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ์–ด์„œ ๋™๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, localhost์—์„œ ์‹คํ–‰์„ ์‚ฌ์šฉํ•˜๋Š” ์ง€์›์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ณ  ๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์ €๋Š” Getlab, GSP์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Google์—๋Š” ์ €๋ ดํ•œ ์ž๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง ๊ทธ๋Ÿฌํ•œ ์กฐ์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์žˆ๋‹ค ??? ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ง€๋งŒ ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ๊ทธ๋“ค์€ ํ•ญ์ƒ 70% ํ• ์ธ๋งŒ ํ•˜๊ณ  ๊ฑฐ๊ธฐ ๊ฐ€๊ฒฉ์œผ๋กœ๋Š” ๋†€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ˜„์žฅ์—์„œ๋Š” ์ซ“๊ฒจ๋‚  ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๊ฐ€๊ฒฉ์„ 5~10% ์ธ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ž๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•˜์ง€๋งŒ ์–ธ์ œ๋“ ์ง€ ๊ทธ ์ž๋ฆฌ๋ฅผ ๋นผ์•—๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚จ๋“ค๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๋†’๊ฒŒ ์ž…์ฐฐํ•˜๋ฉด ๋‚˜์ค‘์— ์ฃฝ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Google์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜ ๋‹ค๋ฅธ ๋งค์šฐ ๋‚˜์œ ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ 24์‹œ๊ฐ„ ๋™์•ˆ๋งŒ ์‚ด์•„๊ฐ‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋•Œ๋กœ๋Š” 5์ผ ๋™์•ˆ ์‹คํ—˜์„ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ž‘์—…์€ ๋ถ€๋ถ„์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋•Œ๋กœ๋Š” ๋ถ€๋ถ„์ด ๋ช‡ ๋‹ฌ ๋™์•ˆ ์ง€์†๋ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”! ์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ฒ€์ง„์„ ์–ธ๊ธ‰ํ•˜์…จ๋Š”๋ฐ์š”. stat_statements ์˜ค๋ฅ˜๋Š” ์–ด๋–ป๊ฒŒ ๊ณ„์‚ฐํ•˜๋‚˜์š”?

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

์Šค๋ƒ…์ƒท ์‚ฌ์ด์— XNUMX~XNUMX๋ฒˆ์€ ๊ทธ ๊ณณ์œผ๋กœ ๋Œ์•„๊ฐˆ๊นŒ ๋‘๋ ต์ง€ ์•Š์œผ์‹ ๊ฐ€์š”?

์ฆ‰, ๋‹ค์‹œ ๋“ฑ๋กํ–ˆ์Šต๋‹ˆ๊นŒ?

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

์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ข€ ๋” ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

์˜ˆ, ์˜ˆ.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์•ˆ์ •์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

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

์•„๋‹ˆ์š”, ๊ทธ๋Š” ์Šค๋ƒ…์ƒท ์‚ฌ์ด์— ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฐ•์ œ๋กœ ๋‚˜๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ์•„์ด๋””๋กœ?

๋„ค.

์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์—ฐ๊ตฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ข‹์€ ์งˆ๋ฌธ. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์—ฐ๊ตฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ณด๋Š” ๊ฒƒ์€ 0์œผ๋กœ ์“ฐ์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค...

๋ฌผ๋ก  ์ด๊ฒƒ์€ ๋“œ๋ฌธ ๊ฒฝ์šฐ์ง€๋งŒ stat_statemetns๊ฐ€ ๊ทธ๊ณณ์œผ๋กœ ์˜ฎ๊ฒจ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ์ถฉ๊ฒฉ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

Pg_stat_statements์—๋Š” ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. track_utility = on์ด๋ฉด ์„ธํŠธ๋„ ์ถ”์ ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ž„์˜์˜ Java hibernate๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด์‹œ ํ…Œ์ด๋ธ”์ด ๊ฑฐ๊ธฐ์— ์œ„์น˜ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งค์šฐ ๋กœ๋“œ๋œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋„์ž๋งˆ์ž 50-100๊ฐœ์˜ ๊ทธ๋ฃน์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์†Œ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€์ฒ˜ํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ pg_stat_statements.max๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ํ•˜์ง€๋งŒ ์–ผ๋งˆ์ธ์ง€ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ๋“  ์šฐ๋ฆฌ๋Š” ๊ทธ๋ฅผ ์ง€์ผœ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋‚ด๊ฐ€ํ•˜๋Š” ์ผ์ด์•ผ. ์ฆ‰, pg_stat_statements.max๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์Šค๋ƒ…์ƒท ๋‹น์‹œ์—๋Š” 70%์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ข‹์•„์š”, ๊ทธ๋Ÿผ ์šฐ๋ฆฌ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์žƒ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์žฌ์„ค์ •ํ•ฉ์‹œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋‹ค์‹œ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์Šค๋ƒ…์ƒท์ด 70๊ฐœ ๋ฏธ๋งŒ์ด๋ผ๋ฉด ๋‹ค์‹œ๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์žƒ์ง€ ์•Š์•˜์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

์˜ˆ. ํ˜„์žฌ ๊ธฐ๋ณธ๊ฐ’์€ 5์ด๋ฉฐ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ด ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๋ณดํ†ต ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

๋น„๋””์˜ค :

์ถ”์‹  ์ €๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Postgres์— ๊ธฐ๋ฐ€ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์— ํฌํ•จ๋  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋ง๋ถ™์ด๊ฒ ์Šต๋‹ˆ๋‹ค. PostgreSQL ์ต๋ช…์ฒ˜๋ฆฌ๊ธฐ. ๊ณ„ํš์€ ๋Œ€๋žต ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

PostgreSQL ํŠœ๋‹์— ๋Œ€ํ•œ ์‚ฐ์—…์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ—˜." Nikolay Samokhvalov

์ถœ์ฒ˜ : habr.com

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