PostgreSQL 10.1 手册

  • 时间:
  • 浏览:0
  • 来源:幸运飞艇_幸运飞艇官方

PostgreSQL的 9.3 发布还可不上能 ,commit_delay的行为不同如果 效果更差:它只影响提交,而有的是所有 WAL 刷写,如果 即使在 WAL 刷写马上就要完成时也会停留一整个配置的延迟。从PostgreSQL 9.3 中刚始于,第一四个 准备好刷写的多多线程 运行运行会停留配置的间隔,而后续的多多线程 运行运行只等到领先者完成刷写操作。

当你这名参数为on, full_page_writes为on,意味着着 基础备份中, PostgreSQL服务器压缩详细页面图片到WAL中。 在WAL回放中解压压缩的页面图片。缺省值为off。 这麼超级用户需要修改你这名设置。

当你这名参数为on时,PostgreSQL服务器一四个 检查点还可不上能 页面被第一次修改期间把该磁盘页面的整个内容都写入 WAL,即使对所谓的提示位做非关键修改也会一四个 做。

指定在命令返回success指示给客户端还可不上能 ,一四个 事务否有需要停留 WAL 记录被写入磁盘。合法的值是onremote_applyremote_writelocaloff。默认的如果 安全的设置是on。当设置为off时,在向客户端报告成功和真正保证事务我这麼多 被服务器崩溃威胁之间会有延迟(最大的延迟是wal_writer_delay的三倍)。不同于fsync,将你这名参数设置为off我这麼多 产生数据库不一致性的风险:一四个 操作系统或数据库崩溃意味着着 会造成某些最近据说已提交的事务丢失,但数据库请况是一致的,就像哪几个事务意味着着 被干净地中止。如果 ,当性能比详细确保事务的持久性更重要时,关闭synchronous_commit需要作为一四个 有效的代替手段。更多讨论见第 400.3 节。

你这名参数需要随时被修改;任何一四个 事务的行为由其提交时生效的设置决定。如果 ,需要同步提交某些事务,一齐异步提交某些事务。累似 ,当默认是相反时,实现一四个 单一多语句事务的异步提交,在事务中发出SET LOCAL synchronous_commit TO OFF

在9.6还可不上能 的版本中,此参数还允许值archive和 hot_standby。哪几个仍然被接受, 但映射到replica

fsync这麼在postgresql.conf文件中或在服务器命令行上设置。意味着着 你关闭你这名参数,请也考虑关闭full_page_writes。

用于还未写入磁盘的 WAL 数据的共享内存量。默认值 -1 选折 等于shared_buffers的 1/32 的尺寸(至少3%),如果 不小于64kB如果 大于 WAL 段的尺寸(通常为16MB)。意味着着 自动的选折 这麼来这麼多或太小需要手工设置该值,如果 任何小于32kB的正值都将被当作32kB。你这名参数这麼在服务器启动时设置。

open_sync(用open()选项O_SYNC写 WAL 文件)

意味着着 打开你这名参数,PostgreSQL服务器将尝试确保更新被物理地写入到磁盘,做法是发出fsync()系统调用意味着着 使用多种等价的妙招(见wal_sync_method)。这保证了数据库集簇在一次操作系统意味着着 硬件崩溃需要恢复到一四个 一致的请况。

开启你这名参数需要减少WAL量而不增加不可恢复数据丢失的风险, 如果 增加了WAL日志压缩以及WAL回放解压过程中某些额外CPU成本开销。

logical层,与replica相同的信息会被记录,外加进去去 允许从 WAL 抽取逻辑修改集所需的信息。使用级别 logical将增加 WAL 容量,一阵一阵意味着着 为了REPLICA IDENTITY FULL配置了什么都有表如果 执行了什么都有UPDATEDELETE 语句时。

open_datasync(用open()选项O_DSYNC写 WAL 文件)

open_* 选项也需要使用O_DIRECT(意味着着 可用)。有的是在所有平台上都能使用所有哪几个选折 。默认值是列表中第一四个 被平台支持的那个, 不过fdatasync是 Linux 中的默认值。默认值不一定是最理想的;有意味着着 需要修改你这名设置或系统配置的某些方面来创建一四个 崩溃-安全的配置,或达到最佳性能。哪几个方面在第 400.1 节中讨论。你这名参数这麼在postgresql.conf文件中或在服务器命令行上设置。

当把fsync从关闭改成打开时,为了可靠的恢复,需要强制在内核中的所有被修改的缓冲区进入持久化存储。这需要在多个时机来完成:在集簇被关闭时或在fsync意味着着 运行initdb --sync-only而打开时、运行sync时、卸载文件系统时意味着着 重启服务器时。

但至少的 WAL 我这麼多 包括足够的信息来从基础备份和 WAL 日志中重建数据,如果 ,要启用 WAL 归档(archive_mode)和流复制,需要使用replica或更高级别。

在每次事务提交时,WAL 缓冲区的内容被写出到磁盘,如果 极大的值不意味着着 提供显著的收益。不过,把你这名值设置为几个兆字节需要在一四个 繁忙的服务器(其中什么都有客户端会在同一时间提交)上提高写性能。由默认设置 -1 选折 的自动调节将在大部分请况下得到合理的结果。

关闭你这名选项从不影响用于时间点恢复(PITR)的 WAL 归档使用(见第 25.3 节)。

意味着着 synchronous_standby_names被设置,你这名参数也控制事务提交否有将停留事务的 WAL 记录被复制到后备服务器上。当你这名参数被设置为on时,直到来自于当前同步的后备服务器的一四个 回复指示该后备服务器意味着着 收到了事务的提交记录并将其刷入了磁盘,主服务器上的事务才会提交。这保证事务将我这麼多 被丢失,除非主服务器和后备服务器都遭受到了数据库存储损坏的什么的问题。 当设置为remote_apply>时,提交将停留, 直到来自当前同步备用数据库的回复表明它们已收到事务的提交记录并应用它, 以便它对备用数据库上的查询可见。 当你这名参数被设置为remote_write时,提交将停留,直到来自当前同步的后备服务器的一四个 回复指示该服务器意味着着 收到了该事务的提交记录如果 意味着着 把该记录写出到后备服务器的操作系统,如果 该数据从不一定到达了后备服务器上的稳定存储。你这名设置足以保证数据在后备服务器的PostgreSQL实例崩溃时得以保存,如果 这麼保证后备服务器遭受操作系统级别崩溃时数据能被保持。 最后,设置local会意味着着 提交停留本地刷新到磁盘, 但我这麼多 进行复制。当使用同步复制时通常需要一四个 做, 如果 为了详细性而提供。

指定WAL编写器刷新WAL的频率。在刷新WAL还可不上能 , 它会睡眠wal_writer_delay毫秒,除非被异步提交的事务唤醒。 意味着着 最后一次刷新处于的时间小于wal_writer_delay毫秒前, 如果 从上一次刷写处于以来产生了小于WAL的 wal_writer_flush_after 个字节, 则WAL仅写入操作系统,而不刷新到磁盘。 默认值是 400 毫秒(400ms)。需要注意的是,在某些系统上,有效的休眠延迟解析度是 10 毫秒;将wal_writer_delay设置为有的是 10 的倍数将得到把它设置为下一四个 10 的倍数同样的效果。你这名参数这麼在postgresql.conf文件中或在服务器命令行上设置。

确实关闭fsync常常需要得到性能上的收益,但当处于断电或系统崩溃时意味着着 造成不可恢复的数据损坏。如果 ,这麼在能很容易地从内部内部结构数据中重建整个数据库时才建议关闭fsync

fsync(在每次提交时调用fsync()

意味着着 启用了数据校验和,提示位更新老是会被 WAL 记录如果 你这名设置会被忽略。给你使用你这名 设置测试意味着着 你的数据库启用了数据校验和,会有几个额外的 WAL 记录处于。

wal_level决定几个信息写入到 WAL 中。默认值是replica, 它写入足够的数据以支持WAL归档和复制,包括在备用服务器上运行只读查询。 minimal删除除了从崩溃或立即关闭中恢复所需的信息之外的所有日志记录。 最后,logical会增加支持逻辑解码所需的信息。每个层次包括所有更低层次 记录的信息。你这名参数这麼在服务器启动时设置。

在一次 WAL 刷写被发起还可不上能 ,commit_delay增加一四个 时间延迟,以微秒计。意味着着 系统负载足够高,使得在一四个 给定间隔内有额外的事务准备好提交,这麼通过允许更多事务通过一四个 单次 WAL 刷写来提交并能提高组提交的吞吐量。如果 ,它也把每次 WAL 刷写的潜伏期增加到了最多commit_delay微秒。意味着着 意味着着 这麼某些事务准备好提交,就会浪费一次延迟,这麼在当一次刷写将要被发起时有至少commit_siblings个某些活动事务时,才会执行一次延迟。另外,意味着着 fsync被禁用,则将我这麼多 执行任何延迟。默认的commit_delay是零(无延迟)。这麼超级用户并能修改你这名设置。

你这名参数这麼在postgresql.conf文件中或在服务器命令行上设置。默认值是on

把你这名参数关闭会加快正常操作,如果 在系统失败后意味着着 意味着着 不可恢复的数据损坏,意味着着 静默的数据损坏。其风险累似 于关闭fsync, 如果 风险较小。如果 这麼在可关闭fsync的请况下才应该关闭它。

fdatasync(在每次提交时调用fdatasync()

用来向强制 WAL 更新到磁盘的妙招。意味着着 fsync是关闭的,这麼你这名设置就不相关,意味着着 WAL 文件更新将根本我这麼多 被强制。意味着着 的值是:

你这名参数这麼在服务器启动时设置。默认值是off

fsync_writethrough(在每次提交时调用fsync(),强制任何磁盘写高速缓存的直通写)

当你这名参数为打开时,PostgreSQL服务器在一四个 检查点还可不上能 的页面的第一次修改期间将每个页面的详细内容写到 WAL 中。这麼做意味着着 在操作系统崩溃期间正在解决的一次页写入意味着着 这麼部分完成,从而意味着着 在一四个 磁盘页面中混合有新旧数据。在崩溃后的恢复期间,通常存储在 WAL 中的行级改变数据处于问题以详细恢复一四个 一四个 页面。存储详细的页面映像需要保证页面被正确存储,但代价是增加了需要被写入 WAL 的数据量(意味着着 WAL 重放老是从一四个 检查点刚始于,什么都有在检查点后每个页面的第一次改变时一四个 做就够了。如果 ,并有的是减小全页面写开销的妙招是增加检查点间隔参数值)。

指定 WAL 写入器刷写 WAL 的频繁程度。 意味着着 上一次刷写处于在少于wal_writer_delay 毫秒还可不上能 如果 从上一次刷写处于以来产生了少于wal_writer_flush_after 字节的 WAL,WAL 将只被写入到操作系统,而不刷新到磁盘。意味着着  wal_writer_flush_after被设置为0, 则 WAL 数据立即被刷新。默认是1MB。 你这名参数这麼在postgresql.conf文件中意味着着 服务器命令行上设置。

当使用同步复制时,它将对停留本地刷写磁盘和 WAL 记录复制很敏感,意味着着 对允许事务异步提交很敏感。不过,设置local需要用于希望停留本地刷写磁盘但不停留同步复制的事务。意味着着 这麼设置synchronous_standby_names,设置onremote_writelocal都提供了同样的同步级别:事务提交只停留本地刷写磁盘。

能安全关闭fsync的环境的例子包括从一四个 备份文件中初始加载一四个 新数据库集簇、使用一四个 数据库集簇来在数据库被删掉并重建还可不上能 解决一批数据,意味着着 一四个 被老是重建并却我这麼多 于失效备援的只读数据库复制。单独的高质量硬件处于问题以成为关闭fsync的理由。

在执行commit_delay延迟时,要求的并发活动事务的最小数目。大某些的值会意味着着 在延迟间隔期间更意味着着 有至少另外一四个 事务准备好提交。默认值是四个事务。

minimal级别中,某些批量操作的 WAL 日志需要被安全地跳过,这需要使哪几个操作快一点 (见第 14.4.7 节)。你这名优化需要应用的操作包括:

在什么都有请况下,为不重要的事务关闭synchronous_commit需要提供什么都有关闭fsync的潜在性能收益,从我这麼多 有的一齐, 关闭fsync需要提供什么都有潜在的性能优势,而我这麼多 有伴随着的数据损坏风险。