• PostgreSQL 配置参数


    一、配置参数所在文件、类型与查看方式

    1、配置参数所在文件

    postgresql.conf

    2、配置参数类型

    1)internal只读参数

    这些参数不配置在postgresql.conf中,他们由postgres程序和在初始化实例时写死

    2)postmaster

    这些参数的值需要重启PostgreSQL实例。在postgresql.conf文件中改变这些参数后,

    需要重启PostgreSQL实例才能生效。

    3)sigup

    在postgresql.conf中改变参数值,不需要重启数据库;只需要向数据库postmaster

    进程发送SIGHUP信号。

    4)backend

    在postgresql.conf中改变参数值,不需要重启数据库;只需要向数据库postmaster

    进程发送SIGHUP信号

    但是新的配置值只会在之后新的连接中有效,在已有的连接中不生效。

    5)superuser

    需要超级用户使用set来改变;

    超级用户改变此参数数值时,只会影响自身的session配置,不会影响其他用户。

    向postmaster进程发送SIGHUP信号,也只会影响后续建的连接。

    6)user

    普通用户可以使用set命令来改变;

    3、查看方式

    1)所有配置参数都在系统试图pg_settings中

    select enumvals from pg_settings where name='client_min_messages';

    2)通过pg_settings表中的context字段来查看参数类型

    select  name,context from pg_settings where name like 'wal_buffers';

    二、配置参数

    1、连接配置项

    1)listen_addresses

    声明服务器监听客户端连接的TCP/IP地址,改变这个参数需要重启数据库服务。

    如果主机有多个IP,用逗号隔开,PostgreSQL服务在多个IP地址上监听。

    当配置为0.0.0.0或*,表示监听本机的所有IP

    默认值是localhost,表示只允许本地使用loopback连接到数据库,其他机器无法连接到

    如果值为空,只有UNIX域套接字可以连接到

    2)port

    指定服务器监听的TCP端口,默认为5432

    改变这个参数需要重启服务器

    同一个端口用于服务器监听的所有IP地址

    3)max_connections

    允许数据库连接的最大并发连接数,改变此参数需要重启数据库服务

    默认100

    4)superuser_reserved_connections

    为PostgreSQL超级用户连接而保留的连接数,默认值为3。

    改变此参数需要重启。

    这个值必须小于max_connections

    max_connections-superuser_reserved_connections=普通用户最大连接数

    5)unix_socket_group

    6)unix_socket_permissions

    7)

    2、内存配置项

    1)shared_buffers

    数据库服务器共享内存缓冲区的数量,缓存数据块使用。

    默认4000个块,4000*8K=32MB

    此值必须大于16,并且至少是max_connections的两倍

    2)temp_buffer

    设置每个数据库会话使用临时缓冲区的最大数目。

    只用于访问临时表。

    临时缓冲区是在某个连接会话的服务进程中分配的,属于本地内存。

    默认1000,对于8K的数据块大小为8MB

    每个会话可以使用SET命令设置,必须在会话第一次使用临时表前设置,一旦使用临时表之后,在改变此参数将是无效的

    并不是一启动会话就分配,需要时才分配

    3)work_mem

    内部排序操作、Hash表开始使用临时磁盘文件之前可使用的内存数目

    这个内存是本地内存,数值以千字节为单位,默认是1024千字节(1MB)

    4)maintenance_work_mem

    生命在维性护操中使用的最大内存数,比如:VACUUM、CREATE INDEX、ALter table add foreign key

    默认为16MB

    把这个设置的比work_mem大一些,可以提高操作速度

    在配置autovacuum后,若时间达到了autovacuum_max_workers数值,将分配这个内存

    因此也不要将这个数值设置太大,若需要手工操作,可使用set命令把此参数设置大一些

    5)max_stack_depth

    声明服务器执行堆栈内核限制值

    默认为2MB,如果发现不能运行复杂函数,可以适当调高此值,通常保持默认即可

    3、预写日志的配置项

    1)wal_level

    可选择值为minimal、archive、hot_standby

    minimal即只写入数据库崩溃或突然关机后进行恢复时需要的信息

    archive即会添加WAL归档需要的记录

    hot_standby会添加一些备库只读查询需要的信息

    当执行create table as、create index、cluster、copy into tables 等批量操作时,如果wal_level

    设置为minimal,则会产生很少的日志,原因是批量操作的具体过程可以安全跳过,并不影响恢复

    2)fsync

    是否使用

    3)synchronous_commit

    声明提交一个事务是否需要等待其把WAL日志写入磁盘后再返回,默认是“on”

    4)wal_sync_method

    用来指定向磁盘强制更新WAL日志数据的方法

    5)full_page_writes

    6)wal_buffers

    wal缓冲区,默认为-1,大小为1/32的shared_buffer,最小不少于64k,最大不大于一个wal_segment(默认16M大小),一般保持默认即可,因为过了wal_writer_delay(默认200ms)总会刷新清空此缓存,设置太大了也用不上.

    7)wal_writer_day

    指定wal writer process把WAL

    8)commit_delay

    9)commit_siblings

    4、错误报告和日志项

    logging_collector = on

  • 相关阅读:
    python 检测mobileprovision证书的过期时间
    dynamodb 分区键排序键介绍
    dynamodb 基本操作
    Python 实现一个栈
    openstack阅读链接
    mongoengine文档
    机器学习链接
    mongoengine的使用
    Timer(让函数定时执行)
    线程,进程,IO多路复用,协程的代码
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11101495.html
Copyright © 2020-2023  润新知