PostgreSQL full_page_write记录
PostgreSQL 在 checkpoint 之后在对数据页面的第一次写的时候会将整个数据页面写到 xlog 里面。
当出现主机断电或者OS崩溃时,redo操作时通过checksum发现“部分写”的数据页,并将xlog中保存的这个完整数据页覆盖当前损坏的数据页,然后再继续redo就可以恢复整个数据库了。
记住分两步进行。
full_page_writes (boolean)
When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint. This is needed because a page write that is in process during an operating system crash might be only partially completed, leading to an on-disk page that contains a mix of old and new data. The row-level change data normally stored in WAL will not be enough to completely restore such a page during post-crash recovery. Storing the full page image guarantees that the page can be correctly restored, but at the price of increasing the amount of data that must be written to WAL. (Because WAL replay always starts from a checkpoint, it is sufficient to do this during the first change of each page after a checkpoint. Therefore, one way to reduce the cost of full-page writes is to increase the checkpoint interval parameters.)
Turning this parameter off speeds normal operation, but might lead to either unrecoverable data corruption, or silent data corruption, after a system failure. The risks are similar to turning off fsync, though smaller, and it should be turned off only based on the same circumstances recommended for that parameter.
Turning off this parameter does not affect use of WAL archiving for point-in-time recovery (PITR) (see Section 25.3).
This parameter can only be set in the postgresql.conf file or on the server command line. The default is on.
当此参数打开时,PostgreSQL服务器在检查点首次修改该页面之后,将每个磁盘页面的整个内容写入WAL。这是需要的,因为在操作系统崩溃期间正在进行的页面写入可能仅部分完成,导致包含旧数据和新数据的磁盘页面。通常存储在WAL中的行级更改数据将不足以在崩溃恢复期间完全还原此类页面。存储全页图像可确保页面能够正确恢复,但以增加必须写入WAL的数据量为代价。 (因为WAL重放总是从检查点开始,所以在检查点之后的每个页面的第一次更改过程中这样做是足够的,因此,减少全页写入成本的一种方法是增加检查点间隔参数。)
关闭此参数可以加速正常运行,但在系统发生故障后可能会导致数据不能恢复,或无声数据损坏。风险类似于关闭fsync,尽管更小,只能基于与该参数相同的情况关闭。
关闭此参数不影响使用WAL归档进行时间点恢复(PITR)(见第25.3节)。
此参数只能在postgresql.conf文件或服务器命令行中设置。默认值为开。
wal_log_hints (boolean)
When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint, even for non-critical modifications of so-called hint bits.
If data checksums are enabled, hint bit updates are always WAL-logged and this setting is ignored. You can use this setting to test how much extra WAL-logging would occur if your database had data checksums enabled.
This parameter can only be set at server start. The default value is off.
当此参数打开时,PostgreSQL服务器在检查点之后的该页面的第一次修改期间将每个磁盘页面的整个内容写入WAL,即使对所谓的提示位进行非关键修改。
如果启用数据校验和,则提示位更新始终处于WAL状态,此设置将被忽略。 您可以使用此设置来测试如果您的数据库启用了数据校验和,将会发生多少额外的WAL日志记录。
此参数只能在服务器启动时设置。 默认值为off。
PostgreSQL full_page_write记录的更多相关文章
- postgresql学习记录1
数据库9.3.5,系统fedora20,不同系统操作略有不同. 使用yum 命令安装即可:sudo yum install postgresql,postgresql-server 安装完毕后系统中会 ...
- PostgreSQL学习记录-- 2016-03-11
1.日期字段 “年月日” 使用 date “年月日 时分秒” 使用 timestamp without time zone 2.布尔字段 使用 boolean 3.字符字段 使用 character ...
- PostgreSQL常用插件收集
hexdump -C 数据表文件 -- 查看表文件中数据. pg_stat_statements pgcompacttable -- 在减少锁的情况下,清理表和索引的老空间. pg_repack--P ...
- PostgreSQL - raise函数打印字符串
raise函数 在PostgreSQL中,该函数用于打印字符串,类似于Java中的System.out.println(),Oracle中的dbms_output.put_line(). 用法如下: ...
- 浅析Postgres中的并发控制(Concurrency Control)与事务特性(上)
转载:https://www.cnblogs.com/flying-tiger/p/9567213.html#4121483#undefined PostgreSQL为开发者提供了一组丰富的工具来管理 ...
- 浅析Postgres中的并发控制(Concurrency Control)与事务特性(上)(转)
这篇博客将MVCC讲的很透彻,以前自己懂了,很难给别人讲出来,但是这篇文章给的例子就让人很容易的复述出来,因此想记录一下,转载给更多的人 转自:https://www.cnblogs.com/flyi ...
- linux tableau server 连接 presto
记录一下这个弄个好久的难题 linux tableau server 版本 tableau-server-2018-2-0.x86_64.rpm 安装过程 我参照了这儿仁兄 http://ju. ...
- Apache ShardingSphere 5.1.2 发布|全新驱动 API + 云原生部署,打造高性能数据网关
在 Apache ShardingSphere 5.1.1 发布后,ShardingSphere 合并了来自全球的团队或个人的累计 1028 个 PR,为大家带来 5.1.2 新版本.该版本在功能.性 ...
- oracle和postgresql 递归查询父子关系记录语法区别
oracle: 一.数据 db数据字段如下: task_id task_name t.parent_task_id *** *** ...
随机推荐
- Spring 数据库连接池读取系统环境变量作为参数
原来是写在一个properties文件里面,后来项目要部署的的确太多了,每次更改不太方便,就想把这些固定不变的信息写在当地的环境变量里面 原先是这样的:引用的所有信息在jdbc.properties ...
- 认识与学习BASH(下)
1.设定数组的变量与内容:var[index]=content,数组的读取:建议直接以$(数组)的方式来读取 例:echo“${var[1]},${var[2]},${var[3]}” 2.变量内容的 ...
- 超过两行显示省略号 -webkit-line-clamp、-webkit-box-orient vue打包后不起作用
为了实现两行显示缩略显示,但是本地是可以显示,打包后不起作用 word-break: break-all; text-overflow: ellipsis; display: -webkit-box; ...
- ES6的十个新特性
这里只讲 ES6比较突出的特性,因为只能挑出十个,所以其他特性请参考官方文档: /** * Created by zhangsong on 16/5/20. */// ***********Nu ...
- Delphi 正则表达式语法(2): 或者与重复
Delphi 正则表达式语法(2): 或者与重复 // | 号的使用, | 是或者的意思 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create ...
- Typecho部署安装
此文章已经在这里上. 如果您看到这篇文章,表示您的 blog 已经在digitalocean.com安装成功.下面说下安装的步骤,此文章都是在digitalocean.com的centos上成功安装: ...
- Android 6.0 Kotlin 蓝牙BLE扫描
package com.arci.myapplication import android.os.Bundleimport android.support.design.widget.Snackbar ...
- java图像加密
0 前言 为了保护服务器的图像数据,需要用一个图像加密算法来加密服务器的图像:一开始找了一种基于混沌的图像加密算法,效果还是很理想的,是把矩阵图像上的像素点进行上下左右的混乱:后来发现加密后图像会变大 ...
- hadoop28---netty传对象
Netty中,通讯的双方建立连接后,会把数据按照ByteBuf的方式进行传输,例如http协议中,就是通过HttpRequestDecoder对ByteBuf数据流进行处理,转换成http的对象.基于 ...
- C#基元类型取值范围对照表
byte 无符号 8 为整数,值为0-255; sbyte 有符号8位整数,-128~127; short 有符号16位整数,范围在-32768~32767 ushort 无符号16位 ...