> For the complete documentation index, see [llms.txt](https://docs.greennode.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.greennode.ai/vn/vdb/relational-database-service-rds/postgresql-cluster/cau-hinh-tham-so-cho-cluster.md).

# Cấu hình tham số cho PostgreSQL Cluster

Trang này liệt kê các parameter có thể tùy chỉnh thông qua **DB Configuration Group** khi sử dụng vDB PostgreSQL Cluster (1 Writer + N Readers).

{% hint style="info" %}

* Các parameter này áp dụng cho PostgreSQL version **15, 16, 17**.
* **Restart Required** = Có: Thay đổi parameter này yêu cầu **restart** cluster để áp dụng.
* **Restart Required** = Không: Thay đổi được áp dụng ngay lập tức mà không cần restart.
* Tất cả parameter trong danh sách đều có thể chỉnh sửa (modifiable).
  {% endhint %}

{% hint style="warning" %}
**Lưu ý về memory**: Nhiều parameter ảnh hưởng trực tiếp đến tổng lượng RAM mà PostgreSQL tiêu thụ. Đặt giá trị quá cao so với RAM của node có thể khiến PostgreSQL bị **OOMKilled**.

**Các parameter ảnh hưởng đến memory:**

* `max_connections` — khi có active query, memory tăng thêm do `work_mem` cấp phát per sort/hash operation và nhân với số connection đồng thời
* `shared_buffers` — cấp phát shared memory ngay khi PostgreSQL start và **không trả lại cho OS** trong suốt vòng đời process; đặt quá lớn sẽ chèn ép OS page cache, làm giảm hiệu quả I/O
* `work_mem` — nhân với số connection đồng thời **và** số sort/hash operation per query; tổng thực tế có thể rất lớn khi nhiều query phức tạp chạy song song
* `temp_buffers` — buffer temp table per session, nhân với `max_connections`
* `max_worker_processes` — mỗi background worker tiêu thụ thêm memory
* `max_wal_senders` — mỗi WAL sender process cần thêm memory

Hãy chọn giá trị phù hợp với RAM của flavour node đang dùng.
{% endhint %}

{% hint style="info" %}
**Hành vi khi bỏ parameter khỏi DB Configuration Group**: Với PostgreSQL Cluster, khi bạn bỏ một parameter khỏi DB Configuration Group đang gắn với cluster, parameter đó **giữ nguyên giá trị đang có** và **không** trở về giá trị mặc định của Database Engine. Điều này khác với PostgreSQL Standalone (Single node), nơi parameter bị bỏ sẽ trở về giá trị mặc định của Database Engine.

Mỗi lần chỉnh sửa, bạn có thể thay đổi một hoặc nhiều parameter. Các parameter không được thay đổi trên portal sẽ giữ nguyên giá trị đang có.
{% endhint %}

***

### Connections

| Parameter         | Giá trị mặc định | Giá trị cho phép | Kiểu    | Unit | Công dụng                                                      | Restart Required |
| ----------------- | ---------------- | ---------------- | ------- | ---- | -------------------------------------------------------------- | ---------------- |
| `max_connections` | 100              | 25 - 2000        | integer |      | Số lượng tối đa các connection đồng thời truy cập đến database | **Có**           |

### Memory & Buffers

| Parameter                   | Giá trị mặc định | Giá trị cho phép  | Kiểu    | Unit | Công dụng                                                         | Restart Required |
| --------------------------- | ---------------- | ----------------- | ------- | ---- | ----------------------------------------------------------------- | ---------------- |
| `shared_buffers`            | 16384            | 16 - 1073741823   | integer | 8kB  | Memory dùng làm buffer cho shared memory giữa các backend process | **Có**           |
| `work_mem`                  | 4096             | 64 - 2147483647   | integer | kB   | Memory cho ORDER BY, JOIN, DISTINCT; vượt ngưỡng sẽ dùng disk     | Không            |
| `maintenance_work_mem`      | 65536            | 1024 - 2147483647 | integer | kB   | Memory cho VACUUM, CREATE INDEX                                   | Không            |
| `temp_buffers`              | 1024             | 100 - 1073741823  | integer | 8kB  | Buffer memory cho mỗi session                                     | Không            |
| `max_prepared_transactions` | 0                | 0 - 262143        | integer |      | Số transaction ở trạng thái prepared                              | **Có**           |

### Autovacuum

| Parameter                      | Giá trị mặc định | Giá trị cho phép | Kiểu    | Unit | Công dụng                              | Restart Required |
| ------------------------------ | ---------------- | ---------------- | ------- | ---- | -------------------------------------- | ---------------- |
| `autovacuum`                   | on               | true / false     | boolean |      | Bật/tắt Autovacuum                     | Không            |
| `autovacuum_naptime`           | 60               | 1 - 2147483      | integer | s    | Thời gian giữa 2 lần vacuum cùng table | Không            |
| `autovacuum_vacuum_threshold`  | 50               | 0 - 2147483647   | integer |      | Ngưỡng row update/delete để VACUUM     | Không            |
| `autovacuum_analyze_threshold` | 50               | 0 - 2147483647   | integer |      | Ngưỡng row change để ANALYZE           | Không            |

### Logging

| Parameter                    | Giá trị mặc định | Giá trị cho phép | Kiểu    | Unit | Công dụng                                                     | Restart Required |
| ---------------------------- | ---------------- | ---------------- | ------- | ---- | ------------------------------------------------------------- | ---------------- |
| `log_min_duration_statement` | -1               | -1 - 2147483647  | integer | ms   | Log query chạy lâu hơn thời gian chỉ định. Giá trị `-1` = tắt | Không            |

### Query Planning & Optimization

| Parameter              | Giá trị mặc định | Giá trị cho phép | Kiểu    | Unit | Công dụng                                 | Restart Required |
| ---------------------- | ---------------- | ---------------- | ------- | ---- | ----------------------------------------- | ---------------- |
| `effective_cache_size` | 524288           | 1 - 2147483647   | integer | 8kB  | Ước tính disk cache để planner chọn index | Không            |
| `random_page_cost`     | 4                | 0 - 1.79769e+308 | float   |      | Cost truy cập page random                 | Không            |
| `seq_page_cost`        | 1                | 0 - 1.79769e+308 | float   |      | Cost truy cập page sequential             | Không            |
| `enable_seqscan`       | on               | true / false     | boolean |      | Bật/tắt seq scan                          | Không            |
| `enable_indexscan`     | on               | true / false     | boolean |      | Bật/tắt index scan                        | Không            |
| `enable_hashjoin`      | on               | true / false     | boolean |      | Bật/tắt hash join                         | Không            |

### Locale & Format

| Parameter   | Giá trị mặc định | Giá trị cho phép  | Kiểu   | Unit | Công dụng                | Restart Required |
| ----------- | ---------------- | ----------------- | ------ | ---- | ------------------------ | ---------------- |
| `DateStyle` | ISO, MDY         | Xem bảng bên dưới | string |      | Format hiển thị ngày giờ | Không            |

**Các giá trị DateStyle được hỗ trợ:**

| DateStyle     | Input ví dụ               | Output ví dụ               |
| ------------- | ------------------------- | -------------------------- |
| ISO, DMY      | `01-02-2026` → 1 Feb 2026 | `2026-02-01`               |
| ISO, MDY      | `01-02-2026` → 2 Jan 2026 | `2026-01-02`               |
| ISO, YMD      | `2026-02-01` → 1 Feb 2026 | `2026-02-01`               |
| SQL, DMY      | `01-02-2026` → 1 Feb 2026 | `01/02/2026`               |
| SQL, MDY      | `01-02-2026` → 2 Jan 2026 | `01/02/2026`               |
| SQL, YMD      | `2026-02-01` → 1 Feb 2026 | `2026-02-01`               |
| Postgres, DMY | `01-02-2026` → 1 Feb 2026 | `Fri 01 Feb 00:00:00 2026` |
| Postgres, MDY | `01-02-2026` → 2 Jan 2026 | `Fri 02 Jan 00:00:00 2026` |
| Postgres, YMD | `2026-02-01` → 1 Feb 2026 | `Fri 01 Feb 00:00:00 2026` |
| German, DMY   | `01.02.2026` → 1 Feb 2026 | `01.02.2026`               |
| German, MDY   | `01.02.2026` → 2 Jan 2026 | `02.01.2026`               |
| German, YMD   | `2026.02.01` → 1 Feb 2026 | `01.02.2026`               |

### Asynchronous & Workers

| Parameter              | Giá trị mặc định | Giá trị cho phép | Kiểu    | Unit | Công dụng                       | Restart Required |
| ---------------------- | ---------------- | ---------------- | ------- | ---- | ------------------------------- | ---------------- |
| `max_worker_processes` | 32               | 2 - 65536        | integer |      | Số tiến trình background tối đa | **Có**           |

### Replication & WAL

| Parameter                         | Giá trị mặc định | Giá trị cho phép      | Kiểu    | Unit | Công dụng                                                                                                                                             | Restart Required |
| --------------------------------- | ---------------- | --------------------- | ------- | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| `wal_level`                       | replica          | `replica` / `logical` | string  |      | Mức độ thông tin ghi vào WAL. Đặt `logical` để dùng Logical Replication hoặc CDC                                                                      | **Có**           |
| `max_wal_senders`                 | 10               | 10 - 65536            | integer |      | Số lượng WAL sender process tối đa, dùng cho streaming replication và CDC                                                                             | **Có**           |
| `max_logical_replication_workers` | 4                | 0 - 262143            | integer |      | Số lượng worker tối đa cho Logical Replication ở phía subscriber (apply worker và table sync worker). Mỗi worker được tính vào `max_worker_processes` | **Có**           |
| `max_wal_size`                    | 2048             | 32 - 2147483647       | integer | MB   | Kích thước WAL tối đa trước khi trigger checkpoint                                                                                                    | Không            |
| `checkpoint_timeout`              | 300              | 30 - 86400            | integer | s    | Khoảng thời gian tối đa giữa hai checkpoint tự động                                                                                                   | Không            |

### pg\_cron

| Parameter            | Giá trị mặc định                               | Giá trị cho phép                             | Kiểu   | Unit | Công dụng                                                                                  | Restart Required |
| -------------------- | ---------------------------------------------- | -------------------------------------------- | ------ | ---- | ------------------------------------------------------------------------------------------ | ---------------- |
| `cron.database_name` | Database đầu tiên bạn tạo khi khởi tạo Cluster | `^(?!postgres$)[a-zA-Z_][a-zA-Z0-9_]{0,62}$` | string |      | Database mà pg\_cron chạy job. Extension `pg_cron` chỉ tạo và dùng được trong database này | **Có**           |

### Transactions & Locking

| Parameter                   | Giá trị mặc định | Giá trị cho phép | Kiểu    | Unit | Công dụng                      | Restart Required |
| --------------------------- | ---------------- | ---------------- | ------- | ---- | ------------------------------ | ---------------- |
| `max_locks_per_transaction` | 64               | 10 - 2147483647  | integer |      | Số lock tối đa mỗi transaction | **Có**           |
