以下是Linux下PostgreSQL性能優化的關鍵技巧,涵蓋配置、索引、查詢及維護等方面:
shared_buffers
:設為物理內存的25%-40%,用于緩存表數據。work_mem
:根據并發量調整(如128MB-256MB),控制排序/哈希操作的內存使用。maintenance_work_mem
:提升VACUUM和索引重建效率,建議設為1GB-4GB。max_connections
:通過連接池(如PgBouncer)限制并發連接數,避免資源競爭。wal_buffers
:設為shared_buffers
的1/32,優化WAL日志寫入。WHERE
、JOIN
條件)創建索引。REINDEX
或VACUUM ANALYZE
維護索引。EXPLAIN ANALYZE
查看查詢步驟,識別全表掃描、索引失效等問題。Seq Scan
(順序掃描)、Index Scan
(索引掃描)的使用比例。SELECT *
,僅返回必要字段。JOIN
替代子查詢,或使用CTE
(公共表表達式)簡化復雜查詢。WHERE
子句中對索引列使用函數(如to_char
),可能導致索引失效。vm.swappiness
參數(建議設為10-30),減少內存換頁。ulimit -n
),應對高并發連接。VACUUM
回收死元組空間,ANALYZE
更新統計信息,優化查詢計劃。VACUUM FULL
(謹慎使用,建議在低峰期操作)。pg_stat_activity
監控活躍會話,pg_stat_bgwriter
跟蹤WAL寫入情況。pg_stat_statements
分析慢查詢,定位性能瓶頸。max_parallel_workers
參數,利用多核CPU加速查詢。參考來源:[1,2,3,4,5,6,7,8,9,11]