zoukankan      html  css  js  c++  java
  • PostgreSQL配置文件参数优化

    postgresql.conf文件

    1.1 postgresql.conf与postgresql.auto.conf文件

    postgresql.auto.conf的优先级高于postgresql.conf,系统会先读postgresql.auto.conf的参数配置。使用alter system set仅修改postgresql.auto.conf文件的内容,且只有重启服务后才能读取到新参数配置,postgresql.conf则是通过文本编辑方式修改。将参数设回 default 时,auto.conf文件的这项配置会被删除,重新用回 conf 文件的设置。

    1.2 参数详解

    1.2.1 连接设置

    listen_addresses

    参数含义:指定数据库用来监听客户端连接的TCP/IP地址。

    参数优化:如需接受其他Client的连接请求,需修改为*

    max_connections

    参数含义:数据库可以同时建立的最大的客户端连接的数目。

    参数优化:根据业务应用情况和主机配置设置。不宜设置过大,如连接数大于一定数量(与机器配置相关)时,会因为进程上下文的频繁切换导致性能降低。

    查看当前连接数的SQL:SELECT sum(numbackends) FROM pg_stat_database;

    1.2.2 内存相关

    shared_buffers

    参数含义:数据库共享内存缓冲区大小,决定有多少内存可以被PostgreSQL用于缓存数据,该缓冲区为所有连接共用。

    参数优化:服务器内存较小时设置为服务器内存的25%-40%,内存较大时可适当设置。

    work_mem

    参数含义:内部排序和哈希操作可使用的工作内存大小。

    参数优化:全局设置此参数可能会导致内存使用率过高,即当同时有多个会话进行排序操作时,每个会话会分配到这个参数大小的内存。设置不宜过大。如果要使用语句中有较大的排序操作,可以在会话级别设置该参数(如:set work_men = ‘2GB’)。

    wal_buffers

    参数含义:WAL(预写日志)记录写入的缓冲区的大小。PostgreSQL将其WAL(预写日志)记录写入缓冲区,然后将这些缓冲区刷新到磁盘。

    参数优化:当单事务的数据修改量很大,产生的日志大于wal_buffers时,可适当调大该值。当有比较多的并发短事务时,可与参数commit_delay及commit_siblings连用,并适当调大该值。

    commit_delay

    参数含义:事务提交后,日志写到wal_buffer上到wal_buffer写到磁盘的时间间隔。

    参数优化:当有比较多的并发短事务时,可以适当增加该值,使日志缓冲区一次刷盘可以刷出较多的事务,减少IO次数,提高性能。需要和commit_sibling配合使用。

    commit_siblings

    参数含义:触发commit_delay等待的并发事务数,即系统的并发活跃事务数达到了该值,事务才会等待commit_delay的时间后才将日志刷新到磁盘。

    参数优化:若系统中并发活跃事务达不到该值,commit_delay将不起作用,为防止在系统并发压力较小的情况下事务提交后空等其他事务,不宜设置过大。

    effective_cache_size

    参数含义:除操作系统本身和其他应用程序可用的内存外,期望操作系统和数据库本身可用于缓存数据的内存大小。和shared_buffer等内存无关,只是给优化器生成计划使用的一个假设值。

    参数优化:如果设置有误会影响优化器的判断,得出不合理的执行计划。建议的设置为可用空闲内存的25%。

    maintenance_work_mem

    参数含义:执行vacuum ,create index,alter table add foreign key,restoring database dumps等操作时可使用的内存大小。

    参数优化:由于这类操作并发数不会很大,增大此参数相对较为安全,如希望提升这些操作的性能,可适当加大此参数。



    作者:871a6bb90070
    链接:https://www.jianshu.com/p/ffee8939e2ed
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    ant+jmeter 报告优化
    使用no-gui 模式执行分布式测试
    jmeter 4.0使用本机做slave
    jmeter 4.0,分布式测试
    jmeter 跨线程执行变量
    jmeter if 控制器
    jmeter 获取cookie
    jmeter 使用 P函数 自动控制ip和端口等变量
    linux 配置tomcat环境变量
    linux 配置jdk环境变量
  • 原文地址:https://www.cnblogs.com/telwanggs/p/13044133.html
Copyright © 2011-2022 走看看