Recent Posts

cgroup 术语和规则

1 minute read

背景 cgroup是Linux下用于隔离或管理资源使用的手段。 Redhat有比较详细的介绍。 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/sec...

PostgreSQL wal receiver 统计信息 patch

4 minute read

背景 之前写过一篇文档,关于如何编写一个C函数,在PostgreSQL hot standby中获取wal receiver的统计信息,以及上游节点的连接信息(conninfo)。 http://blog.163.com/digoal@126/blog/static/1638770402015744524871...

PostgreSQL Oracle 兼容性之 - WM_SYS.WM_CONCAT

less than 1 minute read

背景 先吐槽一下Oracle的wm_sys.wm_concat这个函数,为什么只能支持逗号分隔符呢?太老土了。 PostgreSQL的string_agg就做得比较只能,可以使用任意字符串作为分隔符。 Oracle行转列函数WMSYS.WM_CONCAT的使用实例demo select * from it...

EnterpriseDB & PostgreSQL RLS & Oracle VPD

3 minute read

背景 PostgreSQL 9.5的RLS用法请参照 《PostgreSQL 行安全策略 - PostgreSQL 9.5 new feature - can define row security policy for table》 EnterpriseDB的RLS用法略有差别,因为EDB主要为Oracle...

PostgreSQL Oracle 兼容性之 - 函数 自治事务 的写法和实现

4 minute read

背景 使用Oracle的用户,在函数中如果使用了自治事务的话,如果要转到PostgreSQL会遇到很棘手的问题。 因为PostgreSQL的函数是作为一个事务来处理的,要么全部提交,要么全部回滚, 除了exception,每个exception是一个子事务。 因此使用exception可以达到自治事务的目的...

PostgreSQL SQL HINT的使用(pg_hint_plan)

5 minute read

背景 PostgreSQL优化器是基于成本的 (CBO) , (当然, 如果开启了GEQO的话, 在关联表数量超过一定阈值后, 会采用GEQO, 这主要是因为在关联表太多的情况下, 穷举法可能带来巨大的PLAN开销, 所以GEQO输出的执行计划不一定是最优的) 本文要谈的和GEQO没什么关系, 主要和CBO相关...

PostgreSQL 子事务 id & command id 溢出问题分析

4 minute read

背景 PostgreSQL 需要为每个savepoint或者函数的exception section分配子事务号,递增。 即使这个exception没有被触发,也需要一个子事务号。 PushTransaction @ src/backend/access/transam/xact.c /* ...

Linux OS 系统信息采集列表

5 minute read

背景 bug或可以改进的点 crontab 取的数据不对,只取了ROOT用户的。 dmesg,processes和messages没有取到数据。 numainfo 取的信息不够,只取了编译开关,没有取当前是否使用NUMA,以及NUMA的统计信息。 release 取的路径不正确。 ulimit 取的信息...

Greenplum PostgreSQL –enable-profiling 产生gprof性能诊断代码

1 minute read

背景 为了诊断软件的性能瓶颈,在GCC编译的代码中,有-pg开关可以用来产生额外的性能诊断数据,例如每个FUNC的调用次数,时间等。 用来判断软件的性能瓶颈在什么地方最好不过了。 除此之外,我们还可以使用perf top命令来观察整个系统当时的瓶颈。