pg能够提高可靠性的参数,pg_checksums

PG中的checksum PG中的checksum 视图pg_stat_database记录了校验和数据页失败的页数。 PostgreSQL checksum 行为: 1、开启checksum后,PostgreSQL 从shared buffer把数据write出去,需要计算checksum。 2、开启checksum后,从shared buffer外面(disk, os page cache)读取BLOCK到shared buffer里面,需要计算block的checksum,对比存储在page head里头的checksum是否 阅读详情

定义

在计算机系统中,checksum 通常用于校验数据在传输或存取过程中是否发生错误。PostgreSQL从 9.3 开始支持 checksum,以发现数据因磁盘、 I/O 损坏等原因造成的数据异常。 PostgreSQL 从 9.3 开始支持数据页的 checksum,可以在执行 initdb 时指定 -k 或 --data-checksums 参数开启 checksum,但开启 checksum 可能会对系统性能有一定影响,官网描述如下: Use checksums on data pages to help detect corruption by the I/O system that would otherwise be silent. Enabling checksums may incur a noticeable performance penalty. If set, checksums are calculated for all objects, in all databases. All checksum failures will be reported in the pg_stat_database view.

功能

视图pg_stat_database记录了校验和数据页失败的页数。 启用 checksum 后,系统会对每个数据页计算 checksum,从存储读取数据时如果检测 checksum 失败,则会发生错误并终止当前正在执行的事务,该功能使得 PostgreSQL 自身拥有了检测 I/O 或硬件错误的能力。

Checksum 引入一个 GUC 参数 ignore_checksum_failure,该参数若设置为 true,checksum 校验失败后不会产生错误,而是给客户端发送一个警告。当然,checksum 失败意味着磁盘上的数据已经损坏,忽略此类错误可能导致数据损坏扩散甚至导致系统奔溃,此时宜尽早修复,因此,若开启 checksum,该参数建议设置为 false,默认为false。

PostgreSQL checksum 行为:
1、开启checksum后,PostgreSQL 从shared buffer把数据write出去,需要计算checksum。
2、开启checksum后,从shared buffer外面(disk, os page cache)读取BLOCK到shared buffer里面,需要计算block的checksum,对比存储在page head里头的checksum是否一致。
3、已经在shared buffer里面的block,变更、读取时并不需要计算checksum。

数据页的 checksum 在从 Buffer pool 刷到存储时才设置,当页面再次读取至 Buffer pool 时进行检测。PostgreSQL 会在页面从存储读入内存时检测其是否可用,调用函数为 PageIsVerified,该函数不仅会检测正常初始化过的页(non-zero page),还会检测 全零页(all-zero page)。

作用、使用

Checksum 使 PostgreSQL 具备检测因硬件故障或传输导致数据不一致的能力,一旦发生异常,通常会报错并终止当前事务,用户可以尽早察觉数据异常并予以恢复。

当然,开启 checksum 也会引入一些开销,体现在两个方面: 计算数据页的 checksum 会引入一些 CPU 开销,具体开销取决于 checksum 算法的效率 checkpoint 后,若因更新 Hint Bits 将页面第一次置为 dirty 会写一条记录 Full Page Image 的 WAL 日志,以用于恢复因更新 Hint Bits 产生的破碎页。

对于数据可用性要求较高的场景,通常建议将 full_page_writes 和 checksum 都打开,前者用于避免写失败导致的数据缺失,后者用于尽早发现因硬件或传输导致数据不一致的场景,一旦发现,可以利用 full_page_writes 和 checksum 记录在 WAL 日志中的 Full Page Image 进行数据恢复。

版权声明:本文为「小麦苗DBA宝典(www.xmmup.com)」的原创文章,遵循CC 4.0 BY -SA版权协议,转载请附上原文出处链接及本声明。
转载请保留原文链接: https://www.xmmup.com/pg12zhongdepg_checksumsmingling.html

给FastGPT/Dify搭个家:在CentOS 7.9上搞定PostgreSQL 15和pgvector 0.5.1的保姆级教程 本文详细介绍了在CentOS 7.9系统上部署PostgreSQL 15和pgvector 0.5.1插件的完整教程,旨在为FastGPT/Dify等AI知识库系统打造高性能向量数据库。从环境规划、PostgreSQL定制化安装、性能调优到pgvector深度集成,提供了全面的配置指南和实战设计建议,帮助开发者构建高效的AI应用数据库解决方案。 阅读详情

相关推荐

PostgreSQL data同步工具【pg_rewind】

pg_rewind is a tool for synchronizing a PostgreSQL data directory with another PostgreSQL data directory that was forked from the first one. The result is equivalent to rsyncing the first data directory with the second one. The advantage of pg_rewind over

连顺科 4308

PostgreSQL自带的命令行工具19- pg_checksums

是 PostgreSQL 数据库中的一个工具,用于启用、禁用或校验数据页。数据页校验是 PostgreSQL 9.3 版本引入的一项功能,旨在提高数据完整性,通过对每个数据页计算校验,并在数据读取时验证这些校验,来检测硬件故障或磁盘I/O错误导致的数据损坏。

文牧之的博客 1536

【信息科学与工程学】信息科学领域工程——第十一篇 数据库基础101 数据库内核01

让修改聚集:通过 Range 分区(按时间)+ Hash 二级分区,让增量数据在物理上聚集,最小化 ρ让复用生效:确保使用增量合并(默认),避免不必要的全量合并;DDL 操作后使用渐进合并让节奏匹配:根据业务负载调整,并启用自适应合并让迁移智能:使用 OMS + 旁路导入 + 分区交换,迁移期间临时删索引、打散 Leader让架构帮忙:在 V4.x 共享存储架构下,利用宏块级重用 + 基线数据共享,从架构层面消除迁移写放大。

weixin_49199313的博客 24

在PG或HGDB上启用块校验checksum

使用checksum,对数据库提供块校验,以发现隐藏的块损坏问题,注意仅适用于原生PG或HGDB企业版,或未使用SM4加密的HGDB安全版。

HighGO 1413

基于单片机控制的开关电源设计

采用开关电源技术和MCU模块,凭借可靠性高、易于调适的特点,可以更高效地发挥出二者的优势,从而实现更好的组合。stm32的起动模式是通过Boot0和Boot1两个管脚的高低电平来决定的,当stm32被供电之后,这两个管脚的电平。在 VCC上,键盘的一头(列线)被连接到 VCC上,而在“0”的编程输出中,则用来进。,在开关管打开的情况下,由输入电力供给电流,感应装置存储   Buck变换器是一种非隔离式的电压转换器[10]整流电路对输入电压进行整流,再经过滤波电路,即Dc电压是直流/直流变换器的直流输入。

QQ1694456187的博客 2307

手把手教你用UC3842搭建12V/5A反激电源(附PSIM仿真文件)

本文详细介绍了基于UC3842的12V/5A反激电源设计与PSIM仿真实践。从UC3842芯片选型、高频变压器计算到PSIM仿真模型搭建,提供完整的开关电源设计流程。特别包含PCB布局要点和实测优化建议,帮助工程师快速掌握反激电源开发技巧。

u6v7w8x的博客 1201

PostgreSQL 数据完整性检查工具对比:amcheck 与 pg_checksums

amcheck扩展和工具。它们在功能定位、检查层次和使用场景上有显著区别。

文牧之的博客 1769

比亚迪开放平台接口实战:车身状态监测与智能车联应用开发

本文详细介绍了如何利用比亚迪开放平台的车身状态接口进行智能车联应用开发。通过核心类BYDAutoBodyworkDevice,开发者可以安全获取车辆VIN、车门车窗状态、蓄电池电压、方向盘转角等实时数据,并利用监听器实现状态实时响应。文章提供了从SDK集成、接口调用到典型应用场景(如远程车况检查、车队管理)的完整实战指南,助力开发者快速构建基于比亚迪车辆数据的创新应用。

weixin_29176179的博客 714

postgresql 15源码浅析(5)—— pg_control

pg_control保存了4类信息,分别是postgres集簇的初始化信息、系统信息、checkpoint信息、recovery信息。多种服务端工具会对pg_control进行查看或者修改。本文从代码的角度梳理了对pg_control读写相关的代码,希望能对大家了解postgres控制文件有所帮助。...

夏洛的克 1123

[QMT量化交易小白入门]-四十四、年化收益48%的策略要兼容回测和实盘,将实盘改为定时任务的方式

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1369

AI智能体在零售行业的5大变革性应用

本文旨在全面介绍AI智能体在零售行业的关键应用场景,分析其技术原理和商业价值,帮助读者理解这些技术如何改变传统零售模式。文章将从核心概念入手,逐步深入五大应用场景的技术实现,最后探讨未来趋势和挑战。AI智能体:能够感知环境、做出决策并执行行动的智能软件实体机器学习:让计算机从数据中学习模式而无需显式编程的技术深度学习:基于神经网络的机器学习方法,能够处理复杂模式识别核心概念回顾AI智能体是零售数字化转型的关键驱动力从推荐系统到库存管理,AI正在重塑每个零售环节。

AI 原生应用开发的博客 1350

PostgreSQL 9.6 for Centos7.4 最佳实践安装

文章目录概述PG9.6的主要新增功能系统的最佳实践关闭防火墙关闭selinux文件系统预读设置文件访问时间透明大页的关闭安装PG9.6下载源码包解压源代码查看编译选项编译安装添加用户配置好目录初始化数据库参数设置日志策略监听IP内存参数的设置tips 概述 PostgreSQL9.6 是PG一个非常经典的稳定版本,现在还有许多用户在使用这个版本。本篇就教大家如何最佳实践安装PG9.6数据库 PG9...

高云平的博客 1331

数据分析!Python爬虫爬取B站UP主数据并分析涨粉规律(附可视化图表)

爬取更多UP主:扩充列表,增加需要分析的UP主UID数量爬取更多作品:修改的参数,增加每个UP主的作品爬取页数新增分析维度:在类中添加方法,可分析发布时间(如定时发布对涨粉的影响)、内容标签(如游戏/知识区涨粉差异)优化可视化样式:调整方法中的图表类型、颜色、标题等,适配个人展示需求播放量与粉丝数强正相关:从相关性热力图可看出,总播放量与粉丝数的相关系数通常在0.8以上,说明曝光量是涨粉的核心基础作品数量存在“边际效应”

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1225

PostgreSQL checksum与Data Corruption

存储介质故障指的是读取或写入数据的存储介质出现的物理上的故障。这是DBA不得不重点关注的问题之一。 一个典型的介质故障就是磁盘的磁盘头损坏,这会导致磁盘中存储的所有文件丢失。与数据库关联的文件例如数据文件、wal日志文件和控制文件都会因为磁盘崩溃而损坏。 这篇文章我们将重点介绍在PostgreSQL中遇到磁盘故障后,我们该如何在故障后找回数据(并不是还原备份)。 1、PostgreSQL checksum概述 第1章:什么是checksum? 第2章:PostgreSQL checksum:实际实现 第3

Focus on PostgreSQL 3001

SAP-ABAP:ABAP 开发基础概念入门:写给刚踏入 SAP 开发世界的新人

本文介绍了 ABAP 开发语言的基础概念,帮助 SAP 开发新人快速入门。主要内容包括: ABAP 的发展历程与核心优势 - 作为 SAP 平台的专属语言,ABAP 在企业级应用开发中具有深度集成、数据处理高效和长期稳定的特点 ABAP 开发环境概览 - 介绍了 SE38、SE80 等关键事务码,以及 ABAP 工作台的核心组件和开发权限管理 基础语法入门 - 重点讲解了 ABAP 特有的数据类型体系(特别是结构体和内表),并通过 Hello World 示例展示程序基本结构 文章通过对比 ABAP 与 J

baidu_35680696的博客 511

ROCm rocr-libhsakmt分析系列1-2:多GPU跨卡VRAM访问机制分析

本文基于ROCr-Runtime的libhsakmt库源码,深入分析了多GPU系统中跨设备内存访问的实现机制。主要内容包括: 实现流程概述:通过P2P拓扑发现、统一虚拟地址空间、页表映射和硬件转发四个步骤,实现零拷贝的跨GPU内存访问。

图形/计算GPU的驱动与虚拟化技术分享园地 2499

PostgreSQL 12 主流程源码深度剖析与实战应用

PostgreSQL 12 在主流程架构、性能、安全、扩展性等方面实现了全面进化。其模块化流程、底层优化与高级算法相结合,既能应对海量数据高并发场景,也支持灵活扩展与深度定制。通过深入源码、流程图和实战举例,本文系统阐释了 PostgreSQL 12 的知其然与知其所以然。对于开发、运维、架构师而言,掌握其主流程与底层机制,是提升数据库系统能力的坚实基础。速记口诀(全文核心流程)启动主进程,解析语法树;计划优化器,执行分层次;存储管数据,日志保一致;分区强扩展,索引可无阻;JSON路查询,安全多认证;

IT技术学习与工作笔记分享 1054

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

PGer应知十技

1.准确理解tuple(元组)的概念 2.初始化时打开checksums 3.跨库访问需重新连接 4.xlog不能删除 5.按需设置日志项并合理输出 6.truncate操作应按DML进行配置 7.使用tmux工具高效搭配psql 8.autovacuum调优 9.定期维护索引 10.善用PG关键字

多米爸比的专栏 1177

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

postgresql 页损坏(corrupted page)之checksum功能

1.验证数据库是否开启了checksum功能,0代表未开启,1为已开起 2.创建测试表t3,并insert10万笔数据 create table t3 (id int,name text) insert into t3 values(generate_series(1,100000),‘hello world’) 3.5.定位table在文件系统中的位置 4.模拟破坏table page 5.尝试访问table,结果当table有corrupted page时,postgresql仅仅是返回0行数据来回

weixin_43230594的博客 1834

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

PostgreSQL技术大讲堂 - 第86讲:数据安全之--data_checksums天使与魔鬼

PostgreSQL技术大讲堂 - 第86讲,主题:数据安全之--data_checksums天使与魔鬼。如果某一天银行账户表中莫名其妙的多了一个账户,你觉得会是什么原因?如果某一天表中居然出现了违反约束的数据,你觉得这是为什么?地址:钉钉群直播 (群号:8928 5006 175)如果你想学到非常规的技术,那么可以来看看!2、避开DML规则,嫁接非法数据并合法化。3、避开约束规则,嫁接非法数据到表中。如果需要读取坏块的数据,你会怎么做?4、避开数据检查,读取坏块中的数据。

m0_65303136的博客 398

校验和checksum校验两个文件是否一样

校验和(checksum),是应用于网络传输中校验数据完整性一种常见方法,以检查是否已收到完整的消息。有几种常见的校验和生成算法,例如 Adler32 和 CRC32,当然也可以使用MD5、哈希函数算法SHA256等等来生成checksum值。

Nicky's blog 1799

PostgreSQL checksum

在计算机系统中,checksum 通常用于校验数据在传输或存取过程中是否发生错误。PostgreSQL 从 9.3 开始支持 checksum,以发现数据因磁盘、 I/O 损坏等原因造成的数据异常。本文介绍 PostgreSQL 中 checksum 的使用及其实现原理。 概述 PostgreSQL 从 9.3 开始支持数据页的 checksum,可以在...

weixin_34122548的博客 1550

PostgreSQL pg_catcheck 系统文件的缺失的检查员

POSTGRESQL 如果系统文件丢失或者无法使用,怎么办,那堆系统文件都在哪里,怎么检测,此刻是不是心里有慌的一匹的感觉.pg_catcheck 会帮助PGER 们来好好的来管管此...

sql server的专栏 598

PostgreSQL 11 preview - Allow on-line enabling and disabling of data checksums

标签 PostgreSQL , checksum , online modify , pg_verify_checksums , pg_enable_data_checksums , pg_disable_data_checksums 背景 PostgreSQL的数据文件是以数据块组织的,由于数据块可能比文件系统的原子写更大,所以在某些情况下可能出现...

weixin_33751566的博客 354

常用的文件系统、存储类型小整理

最近接触到了五花八门的文件系统、存储类型,名词听得头大,趁假期整理学习一番~

Hehuyi_In的博客 4657
上一篇: pg wal日志名称格式及其含义
下一篇: 使用orchestrator搭建mysql8.0三节点集群的参数配置,记网络连接失效导致的一次故障
code_feien
博客等级 码龄7年 71粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值