当心 Invalid Index,可能会导致 SQL 突然报错
一例由 invalid 索引引发的诡异 UPDATE 报错,从 _ccnew 索引到悬空 CTID 的完整排查。
pg_stat_statements 重大 BUG:内存泄露
> 分享一个 pg_stat_statements 内存泄露案例,尽快升级版本吧。## 问题现象一个 idle 的进程占用内存 80G,并且在持续缓慢上涨,疑似内存泄露。```bashps -eo pid,user,rss,vsz,etime,cmd --sort=-rss | grep postgres | head -3 PID USER &nbs
pg_stat_backtrace:让stack抓取更easy
老杨用AI做了一个玩具,可以随时随地通过SQL打印PG进程堆栈或记录至日志。分享给大家。背景介绍先看下这几个场景:这个后端 state=active、wait_event=NULL、CPU 100% 跑了 30 分钟 — 它到底在干嘛?逻辑复制 apply worker 不再推进 — 是卡在 apply_handle_insert、触发器、还是 heap_update?autovacuum wor
使用codebuddy将pg_hint_plan性能提升20%
给大家分享一个使用codebuddy优化PostgreSQL内核的实践案例。背景在PCC2024大会主题分享《pg_hint_plan技术内幕》中,我曾预留了一个对于hint_table的优化点。简单回顾下hint_table:hint_table主要的功能是根据queryid将对应的hint文本记录在专用table中,这样就不用将hint显式加入sql文本了,也就是不用业务改sql了。当sql执
data corruption分析与处理
又一起data corruption,借此案例梳理下分析及处理过程。
错误结果?警惕mysql_fdw数据黑洞
记录一起mysql_fdw bug,同样的sql通过mysql_fdw远程查询,和本地查询mysql数据库结果是不同的。MySQL_fdw简介mysql_fdw是PG的扩展,提供了 MySQL 服务器和 PostgreSQL数据库之间的接口。它将 PostgreSQL语句 ( SELECT/ INSERT/ DELETE/ UPDATE) 转换为 MySQL 数据库可以理解的查询。添加图片注释,不
pgstattuple源码探究
本篇来自少辉,利用空闲时间深入研究pgstattuple,给年轻优秀的DBA点赞。一、pgstattuple介绍pgstattuple 是 PostgreSQL 数据库的一个官方扩展模块,核心作用是统计表、索引或指定表分区的详细存储信息与元组(行)状态,帮助数据库管理员(DBA)分析表膨胀、索引健康度、存储效率等问题,为性能优化(如 VACUUM、REINDEX)和存储规划提供数据支撑。官方文档说
OpenTenBase V5尝鲜记:让数据库"学会"思考
本篇我们简单体验下OpenTenBase-V5, V5主打Oracle兼容性,不过老杨这次不打算验证这里。主要围绕编译安装集中式以及opentenbase_ai扩展测试。
为IvorySQL增添PACKAGE语法帮助
IvorySQL开源社区最近有“IvorySQL & PostgreSQL 迁移实战经验征集”活动。老杨也想凑凑热闹,翻开IvorySQL文档看到了Oracle兼容性中PACKAGE章节,突然想到是否对psql支持了\h create package查看语法 ,我经常通过\h command查看对应的语法,这样不用死记sql语法,也懒得去官方文档搜索。发现并没适配create packag
openHalo兼容mysql原理和实践
最近老杨体验了多个基于PG的开源数据库,对于有鲜明特点的开源产品总会抽时间上手把玩下。本期我们来看看openHalo,在同一个实例中PG和MySQL一起玩,挺有意思的。
AI4DB - Learned Based Optimizer实践
老杨最近利用空闲时间研究了几篇Learned Based Optimizer相关论文。第一感触就是好多都是Kpi工程,代码质量和风格一言难尽,感觉就是发了paper后就不管了,没有任何维护痕迹... 我找了两个自己感兴趣的方案:Bao和Balsa,并都适配到了PG18,本篇主要讲讲适配过程以及对AI4DB的一点愚见。
优化器缺陷:order by + limit为何变慢
有的时候,优化器显得很“白痴”,非得走一个性能很差劲的计划,这就是代价预估偏差导致的。 这次举例的case,就是优化器假设数据均匀分布,再加limit算子线性计算cost导致的预估偏差。
一条SQL引发的惨案,内存耗尽?
本篇简单介绍了高内存问题的分析方法,当遇到内存消耗高问题时,先打印MemoryContext分布,再结合perf等工具进行分析。
Toast是insert性能杀手?
本篇我们分析了又一起OidGen等待事件,本次的场景是toast数据条目多导致insert插入慢。设计表时要合理,不要在一个表上整太多变长大字段,如果是业务实际需求可以拆分到多个表。
执行计划跑偏,你了解背后的根因吗?
还在以最终cost来判断计划是否最优?那就大错特错了!!!本篇老杨和大家一起抽丝剥茧,从源码入手分析计划跑偏的原因。
IndexScan比SeqScan返回的结果更少,索引损坏?
给大家分享一个有趣的案例,同一个sql,索引扫描比全表顺序扫描获取的数据更少。本篇我们深入分析一起索引排序规则损坏的案例,并debug验证索引扫描的主要过程。
pg_terminate_backend()运维改造--打印调用记录及被终止query文本
修改pg_terminate_backend()函数,支持调用记录及被终止query文本