Ubuntu系统中PostgreSQL数据库性能调优方法
sudo apt update && sudo apt upgrade,确保PostgreSQL、PgAdmin及系统内核等组件为最新版本,修复已知性能bug。top或htop监控资源占用,优先保障PostgreSQL进程的资源分配。配置文件路径:/etc/postgresql/<version>/main/postgresql.conf(Ubuntu系统),修改后需重启服务(sudo systemctl restart postgresql)生效。
checkpoint_segments=10、checkpoint_timeout=15min)。WHERE status='active' AND create_time > '2025-01-01'),创建复合索引(列顺序需按查询频率和选择性排序,选择性高的列在前)。UPPER(name)、DATE(create_time))创建索引,避免查询时重复计算。REINDEX TABLE table_name重建碎片化索引(尤其在大批量数据更新后)。pg_stat_user_indexes视图查看索引使用情况,避免索引过多导致写性能下降)。SELECT *:只查询需要的列,减少数据传输量。WHERE子句:添加有效过滤条件,减少结果集大小(如避免WHERE column LIKE '%keyword%'这类无法使用索引的全模糊查询)。INNER JOIN(比LEFT JOIN更高效),确保连接条件上有索引。EXPLAIN ANALYZE query_sql查看查询计划,重点关注Seq Scan(全表扫描,需优化索引)、Sort(内存不足导致的磁盘排序)、Nested Loop(大表关联时的性能瓶颈)等节点,针对性调整。VACUUM:清理表中的“死元组”(如DELETE、UPDATE操作产生的无效数据),释放空间(自动执行的autovacuum需开启,默认开启)。ANALYZE:更新表的统计信息(如行数、数据分布),帮助优化器生成更优的执行计划(autovacuum也会自动执行,但大表可手动执行ANALYZE table_name)。pg_stat_statements:查看SQL执行频率、执行时间、调用次数(需在postgresql.conf中启用shared_preload_libraries = 'pg_stat_statements'),识别慢查询。pg_stat_activity:查看当前数据库活动(如连接状态、执行的SQL),排查长时间运行的查询。