PostgreSQL常用配置参数【一表说明】

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

参数 更改需要重新启动 说明 类型 default 范围 设置建议
Work_mem 最小64kB.可以限制用于排序内存的大小,该值在客户端连接之后可以增加,该类型分配使用的是"非共享内存" 整型 4MB 64~2147483647 单位KB通常设置为64MB。 如果尝试寻找一个适合所有场景的答案,通常设置为64MB。内存中的排序往往是比需要借助磁盘临时文件的排序要快很多的。将这个参数设置成一个比较大的值,会导致你的部署环境中内存成为瓶颈,因为每个排序操作都需要这么多的内存。因此,当你有很多用户需要执行排序操作,那么系统将会为所有的用户分配work_mem×total_sort_operations大小的内存。全局地将这个值设置得很高,会导致很高的内存使用率。因此,将来推荐在会话级别来设置这个参数
Shared_buffers Y 共享内存缓冲区由参数shared_buffers 设置,它决定了 PostgreSQL 能够使用的专用缓存大小。增加 shared_buffers 的值是提高性能最有效的设置之一。对于专用的数据库服务器,shared_buffers 大概可以设置为系统内存的 25%。由于 PostgreSQL 还依赖于操作系统的缓存,大于内存 40% 的 shared_buffers 并不会带来性能的提示,反而可能会下降。 整型 1000 16~1073741823 块每个缓冲块为8KB内存25%è内存 40% 确保在所有机器和操作系统上的兼容性,PostgreSQL 默认将该值设置得很小,通常是 128 MB。因此,增加 shared_buffers 的值是提高性能最有效的设置之一。增加shared_buffers 的值通常也需要相应地增加 max_wal_size 的值,以便延长检查点的时间间隔。专用的数据库服务器,shared_buffers 大概可以设置为系统内存的 25%大于内存 40% 的 shared_buffers 并不会带来性能的提示
Maintenance_work_mem 指定了日常维护操作允许占用的最大内存,例如 VACUUM、CREATE INDEX 以及 ALTER TABLE ADD FOREIGN KEY 等操作 整型 64MB 1024~ 2147483647 KB 由于一个数据库会话同时只能执行一个维护操作,一般不会存在并发的维护操作;所以将该参数设置的比 work_mem 大很多也不会有问题,更大的维护内存还能够提高数据库清理和数据导入的性能。唯一需要注意的是,如果启动了 autovacuum,可能会占用 autovacuum_max_workers(默认为 3)倍 work_mem 设置的内存。我们也可以为此设置单独的autovacuum_work_mem 参数。
effective_cache_size 设置规划器对一个单一查询可用的有效磁盘缓冲区大小。为 PostgreSQL 提供了一个可供操作系统和数据库使用的缓存估值。默认值为 4 GB,保守估可以设置为是系统可用内存的 1/2。通常对于专用数据库服务器可以设置为系统总内存的 75%,可以根据特定的服务器工作负载进行调整。如果 effective_cache_size 设置过低,查询计划器可能会忽略某些索引,即使通过索引可以明显增加查询的性能。 整型 4GB 保守系统可用内存的 1/2è专用数据库服务器可以设置为系统总内存的3/4 最低限度:1 (8kB)最大:2147483647 (17179869176kB)单元:8kB 如果指定值时没有单位,则以块为单位,即BLCKSZ字节,通常为8kB。 默认值是 4GB。(如果BLCKSZ不是8kB,默认值会按比例缩放它。) 保守系统可用内存的 1/2è专用数据库服务器可以设置为系统总内存的 75% 它告诉PostgreSQL查询规划器估计有多少RAM可用于缓存数据,包括在shared_buffers和文件系统缓存中。这种设置可以帮助规划器做出合理的成本估算;它实际上并不分配内存。 如果effective_cache_size 设置过低,查询计划器可能会忽略某些索引,即使通过索引可以明显增加查询的性能。
max_connections Y max_connections 决定了客户端的最大并发连接数,默认值通常为 100。如果出现连接数过多,无法连接数据库的错误时,可能需要考虑增加最大连接数。不过,修改该参数还需要考虑对其他参数的影响(尤其是 work_mem);因为它们是基于每个连接设置的值,增加连接数也会导致这些内存使用量的增加。对于主从复制中的从节点,必须将该参数的值设置为大于等于主节点上的值;否则,从节点将无法执行查询操作。 整型 100 100300500~700 可取范围:1-262143 如果出现连接数过多,无法连接数据库的错误时,可能需要考虑增加最大连接数。修改该参数还需要考虑对其他参数的影响(尤其是 work_mem)。因为它们是基于每个连接设置的值,增加连接数也会导致这些内存使用量的增加。最佳性能是当存在300-500个并发连接时。在700之后,性能急剧下降(就每秒事务数和延迟而言)。超过1000个连接的任何连接均表现不佳,并且延迟不断增加。在Google Cloud和Heroku这些云平台上,也将max_connections限制在了500左右。max_connctions不易过大,要考虑到local memory,尤其是work_mem,推荐300 ~ 700区间的值,再高性能就损耗明显了,对于高吞吐量的数据库,可以考虑使用应用层面内置的连接池,也可以使用应用和数据库中间一层的连接池如pgbouncer。
geqo 允许或禁止遗传查询优化。默认是启用。在生产环境中通常最好不要关闭它。geqo_threshold变量提供了对 GEQO 更细粒度的空值。 布尔型 on on/off 在生产环境中通常最好不要关闭它。
random_page_cost 减少这个值(相对于seq_page_cost)将导致系统更倾向于索引扫描;提高它将让索引扫描看起来相对更昂贵。你可以一起提高或降低两个值来改变磁盘 I/O 代价相对于 CPU 代价的重要性,后者由下列参数描述。对磁盘存储的随机访问通常比顺序访问要贵不止四倍。但是,由于对磁盘的大部分随机访问(例如被索引的读取)都被假定在高速缓冲中进行,所以使用了一个较低的默认值(4.0)。默认值可以被想成把随机访问建模为比顺序访问慢 40 倍,而期望 90% 的随机读取会被缓存。如果你相信 90% 的缓冲率对你的负载是一个不正确的假设,你可以增加 random_page_cost 来更好的反映随机存储读取的真正代价。相应地,如果你的数据可以完全放在高速缓存中(例如当数据库小于服务器总内存时),降低 random_page_cost 可能是合适的。为具有很低的随机读取代价的存储(例如固态驱动器)采用较低的 random_page_cost 值可能更好。虽然允许你将random_page_cost设置的比 seq_page_cost小,但是物理上的实际情况并不受此影响。 然而当所有数据库都位于内存中时,两者设置为相等是非常合理的,因为 在此情况下,乱序抓取并不比顺序抓取开销更大。同样,在缓冲率很高的 数据库上,你应当相对于 CPU 开销同时降低这两个值,因为获取内存中 的页比通常情况下的开销小许多。 浮点型 4.0 0è1.79769e+308 设置数据库存储的寻道扫描时间的比例。不应该被改变,除非你使用特殊的存储(ssd,高端san等),其中查找/扫描比率实际上是不同的。如果需要数据库更喜欢索引,那么就调优effecve_cache_size和一些cpu_*开销。 减少这个值(相对于seq_page_cost)将导致系统更倾向于索引扫描;提高它将让索引扫描看起来相对更昂贵。 若90% 的缓冲率对你的负载是一个不正确的假设,可以增加random_page_cost 来更好的反映随机存储读取的真正代价。 如果数据可以完全放在高速缓存中(例如当数据库小于服务器总内存时),降低 random_page_cost 可能是合适的。
Checkpoint_timeout 影响系统何时启动一个检查点操作。如果现在的时间减去上次检查点操作结束的时间超过了checkpoint_timeout的值,系统就会自动启动一个检查点操作。增大这个参数会增加数据库崩溃以后恢复操作需要的时间。当促发检查点操作时, 数据库会进行前面说的(刷脏数据)行为。这是一个代价十分大的操作,因为它会引发大量的IO。这个过程涉及到了大量读写磁盘的操作。若用户的系统速度赶不上写数据的速度,则可以适当提高该值。 浮点型 5min 53060min~24h可取范围在 30秒到 1 天之间。 增大这个参数会增加数据库崩溃以后恢复操作需要的时间。若用户的系统速度赶不上写数据的速度,则可以适当提高该值。一般来说,默认值(5分钟)相当低,普遍采用30分钟到1小时之间,PostgreSQL 9.6甚至增加了最多1天,建议使用30分钟。如果您执行非常大的ETL批处理,您可能希望将此设置增加到批处理运行的最大长度。
temp_buffers 设置每个数据库会话使用的临时缓冲区的最大数目。此本地缓冲区只用于访问临时表。临时缓冲区是在某个连接会话的服务进程中分配的,属于本地内存。临时缓冲区的大小也是按数据块大小分配的,默认是 1000,对于 8K 的数据块大小为 8MB。 整型 8MB 100~1073741823 单位8KB 此本地缓冲区只用于访问临时表临时缓冲区是在某个连接会话的服务进程中分配的,属于本地内存。目前仅用于在内存中保存临时表。如果您的应用程序需要大量使用临时表(许多专有报表引擎都需要),那么可能需要大幅增加临时表的使用。但是,要小心,因为这是每个会话分配的非共享RAM。否则,默认即可。
cpu_tuple_cost 设置规划器对一次查询中处理每一行的代价估计。默认值是 0.01 浮点型 0.01 0è 1.79769e+308
deadlock_timeout 在检查是否存在 deadlock 条件之前,等待一个 lock 的时间长度。 死锁检查是相对昂贵的,因此,pg 不会在每次等待 lock 时都运行死锁检测。PostgreSQL 会乐观的认为死锁在生产应用程序中并不常见,只需要等待一段时间后再检查死锁。这是您在实践中想要设置的最小值,在负载很重的 pg 中,可能需要提高本参数值。在理想情况下,本参数值应该超过典型的 transaction 时间,以提高在 PostgreSQL 决定检查死锁之前将释放锁的几率。仅仅 superuser 可以修改本参数值。 在log_lock_waits 参数启用的情况下,deadlock_timeout参数值也决定了一个有关 lock wait 的 log message 被写入运行日志之前的等待时间。如果你正在尝试调查锁定延迟 (lockingdelays),你可能希望设置比正常deadlock_timeout 参数值更短的时间。 整型 1000ms 应该超过典型的 transaction 时间, 1è2147483647ms 负载很重的 pg 中,可能需要提高本参数值。 在理想情况下,本参数值应该超过典型的 transaction 时间,以提高在 PostgreSQL 决定检查死锁之前将释放锁的几率。 如果你正在尝试调查锁定延迟 (locking delays),你可能希望设置比正常 deadlock_timeout 参数值更短的时间。
cpu_operator_cost 设置规划器对于一次查询中处理每个操作符或函数的代价估计。默认值是 0.0025。 浮点型 0.0025 0è 1.79769e+308 稍微减少这个值,让数据库更喜欢索引。
stats_start_collector 要想让统计收集器运行起来,参数 stats_start_collector 必须设置为 true ,如果你对统计信息不感兴趣并且想把所有额外的开销都去除,那么可以把它设置为 false 布尔型 TRUE true/false 如果对统计信息不感兴趣并且想把所有额外的开销都去除,那么可以把它设置为 false
cpu_index_tuple_cost 设置规划器对一次索引扫描中处理每一个索引项的代价估计。默认值是 0.005。 浮点型 0.005 0è 1.79769e+308 稍微减少这个值,让数据库更喜欢索引。
Fsync 将数据刷新到磁盘以确保崩溃安全(关闭此功能可能导致不可恢复的数据损坏) 。强制把数据同步更新到磁盘是因为系统的IO压力很大,为了更好的测试其他配置的影响,把改参数改为off 布尔型 on on/off 为了更好的测试其他配置的影响,把改参数改为off 将数据刷新到磁盘以确保崩溃安全(关闭此功能可能导致不可恢复的数据损坏) 。

文章来源地址https://www.toymoban.com/news/detail-523337.html

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

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

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

相关文章

  • 2. postgresql并行扫描(1)——pg强制走并行扫描建表及参数配置

    转载自:https://developer.aliyun.com/article/700370 max_parallel_workers_per_gather 参数控制执行节点的最大并行进程数,通过以上并行计划可知,开启并行后,会启动两个 worker 进程(即 Workers Launched: 2)并行执行 https://developer.aliyun.com/article/684431 并行扫描的理念很朴素,即启动多个 worker

    2024年02月09日
    浏览(35)
  • psql: error: connection to server on socket “/var/run/postgresql/.s.PGSQL.5432“ failed: No such file

    当我在linux debian版本安装postgres数据库遇到的问题: 帮我解决成功的方法如下:可以直接复制运行,需要看注释 步骤一: 步骤二: 注意这里的16是我postgres的版本,你要改成你对应的版本数字比如14就改成14,然后出现语言区域我一般默认直接回车 步骤三: 然后就成功了 引

    2024年02月02日
    浏览(46)
  • Centos系统上安装PostgreSQL和常用PostgreSQL功能

    安装环境 软件 版本 CentOS CentOS 7.x PostgreSQL 9.x-12.x 1、导入yum源 2、安装PostgreSQL服务 3、初始化数据库 4、启动PostgreSQL服务 PostgreSQL安装成功之后,会默认创建一个名为postgres的Linux用户,初始化数据库后,会有名为postgres的数据库,来存储数据库的基础信息,例如用户信息等等,

    2024年01月25日
    浏览(44)
  • PostgreSQL 常用空间处理函数

    添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ) 检查数据库几何字段并在geometry_columns中归档 Probe_Geometry_Columns() 给几何对象设置空间参考(在通过一个范围做空间查询时常用)ST_SetSRID(geometry, integer) 获取两个几何对象间的距离:ST_Distance(geometry, geometry

    2024年02月15日
    浏览(27)
  • postgresql-常用日期函数

    PostgreSQL 提供了以下日期和时间运算的算术运算符。 获取当前系统时间 age(timestamp, timestamp)函数用于计算两个时间点之间的间隔,age(timestamp)函数用于 计算当前日期的凌晨 12 点到该时间点之间的间隔 date_part(text, timestamp)和 extract(field FROM timestamp)函数用于获取日期时间中的某

    2024年02月09日
    浏览(35)
  • PostgreSQL常用命令

    一、数据库 1 登录数据库 2 查看数据库 3 删除数据库 4 如果数据库名称中包含符号-,则用双引号包括数据库名称 5 查看当前数据库 6 切换数据库 7 退出数据库 二、数据表 1 显示当前数据库中的所有表 2 显示指定表结构 4 xx 三、用户 1 查看所有用户 2 查看当前用户 3 修改用户

    2024年02月07日
    浏览(34)
  • PostgreSQL 常用监控指标

    最关键的一些数据库健康指标,趋势监测。 主要看趋势,直接与业务量挂钩 如果连接数接近max_connection水位,需要注意。 同时连接数应与数据库主机可用内存挂钩,每个连接保守估计10MB内存开销(这里还未计算SYSCACHE,RELCACHE)。 演示,打印每秒的总连接数。 主要看趋势,直

    2024年02月12日
    浏览(33)
  • postgresql-常用数学函数

    2024年02月09日
    浏览(27)
  • PostgreSQL常用函数

    PostgreSQL 内置函数也称为聚合函数,用于对字符串或数字数据执行处理。 下面是所有通用 PostgreSQL 内置函数的列表: COUNT 函数:用于计算数据库表中的行数。 MAX 函数:用于查询某一特定列中最大值。 MIN 函数:用于查询某一特定列中最小值。 AVG 函数:用于计算某一特定列中

    2024年02月14日
    浏览(37)
  • PostgreSQL(五)常用数据类型

    数据类型 别名 说明 character(n) char(n) 定长字符串,不足补空格 character varying(n) varchar(n) 变长字符串 text 变长字符串 数据类型 别名 说明 范围 smallint int2 有符号2字节整数 :-32768 到 +32767 integer int 、 int4 有符号4字节整数 :-2147483648 到 +2147483647 bigint int8 有符号8字节整数 :-922337203

    2024年02月06日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包