发布于2026-08-20 阅读(0)
扫一扫,手机访问
精选:Debian上PostgreSQL性能调优案例

案例一 连接风暴与资源耗尽
SHOW max_connections; 与 select setting from pg_catalog.pg_settings where name='max_connections';select datname,pid,usename,query_start,wait_event,wait_event_type,state,query from pg_stat_activity order by query_start desc;select pg_cancel_backend(pid); 或 select pg_terminate_backend(pid);max_connections = 500,重启生效并用 SHOW max_connections; 验证。* soft/hard nofile 65536 与 * soft/hard nproc 65536,并重启会话/服务。案例二 慢查询与缺失索引
EXPLAIN (ANALYZE, BUFFERS) 查看执行计划与实际耗时,识别 Seq Scan、Nested Loop 等异常算子与高成本节点。CREATE INDEX idx_col ON t(col);;复合 CREATE INDEX idx_col1_col2 ON t(col1, col2);CREATE INDEX idx_cover ON t(col1, col2) INCLUDE (col3);(按需选择 INCLUDE 语法版本支持)CREATE INDEX idx_expr ON t ((lower(email)));;CREATE INDEX idx_part ON t(status) WHERE status = 'active';VACUUM ANALYZE t;,必要时 REINDEX INDEX idx_name; 重建碎片化索引。案例三 高并发写入与 WAL 瓶颈
SELECT * FROM pg_stat_replication;(关注 write_lag/replay_lag)wal_level = replicamax_wal_senders = 10wal_keep_size = 1024(单位 MB)archive_mode = onarchive_command = 'cd .'(示例占位,生产请配置可靠归档)synchronous_commit(如 remote_apply 提升备库一致性,代价是更高提交延迟)synchronous_standby_names = '*'synchronous_commit = off/local 降低提交等待,但需配合监控与业务容忍度评估。案例四:内存与后台作业引发的性能波动
EXPLAIN (ANALYZE, BUFFERS) 识别 Sort/Hash 是否溢出到磁盘(看到 Disk 字样)。pg_stat_activity 与日志确认是否并发执行大量 VACUUM/ CREATE INDEX/ ANALYZE。shared_buffers:通常设为内存的 25%–40%(如 4GB)work_mem:为排序/哈希操作分配内存(如 64MB),注意其为“每个排序/哈希操作”的预算,过高会导致总内存超限maintenance_work_mem:为 VACUUM/ CREATE INDEX/ ANALYZE 等维护任务分配更大内存(如 512MB–1GB),减少磁盘临时文件案例五 CPU 飙升与查询优化联动
cpustat(需安装 sysstat:sudo apt-get install sysstat)观察热点函数与 CPU 占用:watch -n 2 cpustat 或 cpustat > cpu_usage.txtpg_stat_activity 找出高 CPU 消耗的查询,配合 EXPLAIN ANALYZE 分析瓶颈算子。work_mem 减少排序/哈希落盘(避免一次性拉高过多);结合连接池降低并发争用。renice 降低非关键后台任务优先级,保障前台查询资源。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9