- 博客(7)
- 收藏
- 关注
原创 【postgresql案例一】一个LIMIT引发的“血案”
之前给业务排查的时候发现,业务上存在大量的全量查询,其中很多信息都是无用的,采用全量查询存在以下几个方面问题:查询数据量大,导致发送时间长,在数据库中经常看到慢查询日志,经常需要分析当前业务采用sqlachemly方式操作数据库,数据量大的时候,经常出现python接收慢,并且占用大量内存的情况,之前出现过大并发下全量查询导致客户端卡死的情况根据经验,提出了加上LIMIT的方法,限制每次查询返回的...
2018-04-30 11:51:37 3055 2
原创 【pg_rman】备份GIN索引bug
最近有业务反应,每次使用pg_rman备份恢复之后,过段时间数据库会停止失败。当时查看进程相关信息,发现有个对GIN索引的自动清理进程挂死,怀疑和IN索引有关。如是做了如下测试,发现为pg_rman备份恢复GIN索引文件存在bug导致。测试版本:PG9.2.21 和pg_rman1.3测试步骤如下:1、建立表和索引postgres@X86U149:~
2017-06-25 10:29:07 615
原创 【Postgresql源码分析之五】主备热备代码分析--Walsender进程(一)
PG中的主备复制通过两个进程实现的,主机通过walsender进程发送xlog日志,备机通过walreciver进程接收xlog日志并进行redo恢复操作。
2016-08-06 22:21:15 2431
原创 【Postgresql源码分析之四】同步复制源码分析--支持多个同步备机
前面介绍了,在PG9.6之前的同步复制的代码实现过程。我们知道,在前面判断是否取消等待的时候,只管理一个同步备机(优先级最高),其它的备机均为潜在同步备机,这样会降低可靠性。在PG9.6版本中,对同步复制做了增强,支持多个同步备机。支持多个同步备机说明首先看下,releasenotes中关于多个同步备机的说明 Support synchronous replication
2016-07-27 21:22:36 969
原创 【Postgresql源码分析之三】同步复制源码分析
前面介绍了,在开启同步复制模式后,进程在主机上提交事物之后,需要等待同步备机的响应(确保备机已经接收到这条xlog日志),主要是在函数SyncRepWaitForLSN中等待同步状态的更新(由SYNC_REP_WAITING变为SYNC_REP_WAIT_COMPLETE)。下面介绍状态更新的过程,即主机如何感知到等待的xlog日志发送到备机。我们知道,在建立正常的流复制关系之后,备机
2016-07-27 19:59:08 768
原创 【Postgresql源码分析之二】同步复制源码分析
前面说明了pg中同步复制的设置方法,主要是设置参数synchronous_commit和synchronous_standby_names,下面介绍同步复制的代码实现流程(这里先介绍PG9.6之前的同步复制方式,即只支持一个同步备机)。 同步复制的源代码在pg中的位置为src/backend/replication/syncrep.c,该程序中包含的函数主要分为三部分: 提
2016-07-24 15:20:31 1056
原创 【Postgresql源码分析之一】主备同步复制介绍
postgresql主备热备postgresql支持主机和备机以及级联之间的热备,即通过先进行一次基础备份,让其拥有相同的基础数据,然后通过传输XLOG日志的方式,在备机或者级联备机上REDO模拟主机上的操作,保证他们之间数据的一致性。目前热备传输方式有下面两种;异步复制(async):主机上产生xlog日志,只需要将该xlog日志发送给备机就返回给客户端结果,不关心备机是否接收到该日志
2016-07-24 14:22:28 1193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人