postgresql数据库参数优化
 postgresql数据库参数优化 
 postgresql数据库参数优化
pgtune参数配置工具使用
可以使用pgtune工具,会根据硬件配置提供pg参数设置建议。 
 git地址 
 在线网站
数据库参数确认
修改后,使用sql查看配置是否生效。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT name, setting, unit, boot_val, reset_val, source, pending_restart
FROM pg_settings
WHERE name IN (
    'max_connections',
    'shared_buffers',
    'effective_cache_size',
    'maintenance_work_mem',
    'checkpoint_completion_target',
    'wal_buffers',
    'default_statistics_target',
    'random_page_cost',
    'effective_io_concurrency',
    'work_mem',
    'huge_pages',
    'min_wal_size',
    'max_wal_size',
    'max_worker_processes',
    'max_parallel_workers_per_gather',
    'max_parallel_workers',
    'max_parallel_maintenance_workers'
);
效果评估
使用pg扩展监控
pg_stat_statements是PostgreSQL的一个扩展,它提供了关于数据库中执行的所有SQL语句的统计信息,对于监控和分析数据库性能非常有用。
使用准备
修改postgresql.conf文件,在shared_preload_libraries项追加扩展(多个用逗号分隔),并重启服务。
1
shared_preload_libraries = 'pg_stat_statements'
1
2
-- 安装扩展
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
注意:开启扩展监控会有额外的性能损耗,后续可以使用 SELECT pg_disable_extension('pg_stat_statements');禁用扩展或修改配置文件剔除。
使用示例
1
2
3
4
5
6
7
8
9
10
11
12
SELECT 
    query as "执行的SQL语句", 
    calls as "语句被调用的次数", 
    total_exec_time as "语句总的执行时间(毫秒)", 
    (total_exec_time / calls) as "平均每次执行的时间(毫秒)",
    rows as "返回或处理的行数", 
    100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) as "缓存命中率(共享缓冲区命中次数除以总访问次数)"
FROM 
    pg_stat_statements 
ORDER BY 
    total_exec_time DESC 
LIMIT 10;
使用pgAdmin工具监控
pgAdmin是一个PostgreSQL的管理工具,提供了实时监控数据库活动的功能。 
 官网下载链接 
 可以通过提供的Dashboard和Statistics等图表查看。
 本文由作者按照  CC BY 4.0  进行授权
