Back to blog

PostgreSQL Linux ํŠœ๋‹ ๋ฐ ๊ตฌ์„ฑ: EPAS ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ฐ€์ด๋“œ

August 10, 2026

Lรฆtitia Avrot ยท 2024๋…„ 8์›” 1์ผ

EDB Postgres Advanced Server(EPAS)์™€ PostgreSQL์„ Linux์—์„œ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑยทํŠœ๋‹ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์„ธ์š”.

์ด ํŠœ๋‹ ๊ฐ€์ด๋“œ๋Š” 2020๋…„ Dave Page, Devrim Gรผnduz, Shaun Thomas, Stacy Scoggins, Vibhor Kumar, Vik Fearing์ด ์ž‘์„ฑํ•œ ์›๋ณธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, 2024๋…„ ์—…๋ฐ์ดํŠธ ๋ฒ„์ „์€ Lรฆtitia Avrot์™€ Vibhor Kumar๊ฐ€ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

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


๊ฐ•๋ ฅํ•œ PostgreSQL ์„œ๋ฒ„ ์„ค๊ณ„ํ•˜๊ธฐ

์•„๋ž˜ ๋‚ด์šฉ์€ PostgreSQL์šฉ ๋ฒ ์–ด๋ฉ”ํƒˆ ์„œ๋ฒ„ ๋ฐ ๊ฐ€์ƒ ๋จธ์‹ (VM) ํ™˜๊ฒฝ์— ์ดˆ์ ์„ ๋งž์ถฅ๋‹ˆ๋‹ค. (ํ–ฅํ›„ ๋ฒ„์ „์—์„œ ํด๋ผ์šฐ๋“œ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ ์„ค๊ณ„๊ฐ€ ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

๋ฒ ์–ด๋ฉ”ํƒˆ ์„œ๋ฒ„

๋ฒ ์–ด๋ฉ”ํƒˆ ์„œ๋ฒ„๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ๋Š” CPU, RAM, ๋””์Šคํฌ, ๊ทธ๋ฆฌ๊ณ  ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋„คํŠธ์›Œํฌ ์นด๋“œ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CPU ์„ ํƒ

CPU ์„ ํƒ์€ ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ CPU ์†๋„๋Š” ํ•„์ˆ˜์ด๋ฉฐ, L3 ์บ์‹œ๊ฐ€ ํฐ CPU์ผ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. OLTP(์˜จ๋ผ์ธ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ) ์„ฑ๋Šฅ์„ ์œ„ํ•ด์„œ๋Š” ์ฝ”์–ด ์ˆ˜๊ฐ€ ๋งŽ๊ณ  ๊ฐ ์ฝ”์–ด๊ฐ€ ๋น ๋ฅผ์ˆ˜๋ก ์šด์˜์ฒด์ œ์™€ PostgreSQL์˜ ํšจ์œจ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.

CPU์—๋Š” ์ตœ์†Œ ๋‘ ์ข…๋ฅ˜์˜ ์บ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • L1 ์บ์‹œ(๊ธฐ๋ณธ ์บ์‹œ): ๊ฐ€์žฅ ์ž‘๊ณ  ๋น ๋ฅด๋ฉฐ CPU ์ฝ”์–ด์— ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • L2 ์บ์‹œ(๋ณด์กฐ ์บ์‹œ): L1๋ณด๋‹ค ๋А๋ฆฌ์ง€๋งŒ ๋” ํฌ๋ฉฐ, L1์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

L1๊ณผ L2๋Š” ๊ฐ ์ฝ”์–ด์— ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ๋ฐ˜๋ฉด, L3 ์บ์‹œ๋Š” ๋ชจ๋“  ์ฝ”์–ด๊ฐ€ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. L3๋Š” L1ยทL2๋ณด๋‹ค ๋А๋ฆฌ์ง€๋งŒ RAM๋ณด๋‹ค๋Š” ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ์‹œ ์ฝ”์–ด ๊ฐ„ ๊ณต์œ ๋˜๋Š” L3 ์บ์‹œ ํฌ๊ธฐ๊ฐ€ ์„ฑ๋Šฅ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ์ฃผ๋ฏ€๋กœ, L3 ์บ์‹œ๊ฐ€ ํฐ CPU๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์„ธํŠธ์™€ ๋ณ‘๋ ฌ ์ฟผ๋ฆฌ ๋ชจ๋‘์—์„œ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

RAM ๊ด€๋ฆฌ

Linux์—์„œ PostgreSQL ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋ ค๋ฉด RAM์ด ๊ฐ€์žฅ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œํ•˜๋ฉฐ, ์บ์‹œ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๋””์Šคํฌ I/O๊ฐ€ ์ค„๊ณ  ์ฟผ๋ฆฌ ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋ฉ๋‹ˆ๋‹ค.

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

๋””์Šคํฌ ์ตœ์ ํ™”

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด I/O ์ค‘์‹ฌ(์ฝ๊ธฐยท์“ฐ๊ธฐ ์ง‘์•ฝ์ )์ด๋ผ๋ฉด ๋” ๋น ๋ฅธ ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ๋Œ์–ด์˜ฌ๋ฆฝ๋‹ˆ๋‹ค. NVMe, SSD ๋“ฑ ์—ฌ๋Ÿฌ ์„ ํƒ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • WAL ๋””์Šคํฌ ๋ถ„๋ฆฌ: WAL(Write-Ahead Logging)์€ ๋ฐ˜๋“œ์‹œ ๋ฐ์ดํ„ฐ ๋””์Šคํฌ์™€ ๋ถ„๋ฆฌํ•˜์„ธ์š”. ์“ฐ๊ธฐ ์ง‘์•ฝ์  ํ™˜๊ฒฝ์—์„œ ๋ณ‘๋ชฉ์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ณ„๋„์˜ ๋น ๋ฅธ ๋“œ๋ผ์ด๋ธŒ์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œ RAID 1์„ ์‚ฌ์šฉํ•˜๊ณ , ์“ฐ๊ธฐ ์ž‘์—…์ด ๋งŽ๋‹ค๋ฉด RAID 10์„ ๊ณ ๋ คํ•˜์„ธ์š”.
  • ์ธ๋ฑ์Šคยท๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ: ํŠนํžˆ SATA ๋“œ๋ผ์ด๋ธŒ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ์ธ๋ฑ์Šค์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šคยท๋“œ๋ผ์ด๋ธŒ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ SSDยทNVMe์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋“œ๋ผ์ด๋ธŒ์—๋Š” RAID 10์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์„ค์ •

๋„คํŠธ์›Œํฌ ํŠœ๋‹์€ ๋ฐฑ์—…ยท๋ณต์ œ ์„ฑ๋Šฅ์„ ์ขŒ์šฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ํฌ๊ฒŒ ๋Š˜์–ด๋‚˜๋ฉด ๋” ๋น ๋ฅด๊ฑฐ๋‚˜ ๋ณธ๋”ฉ๋œ(bonded) ๋„คํŠธ์›Œํฌ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฒ ์ด์Šค ๋ฐฑ์—… ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ƒ ๋จธ์‹ (VM)

VM์€ ๊ฐ€์ƒํ™” ๊ณ„์ธต ๋•Œ๋ฌธ์— ๋ฒ ์–ด๋ฉ”ํƒˆ ๋Œ€๋น„ ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์žˆ๊ณ , ๊ณต์œ  ๋ฆฌ์†Œ์Šค๋กœ ์ธํ•ด ๊ฐ€์šฉ CPU์™€ ๋””์Šคํฌ I/O ์„ฑ๋Šฅ๋„ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ์„ ๋†’์ด๋ ค๋ฉด CPU์™€ ๋””์Šคํฌ๋ฅผ ํ˜ธ์ŠคํŠธ์— ๊ณ ์ •(pinning)ํ•˜์„ธ์š”. ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰ ์ค‘์ธ ๋‹ค๋ฅธ VM์œผ๋กœ ์ธํ•œ ๋ณ‘๋ชฉ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์„ค์น˜ ์ „์— ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์‚ฌ์ „ ํ• ๋‹นํ•˜์—ฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—… ์ค‘ ํ˜ธ์ŠคํŠธ๊ฐ€ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์ „ ํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด, postgresql.conf์—์„œ ์•„๋ž˜ ๋‘ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • wal_recycle ๋น„ํ™œ์„ฑํ™” โ€” PostgreSQL์€ ๊ธฐ๋ณธ์ ์œผ๋กœ WAL ํŒŒ์ผ์„ ์ด๋ฆ„ ๋ณ€๊ฒฝ ๋ฐฉ์‹์œผ๋กœ ์žฌํ™œ์šฉํ•˜์ง€๋งŒ, Copy-On-Write(COW) ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ƒˆ WAL ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ํŽธ์ด ๋” ๋น ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • wal_init_zero ๋น„ํ™œ์„ฑํ™” โ€” PostgreSQL์€ ๊ธฐ๋ณธ์ ์œผ๋กœ WAL ๋ ˆ์ฝ”๋“œ ์‚ฝ์ž… ์ „์— WAL ๊ณต๊ฐ„์„ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•˜๋Š”๋ฐ, ์ด ๊ณผ์ •์ด COW ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ WAL ์ž‘์—… ์†๋„๋ฅผ ๋–จ์–ด๋œจ๋ฆฝ๋‹ˆ๋‹ค. off๋กœ ์„ค์ •ํ•˜๋ฉด ํŒŒ์ผ ์ƒ์„ฑ ์‹œ ์ตœ์ข… ๋ฐ”์ดํŠธ๋งŒ ๊ธฐ๋กํ•ด ์˜ˆ์ƒ ํฌ๊ธฐ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค(๋‹จ, ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์‚ฌ์ „ ํ• ๋‹น๋œ ๊ฒฝ์šฐ์—๋งŒ ํšจ๊ณผ์ ).

PostgreSQL ์„ฑ๋Šฅ์„ ์œ„ํ•œ Linux ์šด์˜์ฒด์ œ ์„ค์ •

๋งˆ์šดํŠธ ํฌ์ธํŠธ

์ „์šฉ IOPS(Input/Output Operations Per Second)๋ฅผ ๊ฐ€์ง„ ๋ณ„๋„์˜ ๋งˆ์šดํŠธ ํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์„ฑ๋Šฅ์„ ์œ„ํ•ด SSD๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  • /pgdata/16 โ€” EPAS/PG ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ์šฉ ๋งˆ์šดํŠธ ํฌ์ธํŠธ (PGDATA ๊ฒฝ๋กœ: /pgdata/16/data)
  • /pgwaldata/16 โ€” WAL(Write-Ahead Log)์šฉ ๋งˆ์šดํŠธ ํฌ์ธํŠธ (WAL ๊ฒฝ๋กœ: /pgwaldata/16/wal)

์ธ๋ฑ์Šค ์‚ฌ์šฉ๋Ÿ‰๊ณผ ์–‘์— ๋”ฐ๋ผ, ์›Œํฌ๋กœ๋“œ๋ณ„๋กœ ์ธ๋ฑ์Šค๋ฅผ ์œ„ํ•œ ๋ณ„๋„ ๋งˆ์šดํŠธ ํฌ์ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋””๋ ‰ํ„ฐ๋ฆฌ(๊ธฐ๋ณธ๊ฐ’ /PGDATA/log)๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šคยท์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜ฌ๋ฐ”๋ฅธ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ ๋ณ„๋„ ๋งˆ์šดํŠธ ํฌ์ธํŠธ์— ๋ฐฐ์น˜ํ•˜์„ธ์š”.

ํŒŒ์ผ ์‹œ์Šคํ…œ

PG/EPAS ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ, WAL, ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋งˆ์šดํŠธ ํฌ์ธํŠธ์—๋Š” XFS ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

atime ๋น„ํ™œ์„ฑํ™”

PostgreSQL์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— atime(๋งˆ์ง€๋ง‰ ์•ก์„ธ์Šค ์‹œ๊ฐ ํƒ€์ž„์Šคํƒฌํ”„)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด CPU๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐยทWAL ํŒŒ์ผ์ด ์ €์žฅ๋œ ๋“œ๋ผ์ด๋ธŒ์˜ defaults ์˜†์— noatime์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

/dev/mapper/pgdata-01-data /pgdata xfs defaults,noatime 1 1

๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ์ฆ‰์‹œ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

mount -o remount,noatime,nodiratime /pgdata

์ด๋Š” ์ดˆ๊ธฐ ๋‹จ๊ณ„์— ์ ํ•ฉํ•˜๋ฉฐ, ์ดํ›„ ์šด์˜์ฒด์ œ์™€ PostgreSQL์„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด ์„ธ๋ถ€ ํŠœ๋‹์šฉ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์„ธ์š”.

Read-ahead ์ตœ์ ํ™”

๋””์Šคํฌ Read-ahead ๊ฐ’์„ ๋Š˜๋ฆฌ๋ฉด ๋””์Šคํฌ ์š”์ฒญ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ I/O ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ๋ณดํ†ต 128kB์ด์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šคยทํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋””์Šคํฌ์—์„œ๋Š” 4,096kB๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. (์•„๋ž˜ tuned ๋ฐ๋ชฌ ์„ค์ •์œผ๋กœ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

I/O ์Šค์ผ€์ค„๋Ÿฌ

  • CentOS/RHEL 7 โ†’ deadline
  • Rocky/RHEL 8 โ†’ mq-deadline
  • SSD๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ž์ฒด ์žฌ์ •๋ ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ๋Š” ์ „์šฉ I/O ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์“ฐ๋Š” ๊ฒฝ์šฐ โ†’ RHEL 7์€ noop, RHEL 8์€ none

๋”ํ‹ฐ ๋ฉ”๋ชจ๋ฆฌ(Dirty Memory)

๋”ํ‹ฐ ๋ฉ”๋ชจ๋ฆฌ(์ˆ˜์ •๋์ง€๋งŒ ์•„์ง ๋””์Šคํฌ์— ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ)๋Š” ์ตœ์‹  ์‹œ์Šคํ…œ์—์„œ RAM ๋Œ€๋น„ ๋น„์œจ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์ผ์ • ๋น„์œจ ์ด์ƒ ์ˆ˜์ •๋˜๋ฉด ์‹œ์Šคํ…œ์ด ์ˆœ์ฐจ ์ ‘๊ทผ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜๊ณ , ๋”ํ‹ฐ ๋ฉ”๋ชจ๋ฆฌ ํ”Œ๋Ÿฌ์‹œ์™€ ๋ฌด๊ด€ํ•œ ๋ชจ๋“  I/O ์š”์ฒญ์ด ์ฐจ๋‹จ๋˜์–ด ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ํŒจํ„ด์ด ๊ฐ•ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋Š˜์ˆ˜๋ก ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.

์ตœ์‹  ํ•˜๋“œ์›จ์–ดยท์ผ๋ถ€ VM์—์„œ๋Š” RAM์˜ 1%๋งŒ์œผ๋กœ๋„ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ๊ฐ๋‹นํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ฒจ ์‹ฌ๊ฐํ•œ I/O ๋Œ€๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ตœ์‹  Linux ์ปค๋„์€ ๋”ํ‹ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„์œจ์ด ์•„๋‹Œ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • vm.dirty_bytes โ€” ๊ถŒ์žฅ๊ฐ’์€ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€ ์žฅ์น˜ยท์ปจํŠธ๋กค๋Ÿฌ์˜ ์บ์‹œ ํฌ๊ธฐ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. ๊ฐ’์„ ์•Œ ์ˆ˜ ์—†๋‹ค๋ฉด 1GB๊ฐ€ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  • vm.dirty_background_bytes โ€” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์“ฐ๊ธฐ ์ž„๊ณ„๊ฐ’์œผ๋กœ, ๋ณดํ†ต vm.dirty_bytes์˜ 1/4 ์ˆ˜์ค€์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž„๊ณ„๊ฐ’์— ๋„๋‹ฌํ•˜๊ธฐ ํ›จ์”ฌ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ธˆ์”ฉ ๋ฏธ๋ฆฌ ๋””์Šคํฌ๋กœ ๋‚ด๋ณด๋‚ด, ๊ฐ’์ด ๋„ˆ๋ฌด ์ž‘์„ ๋•Œ ์ƒ๊ธฐ๋Š” ๊ณผ๋„ํ•œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์“ฐ๊ธฐ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์Šคํ† ๋ฆฌ์ง€ ์บ์‹œ๋Š” ์•ฝ 1~4GB๋กœ ํฌ์ง€ ์•Š์œผ๋ฏ€๋กœ, ์Šคํ† ๋ฆฌ์ง€ ๋ถ€ํ•˜๋ฅผ ํ”ผํ•˜๋ฉด์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์“ฐ๊ธฐ๋ฅผ ์ด‰์ง„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์บ์‹œ๊ฐ€ ๋” ํฌ๋‹ค๋ฉด vm.dirty_background_bytes๋ฅผ vm.dirty_bytes ๋Œ€๋น„ ๋” ์ž‘์€ ๋น„์œจ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ถŒ์žฅ tuned ํ”„๋กœํŒŒ์ผ

์•„๋ž˜๋Š” EPAS/PostgreSQL์„ ์œ„ํ•œ EDB์˜ Linux ํŠœ๋‹ ๊ถŒ์žฅ ์„ค์ •์ž…๋‹ˆ๋‹ค.

mkdir /etc/tuned/edb

export DIRTY_BYTES=$((1024*1024*1024))
export DIRTY_BG=$((${DIRTY_BYTES}/4))
export MEM_TOTAL=$(grep MemTotal /proc/meminfo | awk '{print $2}')

cat</etc/tuned/edb/tuned.conf

    [main]

    summary=Tuned profiles for EnterpriseDB Postgres Advanced Server

    [cpu]

    governor=performance

    energy_perf_bias=performance

    min_perf_pct=100

    [disk]

    readahead=4096

    [sysctl]

    vm.overcommit_memory=2

    vm.overcommit_ratio=80

    vm.swappiness=1

    vm.dirty_bytes=${DIRTY_BYTES}

    vm.dirty_background_bytes=${DIRTY_BG}

    [vm]

    transparent_hugepages=never

    EOF

    

    systemctl enable --now

    tuned-adm profile edb

EPAS/PG ํด๋Ÿฌ์Šคํ„ฐ ์ดˆ๊ธฐํ™”

๋‹ค์Œ initdb ๋ช…๋ น์œผ๋กœ EPAS PGDATA ํด๋”๋ฅผ ๋ถ€ํŠธ์ŠคํŠธ๋žฉํ•ฉ๋‹ˆ๋‹ค.

PGSETUP_INITDB_OPTIONS="-X /pgwaldata/16/wal --pgdata=/pgdata/16/data"
/usr/edb/as16/bin/edb-as16-setup initdb

systemctl๋กœ ์„œ๋น„์Šค ํŒŒ์ผ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

systemctl edit edb-as-16

ํŽธ์ง‘ ์ฐฝ์— ์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

[Service]
Environment=PGDATA=/pgdata/16/data

์ €์žฅ ํ›„ ์ข…๋ฃŒํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ํ™œ์„ฑํ™”ยท์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

systemctl enable --now edb-as-16

systemd ์„œ๋น„์Šค ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ , ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ์œ„์น˜์— PGDATA ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋„ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

sudo -u enterprisedb rmdir /var/lib/edb/as16/data
sudo -u enterprisedb ln -s /pgdata/16/data /var/lib/edb/as16/data
systemctl enable --now edb-as-16

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„ ์„ค์ • ๋ฐ ์ธ์ฆ

max_connections โ€” ์ตœ์ ๊ฐ’์€ CPU ์ฝ”์–ด ์ˆ˜์˜ 4๋ฐฐ์ด์ง€๋งŒ, ํ˜„์‹ค์ ์œผ๋กœ๋Š” ๋„ˆ๋ฌด ์ž‘์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ณต์‹์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

GREATEST(4 ร— CPU ์ฝ”์–ด ์ˆ˜, 100)

์ด ๊ฐ’์„ ์ดˆ๊ณผํ•ด์•ผ ํ•œ๋‹ค๋ฉด pgbouncer ๊ฐ™์€ ์—ฐ๊ฒฐ ํ’€๋Ÿฌ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ์—ฐ๊ฒฐ์ด ํ•„์š” ์—†๋‹ค๋ฉด ๊ฐ’์„ ๋‚ฎ์ถ”์„ธ์š”.

password_encryption โ€” scram-sha-256์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”.


PostgreSQL ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ๋ฆฌ์†Œ์Šค ์„ค์ •

shared_buffers โ€” ์›Œํฌ๋กœ๋“œ์— ๋”ฐ๋ผ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ด๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์›Œํฌ๋กœ๋“œ๋Š” ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์ด ๋งค์šฐ ์ปค๋„ 1~2GB ๊ฐ™์€ ์ž‘์€ ๊ฐ’์—์„œ ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ๋‚ด๊ณ , ์–ด๋–ค ์›Œํฌ๋กœ๋“œ๋Š” ํฐ ๊ฐ’์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•ฉ๋ฆฌ์ ์ธ ์‹œ์ž‘์ ์€ ์ „์ฒด RAM / 4์ด๋ฉฐ, RAM ๊ทœ๋ชจ๋ฅผ ๋ฐ˜์˜ํ•œ ์„ธ๋ถ€ ์„ค์ •์€ ์•„๋ž˜ ์˜์‚ฌ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

base = RAM / 4
if RAM < 3 GB:
    base = base * 0.5
else if RAM < 8 GB:
    base = base * 0.75
else if RAM > 64 GB:
    base = greatest(16 GB, RAM / 6)
shared_buffers = least(base, 64 GB)

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

work_mem โ€” ๊ถŒ์žฅ ์‹œ์ž‘์ :

(์ „์ฒด RAM โˆ’ shared_buffers) / (16 ร— CPU ์ฝ”์–ด ์ˆ˜)

maintenance_work_mem โ€” VACUUM, CREATE INDEX, ALTER TABLE, ADD FOREIGN KEY, ๋ฐ์ดํ„ฐ ๋กœ๋“œ ๊ฐ™์€ ์œ ์ง€ ๊ด€๋ฆฌ ์ž‘์—…์— ์“ธ ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ž‘์—…์€ I/O๋ฅผ ๋Š˜๋ฆฌ๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ์ฃผ๋ฉด ๋” ๋นจ๋ฆฌ ๋๋‚ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ ์‹œ์ž‘๊ฐ’:

15% ร— (์ „์ฒด RAM โˆ’ shared_buffers) / autovacuum_max_workers   (์ตœ๋Œ€ 1GB)

effective_io_concurrency โ€” Read-ahead์— ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋””์Šคํฌ ๊ฐœ์ˆ˜๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ ๊ฐœ์ˆ˜์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋” ๋‚˜์€ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. SSD๋ฅผ ์“ฐ๋Š” ๊ฒฝ์šฐ 200์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.


PostgreSQL WAL ์„ค์ • ๋ฐ ์ตœ์ ํ™”

wal_compression โ€” full_page_writes๊ฐ€ ์ผœ์ ธ ์žˆ๊ฑฐ๋‚˜ ๋ฒ ์ด์Šค ๋ฐฑ์—… ์ค‘์ผ ๋•Œ WAL์— ๊ธฐ๋ก๋˜๋Š” ์ „์ฒด ํŽ˜์ด์ง€ ์ด๋ฏธ์ง€๋ฅผ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •: on

wal_log_hints โ€” pg_rewind์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •: on (์ฒดํฌ์„ฌ์ด ํ™œ์„ฑํ™”๋œ ์ธ์Šคํ„ด์Šค์—์„œ๋Š” ํ•ญ์ƒ ํ™œ์„ฑ์œผ๋กœ ๊ฐ„์ฃผ)

wal_buffers โ€” ๋™๊ธฐํ™” ์ „ ๋ฐฑ์—”๋“œ์— WAL ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ WAL ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ๋Š” 16MB์ด๋ฉฐ ๋ฒ„ํผ๋ง์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ ์Šต๋‹ˆ๋‹ค. ๋” ํฐ ๋ฒ„ํผ๋Š” ์„ฑ๋Šฅ์— ๊ธ์ •์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •: 64MB

checkpoint_timeout โ€” ํƒ€์ž„์•„์›ƒ์ด ๊ธธ์ˆ˜๋ก WAL ๋ณผ๋ฅจ์€ ์ค„์ง€๋งŒ ์žฅ์•  ๋ณต๊ตฌ๋Š” ๋А๋ ค์ง‘๋‹ˆ๋‹ค. ๊ถŒ์žฅ: ์ตœ์†Œ 15๋ถ„ (๋‹จ, ๋น„์ฆˆ๋‹ˆ์Šค์˜ RPO์— ๋”ฐ๋ผ ์กฐ์ •).

checkpoint_completion_target โ€” ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์™„๋ฃŒํ•˜๋ ค๋Š” ๋ชฉํ‘œ ์‹œ๊ฐ„์œผ๋กœ, I/O ์ŠคํŒŒ์ดํฌ ์—†์ด ์“ฐ๊ธฐ๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ต๋‹ˆ๋‹ค. ๊ถŒ์žฅ: 0.9 (PostgreSQL 13 ์ด์ƒ์€ ๊ธฐ๋ณธ๊ฐ’ 0.9)

max_wal_size โ€” ์„ค์ •์ด ๊นŒ๋‹ค๋กœ์šด ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์ ๊ฐ’์€ checkpoint_timeout๊ณผ ์‹œ์Šคํ…œ ์ตœ๋Œ€ WAL ์ฒ˜๋ฆฌ๋Ÿ‰์˜ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ์ €ํ•˜๋˜๊ณ , ๋„ˆ๋ฌด ํฌ๋ฉด ์„ฑ๋Šฅ์—” ์˜ํ–ฅ์ด ์—†์œผ๋‚˜ ๋””์Šคํฌ ๋ถ€์กฑ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค(์†Œํ”„ํŠธ ์ œํ•œ).

  • ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•˜๋ฉด(WAL์šฉ ์ˆ˜๋ฐฑ GB ์ด์ƒ) ๊ฐ’์„ ๋†’๊ฒŒ ์„ค์ •ํ•˜์„ธ์š”. ๊ณ ์„ฑ๋Šฅ ์‹œ์Šคํ…œ์—์„œ๋Š” 200GB ์ด์ƒ๋„ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  • ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์ œํ•œ์ ์ด๋ฉด ๊ฐ€๋Šฅํ•œ ํ•œ ๋†’๊ฒŒ ์„ค์ •ํ•ด ์—ฌ์œ ๋ฅผ ํ™•๋ณดํ•˜๋˜ ๋ถ€์กฑ์„ ๋ฐฉ์ง€ํ•˜์„ธ์š”.
  • ์ „์šฉ ๋””์Šคํฌ ํŒŒํ‹ฐ์…˜ ์‚ฌ์šฉ ์‹œ(๊ถŒ์žฅ) ํŒŒํ‹ฐ์…˜ ํฌ๊ธฐ์˜ 50~75%๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์„ธ๋ถ€ ์กฐ์ •: pg_stat_bgwriter ๋ทฐ์—์„œ checkpoints_timed์™€ checkpoints_req๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์„ธ์š”. max_wal_size๊ฐ€ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ์š”์ฒญ๋œ ์ฒดํฌํฌ์ธํŠธ(requested checkpoints) ๋น„์œจ์ด ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ, ์ด๋Š” ๋‹ค์Œ ํƒ€์ž„๋“œ ์ฒดํฌํฌ์ธํŠธ๊นŒ์ง€ ํ•„์š”ํ•œ WAL ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๊ด€ํ•  ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค. ์ผ์‹œ์  ๊ธ‰์ฆ์€ ๊ดœ์ฐฎ์ง€๋งŒ ์ƒ์‹œํ™”๋˜๋ฉด ์•ˆ ๋˜๋ฉฐ, ๋””์Šคํฌ๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๋ฒ”์œ„์—์„œ ๊ฐ’์„ ๋Š˜๋ ค ์š”์ฒญ๋œ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์ตœ์†Œํ™”ํ•˜์„ธ์š”.

archive_mode โ€” ๋ณ€๊ฒฝ ์‹œ ์„œ๋ฒ„ ์žฌ์‹œ์ž‘์ด ํ•„์š”ํ•˜๋ฏ€๋กœ on์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

archive_command โ€” archive_mode๊ฐ€ ์ผœ์ ธ ์žˆ์œผ๋ฉด ์œ ํšจํ•œ ๋ช…๋ น์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ์ค€๋น„๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด POSIX ์‹œ์Šคํ…œ์—์„œ ๊ธฐ๋ณธ๊ฐ’ : to be configured๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


PostgreSQL ์ฟผ๋ฆฌ ํŠœ๋‹

random_page_cost โ€” SSD ๋””์Šคํฌ ์‚ฌ์šฉ ์‹œ 1.1์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

effective_cache_size โ€” shared_buffers + Linux ๋ฒ„ํผ ์บ์‹œ(์˜ˆ: free ๋ช…๋ น์˜ buff/cache ์—ด)์˜ ํ•ฉ์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”.

cpu_tuple_cost โ€” ์ฟผ๋ฆฌ ์ค‘ ๊ฐ ํ–‰ ์ฒ˜๋ฆฌ์˜ ์ƒ๋Œ€ ๋น„์šฉ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’ 0.01์€ ์ตœ์ ๊ฐ’๋ณด๋‹ค ๋‚ฎ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ, ๋ณด๋‹ค ํ˜„์‹ค์ ์ธ ๋น„์šฉ ๊ณ„์‚ฐ์„ ์œ„ํ•ด 0.03์œผ๋กœ ์กฐ์ •ํ•˜๋ฉด ์‹คํ–‰ ๊ณ„ํš ์ •ํ™•๋„๊ฐ€ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค.


PostgreSQL ๋กœ๊น… ๋ฐ ๋ฌธ์ œ ๋ณด๊ณ 

logging_collector โ€” log_destination์— stderr ๋˜๋Š” csvlog๊ฐ€ ํฌํ•จ๋˜๋ฉด on์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

log_directory โ€” logging_collector๊ฐ€ on์ด๋ฉด ๋กœ๊ทธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ์™ธ๋ถ€์— ๋‘์„ธ์š”. ๋กœ๊ทธ๊ฐ€ ๋ฒ ์ด์Šค ๋ฐฑ์—…์— ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

log_checkpoints โ€” ์ฒดํฌํฌ์ธํŠธ ๋กœ๊น…์„ ์œ„ํ•ด on์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

log_min_duration_statement โ€” ์ €์„ฑ๋Šฅ ์ฟผ๋ฆฌ๋ฅผ ์กฐ๊ธฐ์— ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด 1์ดˆ๋กœ ์„ค์ •ํ•ด 1์ดˆ ์ด์ƒ ์‹คํ–‰๋˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์ ํ•ฉํ•˜๋ฉฐ, ๋„ˆ๋ฌด ๊ธธ๋ฉด ๊ฐ’์„ ๋†’์ธ ๋’ค ๋А๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ๊ณ ์น˜๊ณ  ๋‹ค์‹œ ์ค„์ด๋Š” ๋ฐฉ์‹์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ ์ž‘์—…์—์„œ๋Š” 250ms ์ด์ƒ์ด ๋А๋ฆฐ ํŽธ์ด์ง€๋งŒ, ๋ถ„์„ ์›Œํฌ๋กœ๋“œ์—์„œ๋Š” 5์ดˆ ์ด์ƒ๋„ ๋А๋ฆฌ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

log_line_prefix โ€” ์ตœ์†Œํ•œ ์‹œ๊ฐ„, ํ”„๋กœ์„ธ์Šค ID, ํ–‰ ๋ฒˆํ˜ธ, ์‚ฌ์šฉ์žยท๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ๊ฐ’(๋์˜ ๊ณต๋ฐฑ ํฌํ•จ์— ์ฃผ์˜):

%m [%p]: u=[%u] db=[%d] app=[%a] c=[%h] s=[%c:%l] tx=[%v:%x] 

log_lock_waits โ€” on์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”. ๋А๋ฆฐ ์ฟผ๋ฆฌ ์ง„๋‹จ์— ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

log_statement โ€” ddl๋กœ ์„ค์ •ํ•˜์„ธ์š”. ๊ธฐ๋ณธ ๊ฐ์‚ฌ ๊ธฐ๋ก์€ ๋ฌผ๋ก , ์ž˜๋ชป๋œ ํ…Œ์ด๋ธ” ์‚ญ์ œ ๊ฐ™์€ ์น˜๋ช…์  ์‹ค์ˆ˜ ํŒŒ์•…์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

log_temp_files โ€” 0์œผ๋กœ ์„ค์ •ํ•ด ์ƒ์„ฑ๋˜๋Š” ๋ชจ๋“  ์ž„์‹œ ํŒŒ์ผ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฒ„ํ”Œ๋กœ ๋””๋ฒ„๊น…์— ์œ ์šฉํ•˜๋ฉฐ, work_mem ์„ค์ •์ด ์ž˜๋ชป๋์Œ์„ ๋“œ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

log_connections โ€” on์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”. ๋ชจ๋“  ์—ฐ๊ฒฐ์„ ๊ธฐ๋กํ•˜๋ฉฐ, ๋ณด์•ˆ ๋ชฉ์ ๊ณผ ์—ฐ๊ฒฐ ํ’€๋Ÿฌ ํ•„์š”์„ฑยท์„ค์ • ํ™•์ธ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

log_disconnections โ€” on์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”. ๋ชจ๋“  ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

timed_statistics (EPAS) โ€” DRITA(๋™์  ๋Ÿฐํƒ€์ž„ ๋„๊ตฌ ์•„ํ‚คํ…์ฒ˜)์˜ ํƒ€์ด๋ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์„ ์ œ์–ดํ•˜๋˜ ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค. ๋ฒ„์ „์— ๋”ฐ๋ผ ๋™์ž‘์ด ๋‹ค๋ฅด๋ฏ€๋กœ ์ฃผ์˜ํ•˜์„ธ์š”.

  • 16 ์ดํ•˜: ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด on์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • 17: DRITA ๊ธฐ๋Šฅ์ด ์ œ๊ฑฐ๋˜์—ˆ์œผ๋‚˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ ๋‚จ์•„ ์žˆ์œผ๋ฏ€๋กœ off๋กœ ๋‘ก๋‹ˆ๋‹ค.
  • 18: ํŒŒ๋ผ๋ฏธํ„ฐ ์ž์ฒด๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL Autovacuum ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์„ค์ •

log_autovacuum_min_duration โ€” Autovacuum ํ™œ๋™์„ ์™„์ „ํžˆ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ ค๋ฉด 0(๋ชจ๋“  ํ™œ๋™ ๊ธฐ๋ก)์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”.

autovacuum_max_workers โ€” Autovacuum ์ž‘์—…์ž ์ˆ˜์ž…๋‹ˆ๋‹ค(๊ธฐ๋ณธ 3, ๋ณ€๊ฒฝ ์‹œ ์žฌ์‹œ์ž‘ ํ•„์š”). ๊ฐ ํ…Œ์ด๋ธ”์€ ์ž‘์—…์ž ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ํ…Œ์ด๋ธ” ๊ฐ„ ๋ณ‘๋ ฌ ์ž‘์—…๊ณผ ๋” ๋นˆ๋ฒˆํ•œ Vacuum์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ: 5

autovacuum_vacuum_cost_limit โ€” ๊ณผ๋ถ€ํ•˜๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด PostgreSQL์€ Autovacuum์˜ I/O ํ• ๋‹น๋Ÿ‰์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ/์“ฐ๊ธฐ๋งˆ๋‹ค ํ• ๋‹น๋Ÿ‰์ด ์†Œ๋ชจ๋˜๊ณ , ์†Œ์ง„๋˜๋ฉด ๊ณ ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•œ๋„๋ฅผ ๋Š˜๋ฆฌ๋ฉด Vacuum์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” I/O๊ฐ€ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์ด ๋‚ฎ์€ ํŽธ์ด๋ฏ€๋กœ 5,000์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.


PostgreSQL ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์ตœ์ ํ™”

idle_in_transaction_session_timeout โ€” ํŠธ๋žœ์žญ์…˜์—์„œ ์œ ํœด ์ƒํƒœ๋กœ ๋‚จ์€ ์„ธ์…˜์€ ์ž ๊ธˆ์„ ์œ ์ง€ํ•˜๊ณ  Vacuum์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ถŒ์žฅ: 10๋ถ„ (์ž ๊ธˆ ๊ฒฝํ•ฉ ๋ฐฉ์ง€์— ํšจ๊ณผ์ )

lc_messages โ€” ๋กœ๊ทธ ๋ถ„์„๊ธฐ๋Š” ๋ฒˆ์—ญ๋˜์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€๋งŒ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •: C (๋กœ๊ทธ ๋ถ„์„์„ ์šฉ์ดํ•˜๊ฒŒ ํ•จ)

shared_preload_libraries โ€” ์„ฑ๋Šฅ ๋ถ„์„์„ ์œ„ํ•ด pg_stat_statements๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ์ ๊ณ  ๊ฐ€์น˜๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค. ์„ ํƒ ์‚ฌํ•ญ์ด์ง€๋งŒ ํ™œ์„ฑํ™”๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.


PostgreSQL on Linux: ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ(FAQ)

PostgreSQL์„ Linux์—์„œ ์“ธ ์ˆ˜ ์žˆ๋‚˜์š”?

๋„ค. Linux๋Š” PostgreSQL์ด ๊ฐœ๋ฐœยทํ…Œ์ŠคํŠธ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ํ”Œ๋žซํผ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. Ubuntu, CentOS, Fedora, Debian ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฐํฌํŒ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ PostgreSQL์— Linux๋ฅผ ์“ฐ๋‚˜์š”?

๋งŽ์€ ์กฐ์ง๊ณผ ๊ฐœ๋ฐœ์ž๊ฐ€ PostgreSQL ์šด์˜์ฒด์ œ๋กœ Linux๋ฅผ ์„ ํ˜ธํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

PostgreSQL์— ๊ฐ€์žฅ ์ข‹์€ Linux ๋ฐฐํฌํŒ์€?

ํ•„์š”์™€ ์ทจํ–ฅ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • Ubuntu: ๋„๋ฆฌ ์“ฐ์ด๋ฉฐ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํฌ๊ณ  ๋ฌธ์„œ๊ฐ€ ์ถฉ์‹คํ•ฉ๋‹ˆ๋‹ค.
  • RHEL / CentOS: ์•ˆ์ •์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์œผ๋กœ ์œ ๋ช…ํ•˜๋ฉฐ, ์žฅ๊ธฐ ์ง€์›๊ณผ ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • Debian: ์•ˆ์ •์„ฑ๊ณผ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ฒฌ๊ณ ํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ์ข‹์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค.
  • Fedora: ์ตœ์‹  ๊ธฐ๋Šฅ๊ณผ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€ํ–ฅํ•œ๋‹ค๋ฉด ๋” ํ˜์‹ ์ ์ธ ์„ ํƒ์ง€์ž…๋‹ˆ๋‹ค.
  • openSUSE: ์œ ์—ฐ์„ฑ๊ณผ ์‚ฌ์šฉ์„ฑ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ๊ณ , ์„œ๋ฒ„ยท๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ ๋ชจ๋‘์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • Arch Linux: ์ตœ์‹  ๊ธฐ๋Šฅ์„ ์›ํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๋กค๋ง ๋ฆด๋ฆฌ์Šค ๋ชจ๋ธ๋กœ, ์ตœ์‹  ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Linux์—์„œ Postgres๋Š” ์–ด๋””์— ์„ค์น˜๋˜๋‚˜์š”?

์„ค์ • ํŒŒ์ผ์€ ๋ณดํ†ต /etc/postgresql/<version>/main ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด PostgreSQL 14๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด ์„ค์ • ํŒŒ์ผ์€ /etc/postgresql/14/main์— ์žˆ์Šต๋‹ˆ๋‹ค.

Linux์—์„œ Postgres์— ์–ด๋–ป๊ฒŒ ์ ‘์†ํ•˜๋‚˜์š”?

  1. ํ„ฐ๋ฏธ๋„์„ ์—ฝ๋‹ˆ๋‹ค.
  2. psql ๋ช…๋ น์— ์—ฐ๊ฒฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ถ™์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ตฌ๋ฌธ: psql -U username -d database_name -h hostname
  3. ํ•„์š”ํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  4. mydatabase=# ๊ฐ™์€ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ณด์ด๋ฉด SQL ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Linux์—์„œ Postgres ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์— ์ €์žฅ๋˜๋‚˜์š”?

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šคยทํ…Œ์ด๋ธ”ยท์ธ๋ฑ์Šค ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ๋ณดํ†ต /var/lib/postgresql/{version}/main/์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์„ค์น˜ยท์„ค์ • ๋ฐฉ์‹์— ๋”ฐ๋ผ ์œ„์น˜๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Linux PostgreSQL ์šด์˜ ์ฐธ๊ณ  ์‚ฌํ•ญ

Linux์—์„œ MySQL๊ณผ PostgreSQL์˜ ์ฐจ์ด๋Š”?

MySQL์€ ๋‹จ์ˆœํ•จ๊ณผ ๊ณ ์„ฑ๋Šฅ์— ๋” ์ง‘์ค‘ํ•˜๋Š” ๋ฐ˜๋ฉด, PostgreSQL์€ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ, ํŠธ๋žœ์žญ์…˜ ๋ฌด๊ฒฐ์„ฑ, SQL ํ‘œ์ค€ ์ค€์ˆ˜์— ๊ฐ•ํ•ฉ๋‹ˆ๋‹ค. MySQL์€ integerยทvarcharยทtext ๋“ฑ ๋น„๊ต์  ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์›ํ•˜๊ณ , PostgreSQL์€ ๋ฐฐ์—ดยทJSONยทXMLยท๊ธฐํ•˜ ํƒ€์ž… ๋“ฑ ๋” ํญ๋„“๊ณ  ๊ณ ๊ธ‰ํ•œ ํƒ€์ž…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. MySQL์€ SQL ํ‘œ์ค€์„ ๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ๋”ฐ๋ฅด์ง€๋งŒ PostgreSQL์€ ํ‘œ์ค€์„ ์—„๊ฒฉํžˆ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

Linux์—์„œ Postgres ์‚ฌ์šฉ์ž๋ฅผ ์–ด๋–ป๊ฒŒ ์กฐํšŒํ•˜๋‚˜์š”?

  1. ํ„ฐ๋ฏธ๋„์„ ์—ฝ๋‹ˆ๋‹ค.
  2. psql ๋ช…๋ น์œผ๋กœ PostgreSQL์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์žยท๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ).
  3. pg_roles ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: SELECT rolname FROM pg_roles;

Linux์—์„œ Postgres ๋ฒ„์ „์„ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•˜๋‚˜์š”?

์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • psql์— ์ ‘์†ํ•œ ๋’ค SELECT version(); ์กฐํšŒ.
  • ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์…ธ ์—†์ด, ํ„ฐ๋ฏธ๋„์—์„œ sudo -u postgres postgres --version ์‹คํ–‰.
  • ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ ํ™•์ธ. Ubuntu/Debian์€ dpkg -l | grep postgresql, CentOS/Red Hat์€ yum list installed | grep postgresql.

Linux์—์„œ Postgres ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•˜๋‚˜์š”?

๋‹ค์„ฏ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • systemd ์‚ฌ์šฉ ์‹œ: systemctl status postgresql
  • ์„œ๋ฒ„ ์ƒํƒœ๋งŒ ํ™•์ธ: pg_isready
  • ํ”„๋กœ์„ธ์Šค ํ•„ํ„ฐ๋ง: ps aux | grep postgres
  • pg_ctl status -D /var/lib/postgresql/{version}/main (๋ฒ„์ „ ๋ฒˆํ˜ธ๋กœ ๊ต์ฒด)
  • ๊ธฐ๋ณธ ํฌํŠธ ๋ฆฌ์Šค๋‹ ํ™•์ธ: sudo netstat -plnt | grep postgres ๋˜๋Š” sudo ss -ltn | grep postgres

Linux์—์„œ Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ข…๋ฃŒํ•˜๋‚˜์š”?

๋„ค ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž(apt/yum)๋กœ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ: sudo systemctl stop postgresql (์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ์ค‘์ง€)
  • ์—ฌ๋Ÿฌ ํด๋Ÿฌ์Šคํ„ฐ ์‹คํ–‰ ์‹œ: sudo pg_ctlcluster {version} {cluster_name} stop
  • ๊ตฌํ˜• SysV-init: sudo service postgresql stop
  • sudo -u postgres pg_ctl -D /var/lib/postgresql/{version}/main stop (๋ฒ„์ „ยท๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ฒฝ๋กœ ์กฐ์ •)

EDB Postgres AI ๋ฐ EPAS ํŠœ๋‹, ๋” ์•Œ์•„๋ณด๊ธฐ

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ ์ƒ์„ธ ํŠœ๋‹์ด๋‚˜ PoC๊ฐ€ ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด EDB Korea๋กœ ๋ฌธ์˜ํ•ด ์ฃผ์„ธ์š”.

์ด๋ฉ”์ผ: salesinquiry@enterprisedb.com

์ „ํ™”: 02-501-5113

๋ณธ๋ฌธ: Configure and Tune EPAS and PostgreSQL Database Servers on Linux

์ด๋ฉ”์ผ: salesinquiry@enterprisedb.com

Share this