强人随笔PostgreSQL:支持故障转移的复制槽

逻辑解码和逻辑复制在PostgreSQL生态中受到了越来越多的关注。这意味着我们需要它与生产HA系统一起很好地工作——但事实证明这存在一个问题。复制槽并没有被同步到备机上,因此主机一旦发生故障,备机升主后,原来的复制槽将不能继续使用。

wangliyun 发布于 2020-12-01 08:00:21
评论:0   浏览:64

强人随笔PostgreSQL与透明压缩

数据库是现代信息管理系统的核心。它是由一批数据组成的有序集合,能有效地存储和查找数据,常见的操作包括增、删、改、查等等。 通常情况下,数据库中一般都使用了log机制来提升写入的效率。写入数据库的数据,先固化在log中,在之后的某个时间再搬移至真正有序存储数据的地方。每个数据库都有自己的存储数据的机制,常用的包括基于B+树的结构【1】以及基于LSM(log structure merge)树的结构【2】,如图1所示。

wangliyun 发布于 2020-11-27 08:00:18
评论:0   浏览:112

强人随笔使用PostgreSQL的新System_stats扩展监控系统活动

ystem_stats扩展是一个存储过程库,允许用户访问用于监控Postgres活动的系统级统计信息。这些过程向数据库服务器显示各种系统度量。 通过使用system stats,可以在数据库监控过程中查看有关系统性能的信息,而无需添加单独的第三方应用程序。EDB已将该扩展开源,并根据PostgreSQL许可证发布了该扩展。

wangliyun 发布于 2020-11-24 08:00:38
评论:0   浏览:121

强人随笔PostgreSQL 并发控制机制(4): RR隔离级别,MySQL vs PostgreSQL

并发控制是多个事务在并发运行时,数据库保证事务一致性(Consistency)和隔离性(Isolation)的一种机制。主流商用关系数据库使用的并发控制技术主要有三种:严格两阶段封锁(S2PL)、多版本并发控制(MVCC)和乐观并发控制(OCC)。本文是PostgreSQL并发控制的第4篇,介绍了在RR(Repeatable Read,可重复读)隔离级别下MySQL和PostgreSQL的异同。

wangliyun 发布于 2020-11-21 08:00:03
评论:0   浏览:217

强人随笔PostgreSQL中的冻结管理

PostgreSQL包含一个变化的事件范围,它实际上在当前事务id之前或之后大约20亿个事务。当前事务id前面超过20亿或后面超过20亿的事务被认为是未来的事务,因此对当前事务是不可见的。 PostgreSQL通过特殊地标记旧行来避免这种灾难性的数据丢失,这样无论它们与当前事务id处于什么位置,它们都是可见的。 Freezing冻结是对旧的活元组(即数据库行)进行标记的过程,这样它们就不会被变化的事件范围覆盖,否则它们就会在未来出现。这与vacuum相反,vacuum指的是释放那些已死的元组所占用的空间,这些元组对任何事务都不再可见。

wangliyun 发布于 2020-11-13 10:35:31
评论:0   浏览:203

强人随笔如何将PostgreSQL的WAL日志记录到Kafka?

一年前,我曾经发文介绍过PostgreSQL的Decoding工具wal2json。其目的在于将PG的WAL中的改变记录(主要指DML涉及的数据变更信息)转化为可读信息,提供给运维人员做后续数据的处理。文章中虽提及Debezium项目,但并没有介绍Debezium项目实践的内容。 Debezium是基于Apache Kafka 项目建立,并为 Kafka Connect 提供兼容性插件,用于管理数据库系统,将数据库日志中的事件记录转化为事件流,并将这些改变的事件流记录到Kafka中。当应用(数据库)出现不可期的异常中断时,作为数据的消费者扔可以借用kafka记录的改变事件流对数据进行准确和完整的数据处理。

wangliyun 发布于 2020-10-30 08:00:00
评论:1   浏览:659

强人随笔PgSQL · 特性分析 · 内存管理机制

为了提高数据访问的速度,一般数据库操作系统都会引入内存作为缓存,而为了方便管理和合并I/O,一般会开辟一个缓存池(buffer pool)。本文主要讲述PostgreSQL 如何进行缓存池管理。

wangliyun 发布于 2020-10-13 08:00:00
评论:0   浏览:595

强人随笔PostgreSQL 并发控制机制(3): 基于时间戳的并发控制

并发控制是多个事务在并发运行时,数据库保证事务一致性(Consistency)和隔离性(Isolation)的一种机制。主流商用关系数据库使用的并发控制技术主要有三种:严格两阶段封锁(S2PL)、多版本并发控制(MVCC)和乐观并发控制(OCC)。

wangliyun 发布于 2020-09-29 08:00:00
评论:0   浏览:2931

强人随笔你正确的GET到了CPU使用率了吗?

经历过小型机时代的运维人员都有一个感觉,好像是小型机上的CPU更经用一些,特别是IBM的小型机。哪怕是CPU使用率达到100%,系统好像还不感觉太慢。而在LINUX上就不同了,CPU使用率高了确实系统就立马变慢了,甚至不用达到100%,系统就慢的可以了。记得十多年前,一个客户为了图便宜,买了一批P5 的P595,系统刚上线,很快CPU使用率就100%了,虽然系统并没感觉慢,不过网管系统整天发告警也是受不了。于是我建议他们不再关注CPU使用率,而是关注r队列的长度,如果r队列的长度达到CPU核数的3倍,才开始报警,当r队列长度超过CPU核数的4倍的时候,系统才开始感觉有些慢。

wangliyun 发布于 2020-09-24 08:00:00
评论:0   浏览:568

强人随笔PgSQL · 应用案例 · 任意字段组合查询

《PostgreSQL 设计优化case - 大宽表任意字段组合查询索引如何选择(btree, gin, rum) - (含单个索引列数超过32列的方法)》 https://github.com/digoal/blog/blob/master/201808/20180803_01.md 《PostgreSQL 任意字段数组合 AND\OR 条件,指定返回结果条数,构造测试数据算法举例》 https://github.com/digoal/blog/blob/master/201809/20180905_03.md 《PostgreSQL ADHoc(任意字段组合)查询(rums索引加速) - 非字典化,普通、数组等组合字段生成新数组》

wangliyun 发布于 2020-09-17 08:00:00
评论:0   浏览:558

强人随笔PostgreSQL并发控制机制(2): 表级锁和行级锁

并发控制是多个事务在并发运行时,数据库保证事务一致性(Consistency)和隔离性(Isolation)的一种机制。主流商用关系数据库使用的并发控制技术主要有三种:严格两阶段封锁(S2PL)、多版本并发控制(MVCC)和乐观并发控制(OCC)。

wangliyun 发布于 2020-09-16 08:00:00
评论:0   浏览:680

强人随笔PgSQL · 应用案例 · PostgreSQL KPI 预测例子

背景 预测营收目标,预测KPI风险。使用PostgreSQL二维线性回归,更高级一点可以使用MADLIB多维线性回归。 预测方法: 例如有最近连续4周的营收数据,预测第一季度,第二季度,第三季度,第四季度的营收。 例如设定了财年的营收目标,有最近连续四周的营收完成比率,预测第一季度,第二季度,第三季度,第四季度的营收完成率。

wangliyun 发布于 2020-09-10 08:00:00
评论:0   浏览:622

强人随笔PostgreSQL 逻辑复制异常引发Pg_wal目录膨胀一例

前几天一位社区朋友咨询一个PostgreSQL的WAL文件膨胀案例,有个生产库最近几天pg_wal目录的WAL文件爆涨到了7万多个,把硬盘空间撑满,造成数据库故障。 为了快速恢复,这位朋友删除了pg_wal目录下10天前的WAL文件,将硬盘空间使用率降下来,使得数据库恢复,但pg_wal目录下的WAL文件依然涨得很快

wangliyun 发布于 2020-09-08 08:00:00
评论:1   浏览:745

强人随笔PostgreSQL并发控制机制(1):隔离级别

并发控制是多个事务在并发运行时,数据库保证事务一致性(Consistency)和隔离性(Isolation)的一种机制。主流商用关系数据库使用的并发控制技术主要有三种:严格两阶段封锁(S2PL)、多版本并发控制(MVCC)和乐观并发控制(OCC)。 PostgreSQL使用了多版本并发控制技术的一种变体:快照隔离Sanpshot Isolation(简称SI)。通过SI,PostgreSQL提供了四个事务隔离级别,但实现与ANSI SQL标准有一些差异。

wangliyun 发布于 2020-09-05 08:00:00
评论:0   浏览:640

强人随笔PostgreSQL 逻辑复制数据不一致,导致主库wal log 无限增大

PostgreSQL heap TABLE AM引擎,使用多版本来解决快照问题,版本处于当前数据文件中,有垃圾回收进程进行回收,那么哪些垃圾不能被回收呢? WAL是PG的REDO文件,哪些WAL不能被回收重复利用?什么情况下可能会一直增长不清理呢?

wangliyun 发布于 2020-09-02 08:00:00
评论:0   浏览:598

强人随笔PgSQL · 应用案例 · 什么情况下可能表膨胀

背景 PostgreSQL heap TABLE AM引擎,使用多版本来解决快照问题,版本处于当前数据文件中,有垃圾回收进程进行回收,那么哪些垃圾不能被回收呢? WAL是PG的REDO文件,哪些WAL不能被回收重复利用?什么情况下可能会一直增长不清理呢? heap或INDEX的膨胀有些时候并不是因为回收慢,而是有些是无法被回收的垃圾,通常被称为膨胀点。本文对膨胀点进行逐一解释(回收慢不解释,可能: worker太少,io太差,worker睡眠太长或频繁,vacuum mem太少放不下所有垃圾行CTID导致多次扫描索引,launcher唤醒周期太长,表太大未支持并行垃圾回收, …)。 除了snapshot too old以外,12新增AM例如zedstore, zheap将彻底解决heap的垃圾版本带来的膨胀问题。

wangliyun 发布于 2020-09-01 08:00:00
评论:0   浏览:492

强人随笔PostgreSQL关系膨胀:原理,监控与处理

PostgreSQL使用了MVCC作为主要并发控制技术,它有很多好处,但也会带来一些其他的影响,例如关系膨胀。关系(表与索引)膨胀会对数据库性能产生负面影响,并浪费磁盘空间。为了使PostgreSQL始终保持在最佳性能,有必要及时对膨胀的关系进行垃圾回收,并定期重建过度膨胀的关系。

wangliyun 发布于 2020-08-29 08:00:00
评论:0   浏览:526

强人随笔PgSQL · 应用案例 · 如何修改PostgreSQL分区表分区范围

已有分区表,修改分区的范围。 例如拆分分区,合并分区。 语法如下,PG支持非常灵活的分区布局,看本文提到的HASH分区拆分,支持任意层级的分区,支持每个分区的层级深度不一样。特别适合某些数据分布不均匀的情况。例如id=1落在同一个分区但是数据量非常庞大,可以对这个分区再进行二级分区(使用其他分区方法,其他字段都可以,非常灵活)。

wangliyun 发布于 2020-08-27 08:00:00
评论:0   浏览:744

强人随笔PgSQL · 最佳实践 · pg_cron 内核分析及用法简介

pg_cron 是 PostgreSQL(9.5或更高版本)的一个简单的基于cron的作业调度程序,它作为扩展在数据库中运行。它与常规 cron 保持相同的语法,但它允许直接从数据库安排 PostgreSQL 命令。作为一个独立运行的工作者进程,其生命周期管理、内存空间都依赖于 postgreSQL 。本文主要从启动、生命周期、状态机、用法介绍该插件在 postgresQL 数据库中的应用。

wangliyun 发布于 2020-08-26 08:00:00
评论:0   浏览:456

强人随笔PostgreSQL 中 Pgbouncer 能用后,问自己5个问题

知识的学习是越学越不会,越学发现的"黑洞"和自己的欠缺就会越多,所以一直报以心虚的状态来学,可能理解多年的东西他变化了,或者当初就没有理解的彻底,而不自知. Pgbouncer 看似是一个轻量级的连接缓冲,今天就来整理一下,来看看知识的黑洞

wangliyun 发布于 2020-08-25 08:00:00
评论:1   浏览:541
© 2010 PostgreSQL中文社区