
文章目錄
大家好,我是只談技術不剪發的 Tony 老師,
PostgreSQL 的默認配置引數通常都偏小,不太適合生產環境,因此,我們在安裝資料庫之后需要修改服務器的配置引數,上一篇文章中介紹了如何設定服務器的配置引數,今天給大家介紹一個快速計算 PostgreSQL 主要引數大小的方法,
我們可以使用 PGTune 在線工具根據給定硬體配置的最大性能計算出 PostgreSQL 的推薦配置,它的設定界面如下:

這個工具的使用非常簡單,我們可以輸入的引數包括:
- PostgreSQL 資料庫版本,可以通過
SELECT version();命令查看, - 資料庫服務器主機的作業系統,包括 Linux、Windows 以及 OS X,
- 資料庫應用的型別,包括:網站(Web Application)、在線交易處理系統(Online Transaction Processing)、資料倉庫(Data Warehouse)、桌面應用(Desktop application)以及混合型應用(Mixed type of application),配置頁面右側給出了不同應用型別的介紹,
- 服務器的記憶體大小,
- 服務器的 CPU 核數,可選引數,
- 最大的資料庫連接數,可選引數,
- 資料存盤設備的型別,包括 SSD、SAN 以及機械硬碟(HDD),
輸入必填引數之后點擊“Generate”按鈕,

PGTune 在頁面右側生成了推薦的配置引數,并且提供了修改組態檔 postgresql.conf 以及使用 ALTER SYSTEM 命令進行引數設定兩者方法,例如,我們輸入的硬體引數產生的組態檔內容如下:
# WARNING
# this tool not being optimal
# for very high memory systems
# DB Version: 13
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 128 GB
# CPUs num: 63
# Connections num: 500
# Data Storage: san
max_connections = 500
shared_buffers = 32GB
effective_cache_size = 96GB
maintenance_work_mem = 2GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 300
work_mem = 16777kB
min_wal_size = 2GB
max_wal_size = 8GB
max_worker_processes = 63
max_parallel_workers_per_gather = 4
max_parallel_workers = 63
max_parallel_maintenance_workers = 4
或者,生成的 ALTER SYSTEM 命令如下:
# WARNING
# this tool not being optimal
# for very high memory systems
# DB Version: 13
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 128 GB
# CPUs num: 63
# Connections num: 500
# Data Storage: san
ALTER SYSTEM SET
max_connections = '500';
ALTER SYSTEM SET
shared_buffers = '32GB';
ALTER SYSTEM SET
effective_cache_size = '96GB';
ALTER SYSTEM SET
maintenance_work_mem = '2GB';
ALTER SYSTEM SET
checkpoint_completion_target = '0.9';
ALTER SYSTEM SET
wal_buffers = '16MB';
ALTER SYSTEM SET
default_statistics_target = '100';
ALTER SYSTEM SET
random_page_cost = '1.1';
ALTER SYSTEM SET
effective_io_concurrency = '300';
ALTER SYSTEM SET
work_mem = '16777kB';
ALTER SYSTEM SET
min_wal_size = '2GB';
ALTER SYSTEM SET
max_wal_size = '8GB';
ALTER SYSTEM SET
max_worker_processes = '63';
ALTER SYSTEM SET
max_parallel_workers_per_gather = '4';
ALTER SYSTEM SET
max_parallel_workers = '63';
ALTER SYSTEM SET
max_parallel_maintenance_workers = '4';
關于這些引數的介紹和作用,可以參考官方檔案,
PostgreSQL 資料庫的優化不僅取決于硬體配置,而且還取決于資料庫的大小、客戶端的數量以及查詢的復雜性等各種因素,因此 PGTune 的推薦值不一定是最優設定,不過,我們可以將它作為一個初始配置,然后再根據實際情況進一步進行優化,
PGTune 是一個開源專案,托管在 GitHub,我們可以下載并部署一個自己的版本,
CSDN認證博客專家
資料庫架構師
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/264588.html
標籤:其他
