PostgreSQL逻辑复制详解


什么是逻辑复制 我们前面讲的都是基于物理的流复制,接下来我们来讲讲逻辑复制。pg 逻辑复制基于逻辑解析,将 wal 日志流解析成一定格式输出,从节点收到解析后的数据进行应用。 逻辑复制基于发布(Publisher)与订阅(Subscription)模型。 一个发布者可以有多个发布,一个订阅者上可以有

PostgreSQL物理复制槽


前言 相信大家学到这里,基础肯定很不错了。我们知道 wal 文件默认是 16M,wal_keep_size 默认是 0 ,表示不存放额外的 wal 日志,max_wal_size 表示 wal 目录的大小,如果超过了这个大小,有设置了归档的情况下,则会移动到归档目录里。在老版本里面这个参数是wal_

手工操作之主备切换和故障转移


手工主备切换 对于 Oracle 数据库的 DBA 来说,切换 Oracle 数据库主备库之间的角色过程叫作“switchover”,Oracle 提供了相应的“switchover”的一些较为复杂的命令和过程,对于 Postgresql 来说,切换操作的步骤毕竟简单。只需要以下几步操作: 停主库,

PostgreSQL流复制介绍


流复制介绍 什么是流复制? 如果有人问你PostgreSQL的流复制究竟是什么?你大概会说通过wal日志来进行数据同步之类的,的确如此,流复制大概就是这么回事。 但是准确的来说:PostgreSQL通过wal日志来传送的方式有两种:基于文件的日志传送和流复制。 不同于基于文件的日志传送,流复制的关键

PostgreSQL 16 in docker 配置流复制


前面学完了理论知识,今天我们来实战学习下怎么配置这个流复制。为什么采用 docker 进行实验呢,原因很简单,非常方便。 #先设置目录 mkdir -p /data/postgres-replication mkdir -p /data/postgres-replication/postgres-0

排查PostgreSQL无法回收死元组的原因


早上巡查时发现一张业务大表死元组占比高达 60%,autovacuum 早上也才刚刚执行过。第一反应近期有大量数据被删除,问了业务也是如此,那也不应该有那么多没被回收,还有另一种想法就是 autovacuum 虽然执行了,但是没有执行成功,这个时候看下日志是最好的,但是没有权限登录数据库服务器。只能

Oracle逻辑体系知识

Oracle 

Oracle逻辑体系 上回我们主要是了解oracle的物理体系,我们可以清楚地看到数据文件,参数文件,控制文件等等文件的大小和存放位置,后台进程是如何被唤起而又任何退出的。 接下来我们来说说逻辑体系,偏抽象一点,不过这部分是重中之重,可以加深我们对体系的理解。

揭秘行数据是怎么存储的

Oracle 

数据如何在底层进行存储 每个表都有一个段头,段头里记录了哪些文件哪些 BLOCK 属于该表。我们可以通过以下 SQL 进行查询: select HEADER_FILE,HEADER_BLOCK from dba_segments where segment_name='TB0101'; HEADE

估算一张表的执行时间和IO计算和表大小

Oracle 

前言 本专栏分为四大部分: SQL 语句的执行时间和逻辑读是可以结合原理计算和预估出来的。 极速优化 SQL-在不懂业务的情况下用过技术手段结合原理快速分析和优化 SQL SQL 效率异常分析-分析为什么 SQL 时快时慢或者为什么没有走预期的执行计划 SQL 改写优化-对常见必须要 SQL 改写的

解析ROWID

Oracle 

我们通过学习知道,rowid 是存放行在磁盘上的具体位置,格式如下 AAAVU/AAHAAAACVAAA。 本章内容我们来揭秘下 rowid。 通过 rowid 去寻找数据是最快的,因为我都把物理位置告诉 oracle 了,oracle 只需要一次 IO 就能找到该数据。 那么 rowid 在块中是