恒讯科技介绍:PostgreSQL服务器配置的参数指南

描述

PostgreSQ服务器配置参数在优化和增强数据库性能方面发挥着重要作用。PostgreSQL的主要可调设置位于名为 postgresql.conf 的纯文本文件中,该文件位于数据库目录结构的底部。这些配置参数中的大多数大致分为以下几类:

1、数据库连接参数

2、记录参数

3、内存参数

下面,小编就详细给大家介绍一下PostgreSQL服务器配置的参数指南。

一、连接参数

有许多配置参数可以控制人们如何远程和本地连接到数据库。

1、监听地址

任何需要从远程系统连接的安装都需要更改listen_addresses以允许连接。默认情况下仅允许来自登录到与数据库服务器相同系统的用户的本地连接。一种常见的方法是接受来自任何地方的传入连接——就主配置文件而言,如下所示:listen_addresses = '*'

2、最大连接数

Max_connections是我们在initdb生成的postgresql.conf中总是会发现设置为一个值的设置之一,通常为100。因为每个连接都使用少量的共享内存,所以共享内存默认值特别有限的系统甚至可能不允许这么多连接。因此,在创建数据库集群时,initdb会进行一些调查,然后将支持的最大值(最多100)保存到默认配置中。实际上,每个客户端用于诸如排序之类的事情的非共享内存量将使它相形见绌,但不能完全忽略共享组件。

重要的是不要将此参数设置为比您需要的值高得多的值。较大的设置有几个缺点。第一个是浪费的共享内存,通常是最后一个要关注的事情,因为每个连接的数量很小。

二、记录参数

常规日志记录设置至关重要,因为日志记录在调试错误、警告和其他系统问题中起着至关重要的作用。我们可能需要设置log_destination、log_directory和log_filename等参数,以符合我们环境的系统管理要求的方式保存我们的日志文件。在大多数系统上,这些都将设置为合理的默认值以开始使用。在类UNIX系统上,一些数据库日志记录通常在启动和停止服务器的脚本中设置,而不是直接在postgresql.conf 文件中设置。

1、log_line_prefix

默认的log_line_prefix参数是空的,一个好的起始值如下:

这会将以下内容放入每个日志行:

%t:时间戳%u:数据库用户名%r:远程主机连接%d:数据库%p:连接的进程ID

2、日志语句

语句日志记录是一种用于查找性能问题的强大技术。分析log_statement保存的信息和语句级详细信息的相关来源可以揭示许多类型的性能问题的真正来源。此设置的选项如下:

none:不记录任何语句级信息。

ddl:仅记录数据定义语言(DDL)语句,例如CREATE和DROP。这通常可以保留,即使在生产中,也可以用于捕获管理员无意或有意引入的重大更改。

mod:记录任何修改值的语句,除了简单的SELECT语句外,它基本上是所有内容。如果我们的工作负载主要是基于SELECT且数据更改相对较少,则始终启用此功能可能很实用。

all:记录每条语句。由于日志记录的开销,这在生产中通常是不切实际的。但是,如果我们的服务器相对于它的工作负载来说足够强大,那么让它一直保持运行可能是可行的。

log_min_duration_statement

一旦我们对执行典型的查询语句需要多长时间有了一些了解,此设置允许您仅记录超过我们设置的阈值的语句。该值以毫秒为单位,因此我们可以设置以下内容:

log_min_duration_statement=1000

这样,我们将只会看到运行时间超过1秒的语句。这对于找出比大多数执行时间长得多的离群语句的来源非常方便。

三、内存参数

数据库组件需要内存来缓存频繁访问的数据、事务日志和排序数据。因此,正确调整内存参数至关重要,因为它可以帮助优化数据库性能。

1、共享缓冲区

该参数的值定义了PostgreSQL共享缓冲池的大小。换句话说,此参数控制PostgreSQL用于缓存数据的内存量。128 MB的默认值对于任何现实世界的工作负载来说都非常低,需要加强。此值应根据数据集大小设置,数据库服务器应该在峰值负载和可用RAM的基础上处理。事实上的经验法则是,在RAM超过1GB的系统上,此参数的合理值约为系统内存的四分之一。此参数的值也可以设置为更大的值,并且理想情况下有效的最大设置为可用RAM的40%。但是将它增加到超过该限制可能不会有效,因为PostgreSQL也依赖于操作系统缓存来进行操作。较大的shared_buffers参数值意味着增加 checkpoint_segments 值,以便在一段时间内分散写入大量新数据或更改数据的过程。此值只能在服务器启动时设置。

2、临时缓冲区

此参数定义每个数据库会话用于缓存临时表数据的内存量。这些基本上是会话本地缓冲区,仅用于访问临时表。在Postgresql版本9.4中,此参数的默认值为八,并且此设置可以在单个会话中更改,但只能在会话中首次使用临时表之前更改。任何后续更改该值的尝试都不会影响现有会话。

3、维护工作内存

此参数定义维护操作使用的最大内存量,即VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY 操作需要更多工作内存。要注意的是,这些会话中的许多会话不太可能同时执行这些操作,因此可以将此值设置为比标准每个客户端work_mem设置大得多的值。在PostgreSQL 版本9.4中,此参数的默认值设置为64MB。这里需要注意的一点是,当autovacuum运行时,autovacuum_max_workers的值分配此内存的次数。从优化的角度并考虑到没有增加autovacuum worker的数量,一个好的配置设置是将其设置为系统总内存的5%左右,这样即使五个这样的进程也不会超过可用内存的四分之一记忆。这大约相当于每GB服务器系统内存50 MB的maintenance_work_mem。

以上是PostgreSQL服务器配置的参数指南介绍,希望能帮助到大家参考!

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分