PostgreSQL数据库配置参数详解

合集下载

datagrip postgresql 参数

datagrip postgresql 参数

datagrip postgresql 参数一、概述Datagrip 是一款强大的数据库开发工具,支持多种数据库,其中包括PostgreSQL。

在使用 Datagrip 进行 PostgreSQL 数据库开发时,了解和配置相关参数非常重要。

本文档将介绍如何设置和使用 PostgreSQL 在 Datagrip 中的相关参数。

二、连接参数1. 主机名(Host):指定 PostgreSQL 数据库所在的主机名或 IP 地址。

默认情况下,使用 localhost(本地主机)。

2. 端口(Port):指定 PostgreSQL 数据库的端口号。

默认端口号为5432。

3. 用户名(Username):指定用于连接数据库的用户名。

4. 密码(Password):指定用于连接数据库的密码。

连接参数可以在 Datagrip 的连接设置中配置。

选择 "工具"(Tools)菜单下的 "连接设置"(Connection Settings),在左侧导航栏中选择相应的数据库类型(PostgreSQL),然后在右侧窗口中输入相应的连接参数。

三、查询参数1. 结果集大小(Max Size):设置查询结果集的最大大小,以避免内存溢出。

默认值为 -1,表示不限制结果集大小。

2. 查询缓存(Query Cache):启用或禁用查询缓存,以提高查询性能。

默认值为 true。

3. 排序缓存(Sort Buffer Size):设置排序缓存的大小,以优化排序操作性能。

默认值取决于系统资源。

这些查询参数可以在 Datagrip 的查询设置中配置。

选择 "工具"(Tools)菜单下的 "查询设置"(Query Settings),在左侧导航栏中选择相应的数据库类型(PostgreSQL),然后在右侧窗口中调整相应的参数值。

四、性能优化参数1. 事务隔离级别(Isolation Level):设置事务的隔离级别,以优化并发访问性能。

PostgreSQL数据库的安装和配置

PostgreSQL数据库的安装和配置

PostgreSQL数据库的安装和配置PostgreSQL是一种强大的开源关系型数据库管理系统,被广泛应用于各种规模的企业和项目中。

本文将介绍如何进行PostgreSQL数据库的安装和配置,让您能够轻松地开始使用这一强大的数据库系统。

一、安装PostgreSQL数据库要安装PostgreSQL数据库,您需要按照以下步骤进行操作:1. 下载PostgreSQL软件包:您可以在PostgreSQL官方网站上找到适合您操作系统的安装包,并进行下载。

确保选择最新版本的软件包以获得更好的性能和安全性。

2. 运行安装程序:运行下载的安装程序,并按照向导提示进行操作。

您可以选择安装位置、创建数据库集群的位置以及设置管理员用户的密码等。

3. 完成安装:安装程序将自动完成数据库软件的安装过程。

一旦安装完成,您将可以在您选择的安装位置找到PostgreSQL数据库的执行文件,并可以通过命令行或图形界面进行数据库管理。

二、配置PostgreSQL数据库安装完成后,您需要进行一些配置以确保PostgreSQL数据库可以正常运行并满足您的需求。

以下是配置PostgreSQL的关键步骤:1. 修改配置文件:在PostgreSQL的安装目录中,您将找到一个名为postgresql.conf的配置文件。

您可以使用任何文本编辑器打开该文件,并根据自己的需求对其进行修改。

2. 设置监听地址:在配置文件中,您可以找到一个名为listen_addresses的选项。

这决定了PostgreSQL数据库监听的IP地址。

如果您计划在本地访问数据库,您可以将其设置为localhost。

如果您希望从其他计算机上访问数据库,则可以将其设置为数据库服务器的IP地址。

3. 配置端口号:在配置文件中,您还可以找到一个名为port的选项,该选项确定了数据库服务器监听的端口号。

默认情况下,端口号为5432,您可以根据需要进行修改。

4. 设定认证方式:在配置文件中,您可以找到一个名为pg_hba.conf的文件。

postgresql配置参数和概念解释

postgresql配置参数和概念解释

postgresql配置参数和概念解释1.⾼可⽤服务可⽤时间量,冗余是⾼可⽤的基础2.备⽤数据库备⽤数据库的想法是保留始终具有相同数据的⽣产数据库的副本,并且可以在故障发⽣时使⽤备份数据库。

有以下⼏种⽅式对备⽤数据库进⾏分类。

根据复制的性质:物理备份数据库:复制磁盘块逻辑备份数据:复制数据流更改备份的同步性:异步:存在数据丢失的可能性同步:不存在数据丢失的可能性,主设备的提交等待备⽤设备的响应。

3.件⽬录结构postgresql的磁盘布局:data/base存放各数据库实例对应⽂件夹,命名⽅式是数据库的OID,select oid,datname from pg_database;可以查询每个数据库的OID,对应的可以在base⽬录下找到这个数据库的⽂件夹。

数据表使⽤表名对应的relfilenode作为⽂件名存放在数据库⽂件夹下,select relfilenode,relname from pg_class; 可以查询表的relfilenode,然后在相应的数据库⽂件夹下可以看到这个表的⽂件,该⽂件⽤于存储表的数据,最⼤1G,超出⾃动扩展,扩展名为relfilenode.1,relfilenode.2 ...为了提⾼I/O性能,pg总是以8K⼤⼩的块执⾏IO。

因此数据⽂件总是以8K的步长增长。

(物理复制时,双⽅需要使⽤相同的块⼤⼩)global -全局数据包括全局系统表pg_clog -提交⽇志提交⽇志是⼀个⼯作数据库实例的⼀个重要组成部分。

它存储系统上进⾏的事物的状态。

⼀个事物有四种状态(TRANSACTION_STATUS_IN_PROGRESS,TRANSACTION_STATUS_COMMITTED,TRANSACTION_STATUS_ABORTED,TRANSACTION_STATUS_SUB_COMMITTED), 如果⼀个事物的提交⽇志的状态是不可⽤,postgresql将不知道是否应该被看到。

postgresql中的参数查看和修改方式

postgresql中的参数查看和修改方式

postgresql中的参数查看和修改⽅式1.查看参数⽂件的位置使⽤show 命令查看,⽐较常⽤的show config_file.此还可以查看pg_settings数据字典.test=# show config_file;config_file------------------------------/data/pgdata/postgresql.conf(1 row)test=# show hba_filetest-# ;hba_file--------------------------/data/pgdata/pg_hba.conf(1 row)test=# show ident_file ;ident_file----------------------------/data/pgdata/pg_ident.conf2.查看当前会话的参数值可以使⽤show命令或者查看pg_settings字典.使⽤show all可以查看全部的参数值.show 参数名查看指定参数test=# show all;-------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------- allow_system_table_mods | off | Allows modifications of the structure of system tables.application_name | psql | Sets the application name to be reported in statistics and logs.archive_command | test ! -f /data/archive/%f && cp %p /data/archive/%f | Sets the shell command that will be called to archive a WAL file.archive_mode | on | Allows archiving of WAL files using archive_command.archive_timeout | 0 | Forces a switch to the next WAL file if a new file has not been started within N seconds.array_nulls | on | Enable input of NULL elements in arrays....test=# show work_mem;work_mem----------4MB(1 row)test=#Expanded display is on.test=# select * from pg_settings where name in ('work_mem')test-# ;-[ RECORD 1 ]---+----------------------------------------------------------------------------------------------------------------------name | work_memsetting | 4096unit | kBcategory | Resource Usage / Memoryshort_desc | Sets the maximum memory to be used for query workspaces.extra_desc | This much memory can be used by each internal sort operation and hash table before switching to temporary disk files.context | uservartype | integersource | defaultmin_val | 64max_val | 2147483647enumvals |boot_val | 4096reset_val | 4096sourcefile |sourceline |pending_restart | f3.修改pg的参数值1.全局修改pg的参数.有些参数只有当pg服务重启的时候才⽣效,典型的例⼦就是shared_buffers,定义了共享内存的⼤⼩.许多参数在pg服务运⾏的时候就能修改.再更改之后像服务器执⾏⼀个reload操作,强制pg重新读取postgresql.conf,因此你只需要编辑postgresql.conf⽂件,再执⾏ pg_ctl reload 即可 . 对于需要重启的,在修改完postgresql后需要执⾏ pg_ctl restart对于9.5以后的版本,可以通过查看pg_file_settings查看你设置的参数是否⽣效.例如如果你设置了⼀个参数需要重启数据库才能⽣效或者设置错误,那么在此字典中会出现报错.test=# select * from pg_file_settings where error is not null;sourcefile | sourceline | seqno | name | setting | applied | error-----------------------------------+------------+-------+-----------------+---------+---------+------------------------------/data/pgdata/postgresql.auto.conf | 4 | 22 | max_connections | 10000 | f | setting could not be applied(1 row)对于9.4以后的版本,你还可以使⽤ alter system 命令修改参数.使⽤alter system命令将修改postgresql.auto.conf⽂件,⽽不是postgresql.conf,这样可以很好的保护postgresql.conf⽂件,加⼊你使⽤很多alter system命令后搞的⼀团糟,那么你只需要删除postgresql.auto.conf,再重新加载即可.test=# show work_mem;work_mem----------4MB(1 row)test=# alter system set work_mem='8MB';ALTER SYSTEMtest=# show work_mem;work_mem----------4MB(1 row)查看postgresql.auto.conf:[postgres@postgresql1 pgdata]$ cat postgresql.auto.conf# Do not edit this file manually!# It will be overwritten by the ALTER SYSTEM command.work_mem = '8MB'使⽤pg_ctl reload重新load配置⽂件,再查看参数值:test=# show work_mem ;work_mem----------8MB(1 row)2.直接使⽤set命令,在会话层修改,修改之后将被⽤于未来的每⼀个事务,只对当前会话有效:test=#test=# set work_mem='16MB';SETtest=# show work_mem;work_mem----------16MB(1 row)我们打开另外⼀个会话,查看work_mem参数,可以发现work_mem还是4MBpostgres=# show work_mem;work_mem----------4MB(1 row)3.set命令后添加 local关键字, 只在当前事务中修改,只在当前事务内有效:test=# show work_mem;work_mem----------16MB(1 row)test=# begin;BEGINtest=# set local work_mem='8MB';SETtest=# show work_mem;work_mem----------8MB(1 row)test=# commit;COMMITtest=# show work_mem;work_mem----------16MB4.使⽤ reset恢复参数的默认值再pg_settings字典reset_val字段表⽰了如果使⽤reset,则此参数恢复的默认值为多少使⽤ reset 参数名来恢复某个参数的默认值,使⽤ reset all来恢复所有的参数值.test=# show work_mem;work_mem----------16MB(1 row)test=# reset work_mem;RESETtest=# show work_mem;work_mem----------4MB(1 row)test=# reset all;RESET5.为特定的⽤户组设置参数⼀.为特定的数据库⾥的所有的⽤户设置参数,例如为test数据库所有的连接设置work_mem为16MB:test=# alter database test set work_mem='16MB';ALTER DATABASE⼆.为数据库中的某个特定⽤户设置参数.例如为brent⽤户,设置work_mem为2MB:postgres=# alter role brent set work_mem='2MB';ALTER ROLE经过测试发现,如果你同时为数据库和⽤户设置了特定参数,那么以⽤户为准.例如上⾯的,如果我⽤brent⽤户连接到test数据库,那么我的work_mem应该为2MB:postgres=# \c test brentYou are now connected to database "test" as user "brent".test=>test=>test=> show work_mem;work_mem----------2MB三.为某个特定⽤户连接到特定的数据库设置参数.例如为⽤户brent在数据库test中设置work_mem为8MBtest=# alter role brent in database test set work_mem='8MB';ALTER ROLE上⾯说的三种设置,优先级递增,也就是说,如果设置了1,2,3那么就以第3个为准,如果设置了1,2那么就是以2为准,以此类推.pg对此的实现⽅法和当⽤户连接数据库的时候,⽴刻⼿动执⾏set命令的效果完全相同查看你当前的参数值是从何处指定,可以通过查询pg_setttings中的source字段获取,例如如果设置了database级别的参数.那么查询结果应该如下:test=# select name,setting,source from pg_settings where name='work_mem';name | setting | source----------+---------+----------work_mem | 16384 | database其它的,例如设置了第三种:test=# \c test brentYou are now connected to database "test" as user "brent".test=> select name,setting,source from pg_settings where name='work_mem';name | setting | source----------+---------+---------------work_mem | 8192 | database user补充:postgresql重要参数解析及优化1,max_connections 200最⼤客户端连接数。

postgreSQL性能参数

postgreSQL性能参数

postgreSQL性能参数PostgreSQL是一种强大的开源数据库管理系统,它具有可扩展性和高性能的特点。

性能参数在使用PostgreSQL来优化数据库性能和处理大量数据时起着至关重要的作用。

本篇文章将详细介绍一些常用的PostgreSQL性能参数及其作用。

1. shared_buffers: 这是控制PostgreSQL内存缓冲区大小的参数。

它指定了操作系统用于缓存数据库的页的数量。

合理设置该参数可以提高数据库的读取性能。

2. work_mem: 这个参数用于控制每个查询的内存使用量。

它指定了每个工作进程可用的内存大小。

如果查询需要排序、哈希或执行连接等操作,那么它所需的内存将由work_mem参数控制。

通过适当调整该参数,可以提高查询的性能。

3. maintenance_work_mem: 这个参数用于控制维护操作的内存使用量。

维护操作包括 VACUUM,CREATE INDEX,ALTER TABLE,REINDEX等。

合理设置maintenance_work_mem参数可以加速这些操作的执行。

4. effective_cache_size: 这个参数用于告诉PostgreSQL操作系统可以用于缓存的内存大小。

该参数的设置应该基于系统的内存大小和其他应用程序在同一服务器上的内存需求。

6. max_connections: 这个参数用于控制数据库服务器能够同时处理的最大连接数。

适当调整max_connections参数可以提高数据库的并发处理能力。

但是,需要注意的是,较大的max_connections值会增加数据库服务器的内存消耗。

7. autovacuum: 这是一个布尔参数,用于控制是否启用自动清理功能。

自动清理是PostgreSQL中的一项重要功能,它可以自动释放未使用的空间,并更新统计信息,以便查询优化器可以更好地选择查询计划。

8. wal_buffers: 这个参数用于控制WAL(Write-Ahead Logging)缓冲区的大小。

postgre sql jdbc参数

postgre sql jdbc参数

postgre sql jdbc参数PostgreSQL JDBC参数详解PostgreSQL是一种开源的关系型数据库管理系统,具有良好的可扩展性和稳定性。

在Java开发中,我们通常使用JDBC(Java Database Connectivity)来连接和操作数据库。

本文将重点介绍PostgreSQL JDBC连接中的参数,帮助读者更好地理解和使用PostgreSQL数据库。

1. 驱动程序参数(Driver Parameters)驱动程序参数用于指定连接PostgreSQL数据库所需的驱动程序信息。

常见的驱动程序参数包括:- user:指定连接数据库的用户名。

- password:指定连接数据库的密码。

- ssl:指定是否使用SSL加密连接。

- tcpKeepAlive:指定是否启用TCP Keep-Alive机制。

- readOnly:指定连接是否为只读模式。

- connectTimeout:指定连接超时时间。

2. 连接参数(Connection Parameters)连接参数用于指定连接PostgreSQL数据库的详细信息。

常见的连接参数包括:- serverName:指定数据库服务器的主机名或IP地址。

- portNumber:指定数据库服务器的端口号。

- databaseName:指定要连接的数据库名称。

- currentSchema:指定连接后的默认模式。

- applicationName:指定连接的应用程序名称。

3. 连接池参数(Connection Pool Parameters)连接池参数用于在应用程序中使用连接池管理数据库连接。

常见的连接池参数包括:- maxConnections:指定连接池中的最大连接数。

- minConnections:指定连接池中的最小连接数。

- initialConnections:指定连接池初始连接数。

- maxIdleTime:指定连接池中连接的最大空闲时间。

基于PostgreSQLpg_hba.conf配置参数的使用说明

基于PostgreSQLpg_hba.conf配置参数的使用说明

基于PostgreSQLpg_hba.conf配置参数的使⽤说明pg_hba.conf 配置详解该⽂件位于初始化安装的数据库⽬录下编辑 pg_hba.conf 配置⽂件postgres@clw-db1:/pgdata/9.6/poc/data> vi pg_hba.confTYPE 参数设置TYPE 表⽰主机类型,值可能为:若为 `local` 表⽰是unix-domain的socket连接,若为 `host` 是TCP/IP socket若为 `hostssl` 是SSL加密的TCP/IP socketDATABASE 参数设置DATABASE 表⽰数据库名称,值可能为:`all` ,`sameuser`,`samerole`,`replication`,`数据库名称` ,或者多个数据库名称⽤ `逗号`,注意ALL不匹配 replicationUSER 参数设置USER 表⽰⽤户名称,值可以为:`all`,`⼀个⽤户名`,`⼀组⽤户名` ,多个⽤户时,可以⽤ `,`逗号隔开,或者在⽤户名称前缀 `+` ;在USER和DATABASE字段,也可以写⼀个单独的⽂件名称⽤ `@` 前缀,该⽂件包含数据库名称或⽤户名称ADDRESS 参数设置该参数可以为 `主机名称` 或者`IP/32(IPV4) `或 `IP/128(IPV6)`,主机名称以 `.`开头,`samehost`或`samenet` 匹配任意Ip地址METHOD 参数设置该值可以为"trust", "reject", "md5", "password", "scram-sha-256","gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert"注意若为`password`则发送的为明⽂密码注意修改该配置⽂件中的参数,必须重启 `postgreSql`服务,若要允许其它IP地址访问该主机数据库,则必须修改 `postgresql.conf` 中的参数 `listen_addresses` 为 `*`重启:pg_ctl reload 或者执⾏ SELECT pg_reload_conf()配置以下参数# TYPE DATABASE USER ADDRESS METHODhost all all 10.10.56.17/32 md5"pg_hba.conf" 99L, 4720C参数说明host参数表⽰安装PostgreSQL的主机all 第⼀个all 表⽰该主机上的所有数据库实例all第⼆个all 表⽰所有⽤户10.10.56.17/32表⽰需要连接到主机的IP地址,32表⽰IPV4md5表⽰验证⽅式即上述表⽰允许IP地址为10.10.56.17的所有⽤户可以通过MD5的密码验证⽅式连接主机上所有的数据库也可以指定具体的数据库名称和⽤户# TYPE DATABASE USER ADDRESS METHODhost test pgtest 10.10.56.17/32 md5即表⽰允许地址为 10.10.56.17 的⽤户 pgtest通过 MD5⽅式加密的密码⽅式连接主机上的 test 数据库也可以指定整个⽹段# TYPE DATABASE USER ADDRESS METHODhost test pgtest 0.0.0.0/0 md5即表⽰允许任意iP 通过⽤户名为 pgtest 和md5的密码验证⽅式连接主机上 test 的数据库不进⾏密码验证# TYPE DATABASE USER ADDRESS METHODhost test pgtest 0.0.0.0/0 trust表⽰任意IP地址的⽤户 pgtest ⽆需密码验证可直接连接访问该主机的 test 数据库补充:postgresql配置⽂件pg_hba.conf配置、修改postgresql超级⽤户的密码postgresql设置了⽤户名和密码,却发现不输⼊密码、或者密码输错都能登录。

PostgreSQL数据库配置参数详解

PostgreSQL数据库配置参数详解

PostgreSQL数据库配置参数详解十章数据库参数PostgresSQL提供了许多数据库配置参数,本章将介绍每个参数的作用和如何配置每一个参数。

10.1 如何设置数据库参数所有的参数的名称都是不区分大小写的。

每个参数的取值是布尔型、整型、浮点型和字符串型这四种类型中的一个,分别用boolean、integer、floating point和string表示。

布尔型的值可以写成ON、OFF、TRUE、FALSE、YES、NO、1和0,而且不区分大小写。

有些参数用来配置内存大小和时间值。

内存大小的单位可以是KB、MB和GB。

时间的单位可以是毫秒、秒、分钟、小时和天。

用ms表示毫秒,用s表示秒,用min表示分钟,用h表示小时,用d表示天。

表示内存大小和时间值的参数参数都有一个默认的单位,如果用户在设置参数的值时没有指定单位,则以参数默认的单位为准。

例如,参数shared_buffers 表示数据缓冲区的大小,它的默认单位是数据块的个数,如果把它的值设成8,因为每个数据块的大小是8KB,则数据缓冲区的大小是8*8=64KB,如果将它的值设成128MB,则数据缓冲区的大小是128MB。

参数vacuum_cost_delay 的默认单位是毫秒,如果把它的值设成10,则它的值是10毫秒,如果把它的值设成100s,则它的值是100秒。

所有的参数都放在文件postgresql.conf中,下面是一个文件实例: #这是注释log_connections = yeslog_destination = 'syslog'search_path = '"$user", public'每一行只能指定一个参数,空格和空白行都会被忽略。

“ #”表示注释,注释信息不用单独占一行,可以出现在配置文件的任何地方。

如果参数的值不是简单的标识符和数字,应该用单引号引起来。

如果参数的值中有单引号,应该写两个单引号,或者在单引号前面加一个反斜杠。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

十章数据库参数PostgresSQL提供了许多数据库配置参数,本章将介绍每个参数的作用和如何配置每一个参数。

10.1 如何设置数据库参数所有的参数的名称都是不区分大小写的。

每个参数的取值是布尔型、整型、浮点型和字符串型这四种类型中的一个,分别用boolean、integer、floating point和string表示。

布尔型的值可以写成ON、OFF、TRUE、FALSE、YES、NO、1和0,而且不区分大小写。

有些参数用来配置内存大小和时间值。

内存大小的单位可以是KB、MB和GB。

时间的单位可以是毫秒、秒、分钟、小时和天。

用ms表示毫秒,用s表示秒,用min表示分钟,用h表示小时,用d表示天。

表示内存大小和时间值的参数参数都有一个默认的单位,如果用户在设置参数的值时没有指定单位,则以参数默认的单位为准。

例如,参数shared_buffers 表示数据缓冲区的大小,它的默认单位是数据块的个数,如果把它的值设成8,因为每个数据块的大小是8KB,则数据缓冲区的大小是8*8=64KB,如果将它的值设成128MB,则数据缓冲区的大小是128MB。

参数vacuum_cost_delay 的默认单位是毫秒,如果把它的值设成10,则它的值是10毫秒,如果把它的值设成100s,则它的值是100秒。

所有的参数都放在文件postgresql.conf中,下面是一个文件实例:#这是注释log_connections = yeslog_destination = 'syslog'search_path = '"$user", public'每一行只能指定一个参数,空格和空白行都会被忽略。

“ #”表示注释,注释信息不用单独占一行,可以出现在配置文件的任何地方。

如果参数的值不是简单的标识符和数字,应该用单引号引起来。

如果参数的值中有单引号,应该写两个单引号,或者在单引号前面加一个反斜杠。

一个配置文件也可以包含其它配置文件,使用include指令能够达到这个目的,例如,假设postgresql.conf文件中有下面一行:include ‘my.confg’文件my.config中的配置信息也会被数据库读入。

include指令指定的配置文件也可以用include指令再包含其它配置文件。

如果include指令中指定的文件名不是绝对路径,数据库会在postgresql.conf文件所在的目录下查找这个文件。

用户也可以在数据库启动以后修改postgresql.conf配置文件,使用命令pg_ctl reload来通知数据库重新读取配置文件。

注意,有些参数在数据库启动以后,不能被修改,只有重新启动数据库以后,新的参数值才能生效。

另外一些参数可以在数据库运行过程中被修改而且新的值可以立即生效。

所以数据库在运行过程中重新读取参数配置文件以后,不是所有的参数都会被赋给新的值。

用户可以在自己建立的会话中执行命令SET修改某些配置参数的值(注意不是全部参数),例如:SET ENABLE_SEQSCAN TO OFF;另外,有些参数只有数据库超级用户才能使用SET命令修改它们。

用户可以在psql中执行命令show来查看所有的数据库参数的当前值。

例如:(1)show all; --查看所有数据库参数的值(2)show search_path; --查看参数search_path的值10.2 连接与认证10.2.1 连接设置listen_addresses (string)这个参数只有在启动数据库时,才能被设置。

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

默认是值是* ,表示数据库在启动以后将在运行数据的机器上的所有的IP地址上监听用户请求(如果机器只有一个网卡,只有一个IP地址,有多个网卡的机器有多个IP地址)。

可以写成机器的名字,也可以写成IP地址,不同的值用逗号分开,例如,’server01’, ’140.87.171.49, 140.87.171.21’。

如果被设成localhost,表示数据库只能接受本地的客户端连接请求,不能接受远程的客户端连接请求。

port (integer)这个参数只有在启动数据库时,才能被设置。

它指定数据库监听户端连接的TCP端口。

默认值是5432。

max_connections (integer)这个参数只有在启动数据库时,才能被设置。

它决定数据库可以同时建立的最大的客户端连接的数目。

默认值是100。

superuser_reserved_connections (integer)这个参数只有在启动数据库时,才能被设置。

它表示预留给超级用户的数据库连接数目。

它的值必须小于max_connections。

普通用户可以在数据库中建立的最大的并发连接的数目是max_connections- superuser_reserved_connections,默认值是3。

unix_socket_group (string)这个参数只有在启动数据库时,才能被设置。

设置Unix-domain socket所在的操作系统用户组。

默认值是空串,用启动数据库的操作系统用户所在的组作为Unix-domain socket的用户组。

unix_socket_permissions (integer)这个参数只有在启动数据库时,才能被设置。

它设置Unix-domain socket的访问权限,格式与操作系统的文件访问权限是一样的。

默认值是0770,表示任何操作系统用户都能访问Unix-domain socket。

可以设为0770(所有Unix-domain socket文件的所有者所在的组包含的用户都能访问)和0700(只有Unix-domain socket文件的所有者才能访问)。

对于Unix-domain socket,只有写权限才有意义,读和执行权限是没有意义的。

tcp_keepalives_idle (integer)这个参数可以在任何时候被设置。

默认值是0,意思是使用操作系统的默认值。

它设置TCP 套接字的TCP_KEEPIDLE属性。

这个参数对于通过Unix-domain socket建立的数据库连接没有任何影响。

tcp_keepalives_interval (integer)这个参数可以在任何时候被设置。

默认值是0,意思是使用操作系统的默认值。

它设置TCP 套接字的TCP_KEEPINTVL属性。

这个参数对于通过Unix-domain socket建立的数据库连接没有任何影响。

tcp_keepalives_count (integer)这个参数可以在任何时候被设置。

默认值是0,意思是使用操作系统的默认值。

它设置TCP 套接字的TCP_KEEPCNT属性。

这个参数对于通过Unix-domain socket建立的数据库连接没有任何影响。

10.2.2. 安全与认证authentication_timeout (integer)这个参数只能在postgresql.conf文件中被设置,它指定一个时间长度,在这个时间长度内,必须完成客户端认证操作,否则客户端连接请求将被拒绝。

它可以阻止某些客户端进行认证时长时间占用数据库连接。

单位是秒,默认值是60。

ssl (boolean)这个参数只有在启动数据库时,才能被设置。

决定数据库是否接受SSL连接。

默认值是off。

ssl_ciphers (string)指定可以使用的SSL加密算法。

查看操作系统关于openssl的用户手册可以得到完整的加密算法列表(执行命令openssl ciphers –v也可以得到)。

10.3 资源消耗10.3.1 内存shared_buffers (integer)这个参数只有在启动数据库时,才能被设置。

它表示数据缓冲区中的数据块的个数,每个数据块的大小是8KB。

数据缓冲区位于数据库的共享内存中,它越大越好,不能小于128KB。

默认值是1024。

temp_buffers (integer)这个参数可以在任何时候被设置。

默认值是8MB。

它决定存放临时表的数据缓冲区中的数据块的个数,每个数据块的大小是8KB。

临时表缓冲区存放在每个数据库进程的私有内存中,而不是存放在数据库的共享内存中。

默认值是1024。

max_prepared_transactions (integer)这个参数只有在启动数据库时,才能被设置。

它决定能够同时处于prepared状态的事务的最大数目(参考PREPARE TRANSACTION命令)。

如果它的值被设为0。

则将数据库将关闭prepared事务的特性。

它的值通常应该和max_connections的值一样大。

默认值是5。

work_mem (integer)这个参数可以在任何时候被设置。

它决定数据库的排序操作和哈希表使用的内存缓冲区的大小。

如何work_mem指定的内存被耗尽,数据库将使用磁盘文件进行完成操作,速度会慢很多。

ORDER BY、DISTINCT和merge连接会使用排序操作。

哈希表在Hash连接、hash 聚集函数和用哈希表来处理IN谓词中的子查询中被使用。

单位是KB,默认值是1024。

maintenance_work_mem (integer)这个参数可以在任何时候被设置。

它决定数据库的维护操作使用的内存空间的大小。

数据库的维护操作包括V ACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等操作。

maintenance_work_mem的值如果比较大,通常可以缩短V ACUUM数据库和从dump 文件中恢复数据库需要的时间。

maintenance_work_mem存放在每个数据库进程的私有内存中,而不是存放在数据库的共享内存中。

单位是KB,默认值是16384。

max_stack_depth (integer)这个参数可以在任何时候被设置,但只有数据库超级用户才能修改它。

它决定一个数据库进程在运行时的STACK所占的空间的最大值。

数据库进程在运行时,会自动检查自己的STACK大小是否超过max_stack_depth,如果超过,会自动终止当前事务。

这个值应该比操作系统设置的进程STACK的大小的上限小1MB。

使用操作系统命令“ulimit –s“可以得到操作系统设置的进程STACK的最大值。

单位是KB,默认值是100。

10.3.2 Free Space Map数据库的所有可用空间信息都存放在一个叫free space map (FSM)的结构中,它记载数据文件中每个数据块的可用空间的大小。

FSM中没有记录的数据块,即使有可用空间,也不会系统使用。

系统如果需要新的物理存储空间,会首先在FSM中查找,如果FSM中没有一个数据页有足够的可用空间,系统就会自动扩展数据文件。

相关文档
最新文档