Recent Posts

PostgreSQL relcache在长连接应用中的内存霸占坑

3 minute read

背景 阿里巴巴内部的某业务在使用阿里云RDS PG时,业务线细心的DBA发现,一些长连接占据了大量的内存没有释放。后来找到了复现的方法。使用场景有些极端。 有阿里巴巴内部业务这样的老湿机陪伴的RDS PG,是很靠谱的。 PostgreSQL 缓存 除了常见的执行计划缓存、数据缓存,PostgreSQL为了提高...

PostgreSQL 内核扩展之 - 管理十亿级3D扫描数据(基于Lidar产生的point cloud数据)

7 minute read

背景 背景知识 还记得成龙演的那部《十二生肖》里用3D扫描和打印技术复制的生肖吗? 3D打印是近几年兴起的一种技术,除了存储 物体表面的位置信息,还有颜色,密度等信息 。 而3D扫描其实在军用领域很早以前就有了。 如果使用普通的数据库来存储,得把这些属性拆开来存。 而在PostgreSQL中,你完全不...

找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南

1 minute read

背景 通用数据库就像带装修的房子一样,如果按数据库的功能划分,可以分为豪华装修、精装、简装。 PostgreSQL从SQL兼容性、功能、性能、稳定性等方面综合评价的话,绝对算得上豪华装修级别的,用户拎包入住就可以。 不过通用的毕竟是通用的,如果G点不对的话,再豪华的装修你也爽不起来,这是很多通用数据库的弊病,...

为什么用 PostgreSQL 绑定变量 没有 Oracle pin S 等待问题

1 minute read

背景 早上看到盖国强老师在朋友圈里分享了一篇关于软解析带来的Pin S等待的问题。 有感而发,跟大家聊一聊为什么PostgreSQL不存在这个问题。 Oracle 在Oracle中多个会话高并发的执行同一条SQL,如果使用了绑定变量的话,会产生pin s的等待事件。 原因如下(取自互联网http://www...

PostgreSQL plan cache 源码浅析 - 如何确保不会计划倾斜

3 minute read

背景 早上写了一篇文章《为什么用 PostgreSQL 绑定变量 没有 Oracle pin S 等待问题》,可以看到PostgreSQL为开发人员着想的,设计得非常人性化。 https://yq.aliyun.com/articles/55698 同时也收到了一些朋友发来的问题,有朋友问我PostgreSQ...

PostgreSQL 同步流复制原理和代码浅析

4 minute read

背景 数据库ACID中的持久化如何实现 数据库ACID里面的D,持久化。 指的是对于用户来说提交的事务,数据是可靠的,即使数据库crash了,在硬件完好的情况下,也能恢复回来。 PostgreSQL是怎么做到的呢,看一幅图,画得比较丑,凑合看吧。 假设一个事务,对数据库做了一些操作,并且产生了一些脏数据,首...