PostgreSql 参数配置

这篇具有很好参考价值的文章主要介绍了PostgreSql 参数配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、访问控制参数配置

https://xiaosonggong.blog.csdn.net/article/details/124264877

二、数据库参数配置

2.1 概述

  PostgreSQL 的参数配置参数是在 postgresql.conf 文件中集中管理的,类似于 Oracle 的 pfile 文件,除此之外,PostgreSQL 还有一个 postgresql.auto.conf 文件,这个文件保存了通过 alter system 命令修改的设置,类似与 Oracle 的 spfile 文件,区别如下:

postgresql.conf pfile postgresql.auto.conf spfile
ASCII文本文件 ASCII文本文件 ASCII文本文件 二进制文件
手动编辑 手动编辑 手动编辑、alter system 修改 alter system 修改
重启库或重载配置文件生效 用 pfile 重启库生效 重启库或重载配置文件生效 立即生效或重启库生效

2.2 定义规则说明

示例如下

--postgresql.conf 部分示例
# - Memory -

shared_buffers = 128MB                  # min 128kB
                                        # (change requires restart)
#huge_pages = try                       # on, off, or try
                                        # (change requires restart)
#temp_buffers = 8MB                     # min 800kB
#max_prepared_transactions = 0          # zero disables the feature
                                        # (change requires restart)

--postgresql.auto.conf 部分示例
listen_addresses = '*'
max_connections = '200'
superuser_reserved_connections = '10'
shared_buffers = '500MB'
log_destination = 'csvlog'
logging_collector = 'on'
log_directory = 'logs'
  • 每一行指定一个参数。
  • 名称和值之间的等号是可选的,shared_buffers = 128MB 等效于 shared_buffers 128MB。
  • 空白是无意义的(除了在一个引号引用的参数值内)并且空行被忽略。
  • 井号(#)代表注释。
  • 所有配置项的参数名都是大小写不敏感的,shared_buffers = 128MB 等效于 SHARED_BUFFERS = 128MB。
  • 如果文件包含相同参数的多个条目,则忽略除最后一个之外的所有条目。
  • postgresql.auto.conf 文件会覆盖 postgresql.conf 文件中的同名配置。
  • 所有相对路径信息均相对数据库 data 目录而言,如上述日志目录 logs,全路径为 $PGDATA/logs。
  • 参数后的注释信息为该参数说明,如上述 # min 128kB,表示 shared_buffers 最小值为 128kB,# (change requires restart),表示 shared_buffers 参数修改需重启数据库生效。注释未注明需重启数据库生效的,一般重载配置文件即可生效。
pg_ctl reload -D 数据目录

等效于连入数据库执行

select pg_reload_conf();
  • 参数值有以下5种数据类型:

布尔:布尔值都是大小写无关的,可以是 on、off、true、false、yes、no、1、0。
整数:数值可以指定单位,如一些内存配置的参数可以指定 KB、MB、GB 等单位。
浮点数:可以指定小数的数值,如 “1.0”。
字符串:单引号包起来的字符串,如 ‘csvlog’。
枚举:不需要单引号引起来的字符串。

2.3 配置技巧

1) 支持 include 调用外部文件

管理大批量服务器时,模块化的管理配置往往是高效的。

--调用外部配置文件
include '/home/postgres/conf.d/shared.conf'
include '/home/postgres/conf.d/memory.conf'
include '/home/postgres/conf.d/server.conf'

--调用外部目录
include_dir '/home/postgres/conf.d'

--目录中配置文件可以按如下方式命令
00shared.conf
01memory.conf
02server.conf

调用外部目录时,存在如下限制

  • 只有.conf 结尾的非目录文件才会被包括。
  • 以 . 字符开头的文件名会被忽略。
  • 数据库将按照命名方式顺序调用,当存在重复参数时,最后调用的配置会覆盖之前的配置。

2)参数配置相关信息查询

--show 参数名可查看当前生效参数配置
postgres=# show log_statement;
 log_statement
---------------
 ddl
--上述效果等同于
postgres=# select setting from pg_settings where name = 'log_statement';
 setting
---------
 ddl

--枚举类型可选参数值查询
postgres=# select enumvals from pg_settings where name = 'log_statement';
      enumvals
--------------------
 {none,ddl,mod,all}

--参数描述查询
postgres=# select short_desc,extra_desc from pg_settings where name = 'log_statement';
             short_desc              | extra_desc
-------------------------------------+------------
 Sets the type of statements logged. |

--查询参数默认单位
postgres=# select unit from pg_settings where name = 'autovacuum_vacuum_cost_delay';
 unit
------
 ms

--查询参数如何生效
postgres=# select context from pg_settings where name  = 'log_statement';
  context
-----------
 superuser

context 字段值说明

internal:这类参数是只读参数,其中,有些参数是 postgres 程序写死的,或者是用不同的编辑选项确定的;有些参数是数据库实例初使化时就确定了的,比如创建实例时运行 initdb,可以使用一些命令行参数选项来确定某些参数的值,如可以在 initdb 中使用 -k 把参数 “data_checksums” 初使化为 “on”,之后就不能再改变此参数值了。这类参数值不能在 postgresql.conf 中配置,因为它们是由postgres 程序或在初始化实例时写死的。
postmaster:改变这类参数的值需要重启 PostgreSQL 实例。在 postgresql.onf 文件中可改变这些参数后,需要重启 PostgreSQL 实例修改才能生效。
sighup:在 postgresql.conf 文件中改变这类参数的值不需要重启数据库,只需要向postmaster 进程发送 SIGHUP 信号,让其重启装载配置新的参数值就可以了。当然 postmaster 进程接收到 SIGHUP 信号后,也会向它的子进程发送 SIGHUP 信号,让新的参数值在所有的进程中生效。
backend:在 postgresql.conf 文件中更改这类设置无须重新启动服务器,只需要向 postmaster 发送一个 SIGHUP 信号,让它重新读取 postgresql.conf 文件中新的配置值,但新的配置值只会出现在修改之后的新连接中,已有的连接中该参数的值不会改变。这类参数的值也可以在新建连接时由连接的一些参数改变。例如,通过 libpq 的 PGOPTIONS 环境变量可以改变本连接的配置值。
superuser:这类参数可以由超级用户使用 SET 命令来改变,如检测死锁的超时时间的参数 “deadlock_timeout”。而超级用户改变此参数值时只会影响自身的 sesssion 配置,不会影响其他用户关于此参数的配置。向 Postmaster 进程发送 SIGHUP 信号也只会影响后续创建的连接,不会影响已有的连接。
user:这类参数可以由普通用户使用 SET 命令来改变本连接中的配置值。除了普通用户也可以改变外,这类参数与 superuser 类参数没有区别。

3)postgresql.conf 参数配置

https://xiaosonggong.blog.csdn.net/article/details/121038380文章来源地址https://www.toymoban.com/news/detail-643902.html

到了这里,关于PostgreSql 参数配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PostgreSql 参数配置

    https://xiaosonggong.blog.csdn.net/article/details/124264877   PostgreSQL 的参数配置参数是在 postgresql.conf 文件中集中管理的,类似于 Oracle 的 pfile 文件,除此之外,PostgreSQL 还有一个 postgresql.auto.conf 文件,这个文件保存了通过 alter system 命令修改的设置,类似与 Oracle 的 spfile 文件,区别

    2024年02月13日
    浏览(28)
  • PostgreSQL常用配置参数【一表说明】

    参数 更改需要重新启动 说明 类型 default 范围 设置建议 Work_mem 最小64kB.可以限制用于排序内存的大小,该值在客户端连接之后可以增加,该类型分配使用的是\\\"非共享内存\\\" 整型 4MB 64~2147483647 单位KB通常设置为64MB。 如果尝试寻找一个适合所有场景的答案,通常设置为64MB。内存中

    2024年02月12日
    浏览(29)
  • PostgreSQL Linux操作PostgreSQL数据库

    PostgreSQL教程 菜鸟教程:https://www.runoob.com/postgresql/postgresql-tutorial.html 登录PG数据库:psql -U 用户名(U需要大写) 登录PG数据库(指定主机、端口,并进入指定数据库): psql -U 用户名 -h 127.0.0.1 -p 5432 -d 数据库名 -U 登录的用户名 -h 连接的主机(默认127.0.0.1,可替换成远程主机

    2024年02月11日
    浏览(48)
  • postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用

    MySQL数据库和postgresql数据库之间的差异并不多,这里的差异指的是对SQL语言的支持两者并不大,但底层的东西差异是非常多的,例如,MySQL的innodb引擎概念,数据库用户管理,这些和postgresql相比是完全不同的(MySQL用户就是用户,没有角色,postgresql有用户,有角色,但差异不

    2024年02月14日
    浏览(69)
  • Postgresql数据库死锁

    ERROR: deadlock detected DETAIL: Process 95 waits for ShareLock on transaction 3553457; blocked by process 187. Process 187 waits for ShareLock on transaction 3553458; blocked by process 95. HINT: See server log for query details. CONTEXT: while updating tuple (0,6) in relation “deadlock_example” 其中 Process 95 在等待共享锁(ShareLock)的事务

    2024年01月20日
    浏览(52)
  • PostgreSQL-数据库命令

    一个数据库是一个或多个模式的集合,而模式包含表、函数等。因此,完整的逻辑组织结构层次是服务器实例(PostgreSQL Server)、数据库(Database)、模式(Schema)、表(Table),以及某些其他对象(如函数)。一个PostgreSQL服务器实例可以管理多个数据库。当应用程序连接到一

    2024年02月14日
    浏览(39)
  • PostgreSQL 创建数据库

    PostgreSQL 创建数据库可以用以下三种方式: CREATE DATABASE 命令需要在 PostgreSQL 命令窗口来执行,语法格式如下: 例如,我们创建一个 runoobdb 的数据库: createdb 命令创建数据库 createdb 是一个 SQL 命令 CREATE DATABASE 的封装。 参数说明: . dbname:要创建的数据库名。 . description:关

    2024年02月12日
    浏览(43)
  • postgresql 数据库 索引 介绍

    大家在学习数据库的时候,是不是常常听到索引?那什么是索引呢?索引有哪些作用呢?索引有哪些种类呢?为什么要建索引呢?带着这些疑问,本文带你一起学习postgresql数据库的索引。 索引是提高数据库性能的常用途径。比起没有索引,使用索引可以让数据库服务器更快

    2024年02月13日
    浏览(45)
  • postgresql-数据库与模式

    数据库管理系统( DBMS )是用于管理数据库的软件系统。常见的关系型DBMS有PostgreSQL、 MySQL、Oracle、Microsoft SQL Server、SQLite 等。常见的 NoSQL 数据库有 Redis、MongoDB、 Cassandra、Neo4j 等。PostgreSQL 荣获了数据库排名网站DB-Engines 2017、2018 以及 2020 年度数据库管理系统称号 PostgreSQL 数

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包