首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
PostgreSQL
Foucus
创建于2022-03-23
订阅专栏
PostgreSQL技术学习研究
等 6 人订阅
共142篇文章
创建于2022-03-23
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
PostgreSQL t_bits计算方法
在PostgreSQL的page头部使用t_bits来表示null值的列。 之前看的时候以为其长度就是8个bit位,用1个字节来存储。可以看到t_bits总共72位,前两位为1刚好表示c1和c2列不为空。仔细观察发现,t_bits[FLEXIBLE_ARRAY_MEMBER]其实...
PostgreSQL自定义函数实现十六进制转十进制
HINT: No function matches the given name and argument types. You might need to add explicit type casts.参考链接: https://stackoverflow.
PostgreSQL中wal日志具备幂等性吗?
最近在看《The Internals of PostgreSQL》这本书时发现这样一段话: In short, the redo (replay) operation of non-backup block is not idempotent. Therefore, to pre...
PostgreSQL如何获取系统视图/函数对应的源码
我们在使用PostgreSQL的时候可能经常会碰到这样的情况,对于某个系统视图的某个字段不知道是干啥的,看了官方文档后也一脸懵逼,不知道是啥意思。 这个时候如果我们可以看到该视图或者该字段对应的源码,那么想要理解起来就会方便多了。tup_returned:这个数据库中查询返回的行...
PostgreSQL存储过程中事务与捕获异常的问题
PostgreSQL11开始支持了存储过程的写法,同时也允许了在存储过程中嵌入事务。今天刚好碰到一个相关的问题。FOR i IN 0..FOR i IN 0..竟然上面的循环部分全部跳过了,直接执行了异常捕获部分的语句。通过对比我们发现,关键在于异常捕获的对象名称。Breakpo...
VSCode调试PostgreSQL配置
昨天折腾了很久才配置好,这里简单记录下。打开lauch.json 菜单 View -> Command Palette,输入launch,选择 Debug: Open launch.选择 C++ (GDB/LLDB) 编辑 launch."version": "0.2."vers...
PostgreSQL子查询别名改造(兼容Oracle)
在PostgreSQL中子查询必须得加上别名,即使我们在其它地方不会再引用到这个别名。 HINT: For example, FROM (SELECT ...) [AS] foo.首先需要知道,我们输入的SQL语句是作为字符串传递给查询分析器,然后数据库对其进行词法分析和语法分析...
PostgreSQL pg_dropcache修改(兼容pg13)
pg_dropcache可以用来清空shared_buffer,但由于pg多版本的特性,脏页也会直接drop, 所以可能会导致数据不一致,所以不建议在生产环境随便使用。不过有的时候我们做一些测试的时候可能需要清空缓存,那倒是可以用pg_dropcache来试试。但是比较可惜,这个...
PostgreSQL 从HOT到PHOT
PostgreSQL中,由于其多版本的特性,当我们进行数据更新时,实际上并不是直接修改元数据,而是通过新插入一行数据来进行间接的更新。而当表上存在索引时,由于新插入了数据,那么索引必然也需要同步进行更新,这在索引较多的情况下,对于更新的性能影响必然很大。为了解决这一问题,pg从8...
PostgreSQL为什么index only scan不返回ctid
我们都知道在PostgreSQL中使用索引扫描时,是通过索引中存储的ctid去表中得到数据的。同时在PostgreSQL中如果要查询的列都在索引中,我们还可以使用index only scan。我们的查询包含了rowid,仍然不需要回表TABLE ACCESS BY INDEX ...
PostgreSQL 一则索引失效案例引发的思考
Seq Scan on t1 (cost=0.00..25.Bitmap Heap Scan on t1 (cost=1.50..7.-> Bitmap Index Scan on idx_t1 (cost=0.00..1.很显然的问题就是,我在事务中创建了索引,却没办法使用。从...
PostgreSQL 为什么vacuum空表却无法回收空间?
在PostgreSQL的表的空间管理中,有种类似Oracle “高水位”的概念。即如果一张表尾部的page为空,那么可以通过vacuum去回收这部分的空间。因为在PostgreSQL中索引指向的是每行数据的ctid,这个是物理地址,假如我们删除page中在最前面的数据,这个时候如...
PostgreSQL 神奇的limit
下面我们就从这条SQL开始说起。Table "public.并且info列是没有重复值的,这意味着无论where条件中传入什么变量都肯定是能走索引扫描的。Limit (cost=0.56..3.18 rows=1 width=45) (actual time=0.027..0.-...
PostgreSQL分析日志连接数
某些时候碰到一些诸如连接风暴之类的问题时,如果数据库没有做相关的监控,我们可以通过分析日志获取连接的情况。egrep ‘^2022-02-09’ postgresql-02-09.egrep ‘^2022-02-09 18:’ postgresql-02-09.egrep ‘^2...
PostgreSQL误删pg_filenode.map怎么办
今天在网上看到有人问误删pg_filenode.map该如何恢复或者重建,解决这个问题前我们先来了解下pg_filenode.map文件。对于PostgreSQL中的每张表在磁盘上都有与之相关的文件,而这些文件的名字便是relfilenode,我们可以通过pg_class的rel...
长事务与失效的索引查询
最近刚写了一篇文章介绍了下长事务,以及一些长事务常见的危害,如无法及时的垃圾回收导致表膨胀之类的问题,最近刚好又碰到一个问题也是长事务所导致的。上周六早上接到同事电话,说某个库CPU一直很高,看了下全是某张大表的全表扫描导致,但是奇怪的是相关的查询都有用到索引列,不知道为啥查询全...
PostgreSQL什么才算是长事务
我们在很多地方应该都听到过长事务的危害,比方说长事务会导致表膨胀之类的。为了搞清楚这个问题,我们不妨想想,为什么我们会提到长事务呢。这是因为pg中的长事务会影响表中垃圾回收,会导致表的年龄增长无法freeze。backend_start | 2022-03-02 11:49:49...
PostgreSQL常用SQL优化技巧
PostgreSQL的SQL优化技巧其实和大多数使用CBO优化器的数据库类似,因此一些常用的SQL优化改写技巧在PostgreSQL也是能够使用的。当然也会有一些不同的地方,今天我们来看看一些在PostgreSQL常用的SQL优化改写技巧。当一个查询在select和from之间,...
坑爹的标量子查询
最近碰到一个奇葩的SQL,执行计划里cost显示1.-> string_agg(lsd4.-> lsd3.-> lsd3.-> lsd3.sampleinfo_id = lsi.-> AND lsd3.-> lsd3.-> lsd3.-> lsi.-> lsi.-> aa.-> ...
PostgreSQL什么才算是长事务
本文已参与「新人创作礼」活动,一起开启掘金创作之路 我们在很多地方应该都听到过长事务的危害,比方说长事务会导致表膨胀之类的。那么在PostgreSQL中什么才算是长事务呢? 首先,在Postgre
下一页