μμ±: 2026-04-23 09:58:32μμ : 2026-04-23 09:58:32
PostgreSQL 16μμ 17λ‘ μ κ·Έλ μ΄λ κ°μ΄λ: μ£Όμ λ³κ²½μ λ° λ§μ΄κ·Έλ μ΄μ
PostgreSQL 17μ μ±λ₯ μ΅μ ν, κ΄λ¦¬ νΈμμ± ν₯μ, κ·Έλ¦¬κ³ SQL νμ€ μ§μ κ°νμ μ€μ μ λ λκ·λͺ¨ μ λ°μ΄νΈμ λλ€. νΉν μ§λ³΄λ μ§κ³΅(VACUUM) νλ‘μΈμ€μ μ¦λΆ λ°±μ (Incremental Backup) κΈ°λ₯μ λ°μ΄ν°λ² μ΄μ€ μ΄μ ν¨μ¨μ±μ νκΈ°μ μΌλ‘ λμ¬μ€λλ€.
1. PostgreSQL 17 μ£Όμ λ³κ²½μ
1.1 μ±λ₯ λ° μ΄μ μ΅μ ν
- VACUUM λ©λͺ¨λ¦¬ κ΄λ¦¬ νμ : VACUUM μμ μ μ¬μ©νλ λ©λͺ¨λ¦¬ κ΄λ¦¬ λ°©μμ΄ μμ ν μ¬μ€κ³λμ΄, λ©λͺ¨λ¦¬ μλΉλμ΄ μ΄μ λ²μ λλΉ μ΅λ 20λ°° κ°μνμ΅λλ€. μ΄λ κ³ λΆν μμ€ν μμ μμ κ²½ν©μ μ€μ¬μ€λλ€.
- μ€νΈλ¦¬λ° I/O λμ
: μμ°¨ μ€μΊ(Sequential Scan) λ°
ANALYZEμμ μλλ₯Ό λμ¬μ£Όλ μλ‘μ΄ μ€νΈλ¦¬λ° I/O μΈν°νμ΄μ€κ° μΆκ°λμμ΅λλ€. - μ¦λΆ λ°±μ
(Incremental Backup):
pg_basebackupμμ μ¦λΆ λ°±μ μ κΈ°λ³Έ μ§μν©λλ€. λνpg_combinebackupλꡬλ₯Ό μ¬μ©νμ¬ μ¦λΆ λ°±μ λ³Έμ μ 체 λ°±μ λ³ΈμΌλ‘ 볡μν μ μκ² λμ΄ λ°±μ ν¨μ¨μ±μ΄ κ·Ήλνλμμ΅λλ€.
1.2 SQL λ° κ°λ°μ νΈμ κΈ°λ₯
- SQL/JSON νμ€ μ§μ:
JSON_TABLE()ν¨μλ₯Ό ν΅ν΄ JSON λ°μ΄ν°λ₯Ό κ΄κ³ν ν μ΄λΈ ννλ‘ λ³ννμ¬ SQL μ‘°μΈμ΄λ νν°λ§μ νμ©ν μ μμ΅λλ€.JSON_EXISTS(),JSON_QUERY(),JSON_VALUE()λ± μλ‘μ΄ μΏΌλ¦¬ ν¨μλ€μ΄ μΆκ°λμμ΅λλ€.
- MERGE ꡬ문 κ°ν:
MERGEλͺ λ ΉμμRETURNINGμ μ μ¬μ©ν μ μκ² λμμΌλ©°, μ λ°μ΄νΈ κ°λ₯ν λ·°(Updatable Views)λ₯Ό λμμΌλ‘λ μ€νν μ μμ΅λλ€. - COPY μ€λ₯ 무μ:
COPYλͺ λ Ήμ΄μON_ERROR ignoreμ΅μ μ΄ μΆκ°λμ΄, μΌλΆ νμ μλ¬κ° μλλΌλ μμ μ μ€λ¨νμ§ μκ³ κ³μ μ§νν μ μμ΅λλ€.
1.3 λ Όλ¦¬μ 볡μ (Logical Replication)
- pg_createsubscriber: 물리μ λκΈ° μλ²(Physical Standby)λ₯Ό λ Όλ¦¬μ 볡μ λ³Έ(Logical Replica)μΌλ‘ μμ½κ² μ νν μ μλ μλ‘μ΄ μ νΈλ¦¬ν°κ° λμ λμμ΅λλ€.
- μ₯μ μ‘°μΉ(Failover) μ§μ: κΈ°λ³Έ μλ² μ₯μ μμλ ꡬλ μ(Subscriber)κ° λκΈ°ν μνλ₯Ό μ μ§ν μ μλλ‘ μ μ΄ κΈ°λ₯μ΄ κ°μ λμμ΅λλ€.
2. μ κ·Έλ μ΄λ μ μ£Όμμ¬ν
- λ Όλ¦¬μ 볡μ μ¬λ‘―: PostgreSQL 17λ‘ μ κ·Έλ μ΄λν λλ κΈ°μ‘΄μ λ Όλ¦¬μ 볡μ μ¬λ‘―μ΄ λ³΄μ‘΄λμ§ μμ΅λλ€(17μμ 18λ‘ κ° λλ κ°λ₯). λ°λΌμ μ κ·Έλ μ΄λ μ μ¬λ‘―μ μμ νκ³ μ κ·Έλ μ΄λ ν λ€μ μμ±ν΄μΌ ν©λλ€.
- Search Path 보μ: 보μ κ°νλ₯Ό μν΄ κ΄λ¦¬ μμ
μ€
search_pathκ·μΉμ΄ λ μ격νκ² μ μ©λ©λλ€. μΈλ±μ€ μμ΄λ ꡬ체νλ λ·°μμ μ¬μ©λλ ν¨μλ μ€ν€λ§ λͺ μΉμ λͺ μμ μΌλ‘ μ§μ νλ κ²μ΄ κΆμ₯λ©λλ€. - μ§μ μ€λ¨: AIX OS μ§μμ΄ κ³΅μμ μΌλ‘ μ€λ¨λμμ΅λλ€.
3. λ§μ΄κ·Έλ μ΄μ μ μ°¨ (pg_upgrade)
κ°μ₯ κΆμ₯λλ λ°©μμ λ°μ΄ν° νμΌμ μ§μ 볡μ¬νμ§ μκ³ λ§ν¬λ§ μμ±νλ --link λͺ¨λλ₯Ό μ¬μ©νλ κ²μ
λλ€.
# 1. μ λ²μ (17)μ λ°μ΄λ리 μ€μΉ λ° λ°μ΄ν° λλ ν 리 μ΄κΈ°ν(initdb)
# 2. μ
κ·Έλ μ΄λ νΈνμ± μ²΄ν¬
pg_upgrade \
--old-datadir /var/lib/postgresql/16/main \
--new-datadir /var/lib/postgresql/17/main \
--old-bindir /usr/lib/postgresql/16/bin \
--new-bindir /usr/lib/postgresql/17/bin \
--check
# 3. μ€μ μ
κ·Έλ μ΄λ μν (νλλ§ν¬ λͺ¨λ κΆμ₯)
pg_upgrade \
--old-datadir /var/lib/postgresql/16/main \
--new-datadir /var/lib/postgresql/17/main \
--old-bindir /usr/lib/postgresql/16/bin \
--new-bindir /usr/lib/postgresql/17/bin \
--link4. μ κ·Έλ μ΄λ ν λ§λ¬΄λ¦¬ μμ
- ν΅κ³ μ 보 κ°±μ : μ
κ·Έλ μ΄λ μ§νμλ μ€ν κ³ν μ΅μ νλ₯Ό μν΄
./analyze_new_cluster.shλ₯Ό μ€ννμ¬ ν΅κ³ μ 보λ₯Ό λ€μ μμ§ν΄μΌ ν©λλ€. - μ΅μ€ν μ μ λ°μ΄νΈ: PostGIS λ± μ¬μ© μ€μΈ μΈλΆ νμ₯μ΄ 17 λ²μ μ λ§κ² μ λ°μ΄νΈλμλμ§ νμΈνκ³ νμν κ²½μ° μ¬μ€μΉν©λλ€.
- μΈλ±μ€ μ¬κ΅¬μ±: μ λ ¬(Collation) κ΄λ ¨ λΌμ΄λΈλ¬λ¦¬ μ
λ°μ΄νΈκ° μμλ€λ©΄
REINDEXλ₯Ό ν΅ν΄ μΈλ±μ€ 무결μ±μ νμΈνλ κ²μ΄ μ’μ΅λλ€.
PostgreSQL 17μ νΉν λκ·λͺ¨ λ°μ΄ν°λ₯Ό λ€λ£¨λ νκ²½μμ VACUUM μ±λ₯ ν₯μκ³Ό μ¦λΆ λ°±μ λ§μΌλ‘λ μΆ©λΆν μ κ·Έλ μ΄λν κ°μΉκ° μλ λ²μ μ λλ€.