PostgreSQL数据库配置参数详解.docx

上传人:b****3 文档编号:2282535 上传时间:2022-10-28 格式:DOCX 页数:9 大小:20.96KB
下载 相关 举报
PostgreSQL数据库配置参数详解.docx_第1页
第1页 / 共9页
PostgreSQL数据库配置参数详解.docx_第2页
第2页 / 共9页
PostgreSQL数据库配置参数详解.docx_第3页
第3页 / 共9页
PostgreSQL数据库配置参数详解.docx_第4页
第4页 / 共9页
PostgreSQL数据库配置参数详解.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

PostgreSQL数据库配置参数详解.docx

《PostgreSQL数据库配置参数详解.docx》由会员分享,可在线阅读,更多相关《PostgreSQL数据库配置参数详解.docx(9页珍藏版)》请在冰豆网上搜索。

PostgreSQL数据库配置参数详解.docx

PostgreSQL数据库配置参数详解

十章  数据库参数

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

10.1如何设置数据库参数

所有的参数的名称都是不区分大小写的。

每个参数的取值是布尔型、整型、浮点型和字符串型这四种类型中的一个,分别用boolean、integer、floatingpoint和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=yes

log_destination='syslog'

search_path='"$user",public'

每一行只能指定一个参数,空格和空白行都会被忽略。

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

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

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

一个配置文件也可以包含其它配置文件,使用include指令能够达到这个目的,例如,假设postgresql.conf文件中有下面一行:

include‘my.confg’

文件my.config中的配置信息也会被数据库读入。

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

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

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

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

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

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

用户可以在自己建立的会话中执行命令SET修改某些配置参数的值(注意不是全部参数),例如:

SETENABLE_SEQSCANTOOFF;

另外,有些参数只有数据库超级用户才能使用SET命令修改它们。

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

例如:

(1)showall;      --查看所有数据库参数的值

(2)showsearch_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-domainsocket所在的操作系统用户组。

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

unix_socket_permissions(integer)

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

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

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

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

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

tcp_keepalives_idle(integer)

这个参数可以在任何时候被设置。

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

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

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

tcp_keepalives_interval(integer)

这个参数可以在任何时候被设置。

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

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

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

tcp_keepalives_count(integer)

这个参数可以在任何时候被设置。

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

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

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

10.2.2.安全与认证

authentication_timeout(integer)

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

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

单位是秒,默认值是60。

ssl(boolean)

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

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

默认值是off。

ssl_ciphers(string)

指定可以使用的SSL加密算法。

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

10.3资源消耗

10.3.1内存

shared_buffers(integer)

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

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

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

默认值是1024。

temp_buffers(integer)

这个参数可以在任何时候被设置。

默认值是8MB。

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

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

默认值是1024。

max_prepared_transactions(integer)

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

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

如果它的值被设为0。

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

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

默认值是5。

work_mem(integer)

这个参数可以在任何时候被设置。

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

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

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

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

单位是KB,默认值是1024。

maintenance_work_mem(integer)

这个参数可以在任何时候被设置。

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

数据库的维护操作包括VACUUM、CREATEINDEX和ALTERTABLEADDFOREIGNKEY等操作。

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

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

单位是KB,默认值是16384。

max_stack_depth(integer)  

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

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

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

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

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

单位是KB,默认值是100。

10.3.2FreeSpaceMap

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

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

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

所以,FSM如果太小,会导致系统频繁地扩展数据文件,浪费物理存储空间。

命令VACUUMVERBOSE在执行结束以后,会提示当前的FSM设置是否满足需要,如果FSM的参数值太小,它会提示增大参数。

FSM存放在数据库的共享内存中,由于物理内存的限制,FSM不可能跟踪数据库的所有的数据文件的所有数据块的可用空间信息,只能跟踪一部分数据块的可用空间信息。

max_fsm_relations(integer)

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

默认值是1000。

它决定FSM跟踪的表和索引的个数的上限。

每个表和索引在FSM中占7个字节的存储空间。

max_fsm_pages(integer)

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

它决定FSM中跟踪的数据块的个数的上限。

initdb在创建数据库集群时会根据物理内存的大小决定它的值。

每个数据块

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1