更新系统与软件包:运行sudo yum update -y确保CentOS系统及所有软件包(包括pgAdmin、PostgreSQL)为最新版本,修复已知性能bug。
调整内核参数:编辑/etc/sysctl.conf,添加或修改以下参数以优化网络和内存性能:
net.ipv4.tcp_tw_reuse = 1(重用TIME-WAIT连接)、net.ipv4.tcp_max_syn_backlog = 8192(增加SYN队列长度)、net.core.somaxconn = 1024(提升连接监听队列大小)、vm.swappiness = 10(减少swap使用,优先使用物理内存)。执行sudo sysctl -p使配置生效。
关闭无用服务:停止并禁用非必要服务(如firewalld,若无需防火墙),减少系统资源占用:sudo systemctl stop firewalld && sudo systemctl disable firewalld。
定期维护数据库:使用VACUUM命令清理表中死元组(无用数据),ANALYZE命令更新统计信息(帮助查询优化器生成高效执行计划):
VACUUM (VERBOSE, ANALYZE); -- 全局清理
VACUUM (VERBOSE, ANALYZE) table_name; -- 针对特定表
```。
**调整数据库配置**:根据服务器资源(内存、CPU)修改`postgresql.conf`关键参数:
- `shared_buffers`:设置为物理内存的25%-40%(如16GB内存设为4GB),用于缓存数据页;
- `work_mem`:每个查询操作(如排序、哈希)可使用的内存,建议设为4MB-16MB(根据并发查询量调整);
- `effective_cache_size`:操作系统缓存的大小,建议设为物理内存的50%-70%。
**使用索引与连接池**:为高频查询的`WHERE`、`JOIN`字段创建索引(如`CREATE INDEX idx_column ON table_name(column_name)`),减少全表扫描;配置连接池(如PgBouncer),复用数据库连接,降低连接建立/销毁的开销。
### PgAdmin自身配置优化:降低前端资源消耗
**调整PgAdmin配置**:修改`/usr/share/pgadmin4/web/config_local.py`(全局)或`~/.pgadmin/config_local.py`(用户级),增加缓存大小、限制并发查询:
- `CACHE_CONFIG = {'CACHE_TYPE': 'filesystem', 'CACHE_DIR': '/tmp/pgadmin_cache', 'CACHE_THRESHOLD': 10000}`(提升缓存容量,减少重复查询);
- `MAX_QUERY_THREADS = 4`(限制同时执行的查询数量,默认为CPU核心数,减少内存占用)。
**禁用不必要插件**:进入PgAdmin“设置”→“插件”,禁用未使用的插件(如第三方扩展、调试工具),减少资源消耗。
**升级PgAdmin版本**:使用`pip install --upgrade pgadmin4`升级到最新版本,新版本通常包含性能改进和bug修复。
### 网络与硬件优化:消除外部瓶颈
**优化网络连接**:调整`/etc/sysctl.conf`中的TCP参数,提升网络吞吐量:
`net.ipv4.tcp_fin_timeout = 30`(缩短TIME-WAIT状态的超时时间)、`net.ipv4.tcp_keepalive_time = 1200`(延长keepalive探测间隔)。若有防火墙,允许PostgreSQL端口(默认5432)通过:`sudo firewall-cmd --add-port=5432/tcp --permanent && sudo firewall-cmd --reload`。
**升级硬件配置**:若系统资源不足(如内存小于8GB、磁盘为机械硬盘),升级至SSD(提升IO速度)、增加内存(减少swap使用)、使用更高性能CPU(提升查询处理能力)。