PostgreSQL Greenplum crash 后临时表引发的BUG - 暨年龄监控的重要性
背景 PostgreSQL 和 Greenplum 都支持临时表。 在使用临时表时,如果数据库crash,临时表不会被自动清除,这样可能会埋下隐患,隐患爆发时是非常危险的。 问题在哪呢? 因为vacuum freeze不处理其他会话创建的临时表,仅仅处理当前会话创建的临时表。 也就是说,没有被清理的临时表...
背景 PostgreSQL 和 Greenplum 都支持临时表。 在使用临时表时,如果数据库crash,临时表不会被自动清除,这样可能会埋下隐患,隐患爆发时是非常危险的。 问题在哪呢? 因为vacuum freeze不处理其他会话创建的临时表,仅仅处理当前会话创建的临时表。 也就是说,没有被清理的临时表...
背景 Greenplum gpAux下面有一个插件是orafunc,包含了常用的oracle函数: add_months bitand concat cosh decode dump instr last_day listagg lnnvl months_between ...
背景 事情的起因是这样的,某个用户问我为什么在GP里面查询到的’A’ > ‘a’和PostgreSQL中查询到的结果不一样,一个是false, 一个true. 但是这个原因其实和Greenplum还是PostgreSQL是没关系的。 原因的根源还是collate。 例如,在使用比较操作符时,可以指定需...
背景 本文主要介绍并测试PostgreSQL 在中高端x86服务器上的数据插入速度(目标表包含一个时间字段的索引),帮助企业用户了解PostgreSQL在这类场景下的性能表现。 这类场景常见于 : 运营商网关数据,金融行业数据,产生量大,并且要求快速插入大数据库中持久化保存。 另外, 用户如果需要流式实时处...
背景 PostgreSQL 在打印LONG SQL时,锁等待的时间也会算在内,并且目前在日志中没有将锁等待的时间单独打印出来。 shared_preload_libraries='auto_explain' auto_explain.log_min_duration='1s' auto_explain....
背景 在Oracle中可以使用pipelined来返回多条记录。 在PostgreSQL中对应的功能是setof 表示返回多条记录。 网上的一个例子: Oracle supports pipelined functions. e.g a split function which takes in...
背景 在使用数据库时,跑某些SQL的时候,如果work_mem内存不足会涉及一些临时空间的使用,比如排序,聚合,group by。 如果数据库突然crash了,或者某些原因未清除temp file。 数据库在重启的时候,会自动清理。 PostmasterMain(int argc, char *argv[]...
背景 阿里云的RDS for PostgreSQL目前提供的备份为物理备份,备份粒度可以自己设置,最频繁的基础备份可以做到一天一次。 有了这个备份和归档日志,我们可以做到基于任意时间点(实际上是事务提交或回滚点的粒度)的恢复。 在RDS的控制台可以看到: 接下来我将演示一下如何实现以及如何设计一...
背景 在使用数据库时,某些特定的因素结合在一起,就可能引发蝴蝶效应。 导致数据库性能的急剧下降。 本文要讲的是和以下几个因素有关的: 因素1 PG的锁排队机制,即使没有获得锁,只要在锁队列中就会造成锁竞争。 session A lock1 get session B lock2 wait l...
背景 PostgreSQL 支持通过动态库的方式扩展PG的功能,在调用动态库涉及的函数时会自动加载这些库。 但是某些动态库可能需要预加载,例如使用了hook的动态库,或者是需要初始化共享内存,需要fork work process的动态库。 还有一些库是允许会话级加载,以及使用LOAD命令加载的,但是他们有什...