暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 从库 standby 为何要切断你的“需求”

以上问题是群里面一个“数”友的问题

首先要说的是,这个“数”友的问题是,他们公司使用的是SQL SERVER 由于各种不满(此处省略N多文字),然后他们要换数据库,如果换成PG会如何,他们在从库会有很多的复杂查询的问题。所以才有了这篇文字。


首先要说的PG 是物理复制,所以延迟的问题,只要你基础工作做的好,(网络,硬件环境)延迟的问题和MYSQL的延迟的问题,文字都叫延迟,但实际上不在一个LEVEL。


担心的是另外的一件事情,就是standby 主机是否会在他在从库进行复杂查询的时候,将他的任务终止。要说这个问题还的从 “山上有座庙,庙里的和尚说起”


Hot Standby 是一个参数,是PG里面带有的一个针对复制的参数:

在服务器处于存档恢复或备用模式时连接到服务器并运行只读查询的能力。这对于复制和精确地将备份恢复到所需状态都很有用术语Hot Standby还指在用户继续运行查询和/或保持连接打开时,服务器从恢复到正常运行的能力。当备用服务器上的hot_standby参数设置为true时,恢复使系统处于一致状态时,它将开始接受连接。所有这些连接都是严格只读的甚至不能编写临时表。


在弄清楚HOT STANDBY这个参数后,我们假定这位同学的公司的PG 是需要打开这个参数的,因为要高可用,因为要对于上面深色的文字有一个保障。 以上为这位同学的需求,可能还有他没有提到或想到的。但我们到此为止。


问题一:希望这位同学的公司的要求,从库查询不是数据强一致


备用服务器上的数据需要一些时间才能从主服务器到达,因此在主服务器和备用服务器之间存在可测量的延迟。因此,几乎同时在主服务器和备用服务器上运行相同的查询可能会返回不同的结果。我们说备用系统上的数据最终与主系统一致。事务的提交记录在备用服务器上重播后,该事务所做的更改将对备用服务器上的任何新快照可见。


问题 二:这也是我想提醒这位同学的一个关键的问题,就是你的从库执行的查询可能在某些因素下被牺牲


1)热更新或与真空相关的更新将删除查询期望可见的内容
2)出现b树删除
3)正在运行的查询与要处理更新所需的锁之间存在锁定问题


用人话来说的意思就是  

1)你查询的时候,人家主库那边将你正在查询的内容清除了,你的查询就终止了  

2)索引清除了,你的查询就终止了  

3)你的查询的内容,人家正在UPDATE 产生锁的问题 (这个是数据库中常见的问题)


所以,在不是很清晰他的需求的状态下,如果他不能满足他的应用的基础(因为SQL SERVER的从库是不会有这个问题),以致他的开发团队对他的选择产生质疑,这就不好了,所以任何事情要讲前提,不要说,那个数据库好,那个数据库都很好,只是你的需求适不适合他。 


最后要说的是 锁的情况很难处理,但是如果您只是在备用服务器上运行只读查询,那么在实践中不太可能发生这种情况,因为这些查询将通过MVCC隔离。另外两个并不难遇到。需要理解的基本内容是,主服务器上的任何更新或删除都可能导致备用服务器上的任何查询中断;即使更改与查询正在执行的操作相关,也没有关系。


那问题是,怎么办,任何问题都有妥协的方法


1.调整max_standby_delay 这个参数,对较长的查询进行优化,但代价是保持恢复为当前状态。一旦出现将导致问题(热、真空、B-tree删除等)的更新,将延迟应用到备用服务器。 


当然看似是解决了问题,但你如果纵容长查询的无度,则你面临的就是两边数据的差异化和磁盘空间的损失,所以PG 的磁盘空间没有最大,只有更大,磁盘的容量给足,别吝啬。


2.严格的控制你主库的某些可能造成长时间的事务操作,也会环节你上述的一些问题。


任何的一种数据库的选择都代表,你要忠诚与它的最初的设计初衷,违背他的设计,而强行按自己的来,那他必然还以颜色给它的“主人”。


I Love PG

关于我们

中国开源软件推进联盟PostgreSQL分会(简称:PG分会)于2017年成立,由国内多家PG生态企业所共同发起,业务上接受工信部产业发展研究院指导。PG分会致力于构建PG产业生态,推动PG产学研用发展,是国内的一家PG行业协会组织。



欢迎投稿

做你的舞台,show出自己的才华 。

投稿邮箱:partner@postgresqlchina.com

                               

                                 ——愿能安放你不羁的灵魂


技术文章精彩回顾




PostgreSQL学习的九层宝塔
PostgreSQL职业发展与学习攻略
搞懂PostgreSQL数据库透明数据加密之加密算法介绍
一文读懂PostgreSQL-12分区表
PostgreSQL源码学习之:RegularLock
Postgresql源码学习之词法和语法分析
PostgreSQL buffer管理
最佳实践—PG数据库系统表空间重建
PostgreSQL V12中的流复制配置
2019,年度数据库舍 PostgreSQL 其谁?
PostgreSQL使用分片(sharding)实现水平可扩展性
一文搞懂PostgreSQL物化视图
PostgreSQL原理解析之:PostgreSQL备机是否做checkpoint
PostgreSQL复制技术概述

PG活动精彩回顾




见证精彩|PostgresConf.CN2019大会盛大开幕
PostgresConf.CN2019大会DAY2|三大分论坛,精彩不断
PostgresConf.CN2019培训日|爆满!Training Day现场速递!
「PCC-Training Day」培训日Day2圆满结束,PCC2019完美收官
创建PG全球生态!PostgresConf.CN2019大会盛大召开
首站起航!2019“让PG‘象’前行”上海站成功举行
走进蓉城丨2019“让PG‘象’前行”成都站成功举行
中国PG象牙塔计划发布,首批合作高校授牌仪式在天津举行
PostgreSQL实训基地落户沈阳航空航天大学和渤海大学,高校数据库课改正当时
群英论道聚北京,共话PostgreSQL
相聚巴厘岛| PG Conf.Asia 2019  DAY0、DAY1简报
相知巴厘岛| PG Conf.Asia 2019 DAY2简报
相惜巴厘岛| PG Conf.Asia 2019 DAY3简报
独家|硅谷Postgres大会简报
全球规模最大的PostgreSQL会议等你来!

PG培训认证精彩回顾




关于中国PostgreSQL培训认证,你想知道的都在这里!
首批中国PGCA培训圆满结束,首批认证考试将于10月18日和20日举行!
中国首批PGCA认证考试圆满结束,203位考生成功获得认证!
中国第二批PGCA认证考试圆满结束,115位考生喜获认证!
请查收:中国首批PGCA证书!
重要通知:三方共建,中国PostgreSQL认证权威升级!
一场考试迎新年 | 12月28日,首次PGCE中级认证考试开考!
近500人参与!首次PGCE中级、第三批次PGCA初级认证考试落幕!


最后修改时间:2020-02-11 09:04:54
文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论