自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liuzhilong的博客

作为一个dba,分享数据库知识,总结运维经验~~有时也写写别的

  • 博客(356)
  • 收藏
  • 关注

原创 论文精读|PolarDB-MP|2024 SIGMOD最佳工业论文

PolarDB-MP提出了一种新型多主云原生数据库架构,通过分离式共享内存和共享存储解决现有架构的扩展性问题。传统主从架构受限于主库吞吐,shared-nothing架构面临分布式事务开销,而现有共享存储多主方案存在冲突解决效率低的问题。PolarDB-MP的创新点包括:1) 所有节点平等访问数据,避免分布式事务;2) 基于RDMA的低延迟通信;3) 局部逻辑序列号(LLSN)确保一致性;4) 多主融合服务器(PMFS)实现事务/缓冲/锁融合。实验表明其在50%共享数据场景下,8节点可达7.8倍单节点吞吐。

2025-11-09 22:53:09 597

原创 案例-从distinct不准确到DISTINCT的计算原理

PostgreSQL统计信息中n_distinct值不准确的问题分析:大表默认采样3万行数据可能导致distinct值预估偏低。采样算法基于Haas-Stokes公式,其预估结果与采样中distinct值数量和单次出现值数量直接相关。测试显示,提高采样数量可改善准确性但增加分析时间。解决方案包括临时调整default_statistics_target参数或永久设置列级STATISTICS值(最大10000)。注意列的收集阈值优先级高于全局参数,且表阈值为各列最大阈值。

2025-10-19 10:38:16 414

原创 从静态表查询冲突到其原理

静态表查询冲突分析 摘要:在PostgreSQL主从架构中,静态历史表(无更新)的从库查询仍会遭遇"canceling statement due to conflict with recovery"错误。分析发现这是由于WAL日志中的HEAP2_CLEAN记录(对应页修剪操作)触发冲突所致。关键发现: 即使没有显式VACUUM操作,后台页修剪(PRUNE)也会生成WAL记录 这些记录包含remxid信息,会与从库查询的快照产生冲突 冲突发生在ResolveRecoveryConflic

2025-09-13 09:39:33 937

原创 案例-添加索引性能下降和generic plan

执行计划变化导致性能问题 问题现象:添加created_date索引后,SQL执行时间从3秒骤增至30多秒,导致CPU飙升。 执行计划对比: 加索引前:使用Nested Loop连接,通过task_no索引扫描各分区表,再过滤created_date条件 加索引后:改用Hash Join,直接利用created_date索引扫描所有分区表,导致扫描数据量剧增(rows=114435) 根本原因:优化器选择的新执行计划虽然利用了新增索引,但扫描数据量过大,反而导致性能下降。建议考虑调整查询条件或创建复合索引来

2025-09-13 09:35:15 963

原创 控制文件上的参数和主从参数不一致问题

8个参数在主库被修改并重启后,均会更新本地控制文件,如果参数有变会将改变后的参数写入wal中同步给下游,下游redo这个parameter change wal record,即更新本地的控制文件,从库根据一定条件来判断主从或者其他功能是否可用。

2025-07-29 10:05:09 1077

原创 PostgreSQL DDL变更的坑和巧妙方案

postgresql ddl变更方案和一些技巧,包括秒级停机变更方案

2025-07-19 12:04:27 162

原创 案例-授权和walsender跑不动

PostgreSQL WALSender阻塞问题分析摘要 现象显示WALSender进程LSN未推进,CPU使用率高,堆栈显示阻塞在pathman插件的invalidate_psin_entries_using_relid函数。通过分析发现: WALSender在处理一个大型事务(XID=4285897514),该事务修改了约1.8万条pg_class记录 事务最后生成了大量无效消息(7万catcache和3万relcache) 这些修改主要涉及18523个系统表对象,占pg_class总记录的13% 问题

2025-06-21 10:39:56 896

原创 Linux内存进阶

进一步理解Linux内存,vm、cgroup如何运作和调配,如何监控内存pages的行为,postgresql在运维过程中会遇到什么OS内存问题···

2025-06-19 23:34:21 1076

原创 我的年终总结2024

我似乎每年都在说work-learning balance···由于今年工作量剧增,有段时间甚至都没办法学习了,balance已经被击碎。其实只要周围没人,学习效率就是高的。收集了一下今年我比较认可的话:不要让别人成为那你任务链上的依赖 --heisenberg.liu需要执行力的方案一般都是简单的方案 --heisenberg.liu没有落地的事情等于没有做 --somebody自己去想办法解决问题,而不是等别人回消息 --somebody。

2025-01-11 17:24:16 1615

原创 pg数据库运维经验2024

这篇文章主要是讲pg运维常见问题,两三年见一次的疑难杂症就不说了。主要是技术性运维总结,主打通俗易懂和快速上手,尽量避免源码层面等深入分析。

2025-01-08 21:14:28 1692

原创 PG停库逻辑和walsender阻止停库问题分析

有几种方法可以关闭pg库。在底层,它们都归结为向postmaster进程发送一个信号。signalpg_ctl含义SIGTERM不允许新的连接,但允许现有会话正常结束其工作。只有在所有会话终止后,它才会关闭SIGINT服务器不允许新的连接,并向所有现有的子进程发送SIGTERM,中止当前的事务并迅速退出。等待几乎所有子进程(有几个子进程不需要)退出,最后关闭SIGQUIT将向所有子进程发送SIGQUIT,并等待它们终止。如果在5秒内有子进程没有终止,它们将被发送SIGKILL注意,pg_ctl没有发送。

2025-01-04 13:11:45 1052

原创 PG起库逻辑和spill导致起库慢问题分析

spill文件过多和起库慢分析

2025-01-04 13:03:04 889

原创 读书笔记——DDIA-v2 设计数据密集型应用(第二版)

ddia-v2看完感觉爱不释手,只要是数据相关的知识都娓娓道来,为什么会这样?现在是怎样的?这样有什么问题?其中的看法和想法实在精辟、干练,甚至连每个章节的航海图都很有意思。

2024-09-19 23:14:09 2581

原创 Postgresql CLOG文件及其从库同步解析

放眼所有关系型数据库,PostgreSQL的clog也是很特殊的日志。CLOG的存在跟PG的MVCC机制不无关系

2024-09-03 20:38:47 1493

原创 PostgreSQL案例:planning time超长问题分析

库总是OOM,分析到是执行计划生成有问题,planning time 1秒,planning shared hit 100w。一通分析,定位到是统计信息基表pg_statistic膨胀,由于会话首次SQL执行时的CatCacheMiss,导致backend访问并缓存了pg_statistic过多的死元组数据。应用连接总会启用新会话,多个backend的总内存过大从而导致OOM。

2024-08-21 08:41:34 1603

原创 向量数据库:从0到original paper

向量数据库的基础知识,从0到original paper,解读索引原理

2024-07-27 22:38:25 1176

原创 【PostgreSQL案例】我要查的表没有在执行计划中

【PostgreSQL案例】我要查的表没有在执行计划中

2024-07-25 22:22:26 597

原创 PG在还没有pg_class的时候怎么访问基础系统表?

PG数据库簇的初始化和私有内存的初始化过程中的元数据

2024-07-10 23:08:41 1021 1

原创 vacuum啥时候截断末尾页?

源码级分析,vacuum为什么没有截断末尾页,什么条件下会截断末尾页

2024-06-12 03:04:28 1207

原创 HikariCP连接池初识

不会连接池的DBA不是一个好开发

2024-06-09 19:24:43 1659

原创 案例-insert value偶发慢分析

insert value慢,是内存问题还是IO问题?如何解决?一则案例奉上

2024-05-24 00:36:07 1138

原创 没有阻塞为什么partition of创建子分区很慢?

创建子分区为什么会很慢?应该如何维护postgresql的分区表

2024-05-17 22:49:44 992

原创 案例:逻辑复制把checkpoint、walsender、backup全部卡死

pg数据库复制槽卡死、checkpoint卡死、备份卡死问题分析

2024-04-10 01:04:54 1369

原创 从很慢的唯一索引扫描到索引膨胀

postgres索引膨胀的细节,以及如何解决索引膨胀

2024-04-06 22:51:08 1242

原创 用coze白嫖GPT4和DALLE3

白嫖GPT-4和DALLE-3的方法!

2024-04-02 00:59:36 3212 2

原创 长事务、表膨胀、limit问题的一个经典案例

一个真实案例,巩固长事务、表膨胀,以及limit索引选择问题

2024-04-01 22:28:43 861 5

原创 简评ORACLE/MYSQL/PG的逻辑复制

简评ORACLE/MYSQL/PG的逻辑复制

2024-03-01 21:30:44 1192

原创 案例-pg中的谓词越界和prepare statement问题

pg怎么处理谓词越界?为什么收集统计信息没效果?以真实案例分享pg的优化问题

2024-02-29 21:30:53 1048

原创 PostgreSQL面试题-灿总题

PostgreSQL数据库面试题

2024-02-20 09:50:14 2235

原创 花式分析一个5M的SQL占用70GB内存

从一个SQL导致内存飙升70G,多角度分析PostgreSQL数据库私有内存消耗

2024-01-27 01:02:12 1461

原创 我的年终总结2023

我的2023年度总结,2024再接再厉!

2024-01-16 22:41:48 1023

原创 读书笔记——《未来简史》

《未来简史》读后感

2024-01-15 23:02:20 1766

原创 PostgreSQL内存浅析

PostgreSQL内存结构浅析

2024-01-11 23:15:02 2372 1

原创 linux内存浅析

linux内存概述

2024-01-10 22:06:37 2026

原创 读书笔记——《杀死一只知更鸟》

《杀死一只知更鸟》读后感

2023-12-19 21:58:57 1212

翻译 MEMORY CONTEXT:PostgreSQL的私有内存管理(译)

postgresql特有的内存管理机制memory context

2023-12-04 23:21:39 686

原创 pg truncate

pg truncate命令功能分析

2023-11-28 11:07:32 1593

原创 pg逻辑复制的一些特性

逻辑复制的一些特性,比如replica identity与old/new值,toast的解析等等

2023-11-24 20:24:24 1492

原创 读书笔记——《黑猩猩的政治》

《黑猩猩的政治》读后感

2023-11-23 23:06:18 1032

原创 ORDER BY limit 10比ORDER BY limit 100更慢

pg数据库中执行sql时,ORDER BY limit 10比ORDER BY limit 100更慢,分析执行计划是如何选择的

2023-11-13 22:15:04 704

事务的历史与SSI-PostgreSQL数据库技术峰会成都站分享

事务的历史与SSI——PostgreSQL数据库技术峰会成都站分享。全篇分享分为4个部分:事务的基础、事务的历史、SSI理论知识、PostgresSQL中的SSI。分享内容的主要思路是从事务的历史推进到一些92标准中不存在的异象,再到消灭这些异象可以怎么做,再到pg库中的SSI是怎么做的。

2023-06-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除