PostgreSQL 无法kill(pg_terminate_backend, pg_cancel_backend)的情况分析 - 进程hang strace,pstack
背景 当PostgreSQL进程无法被cancel, terminate时,进程处于什么状态?为什么无法退出? 例子 1、无法被kill的进程 Type "help" for help. postgres=# select pg_cancel_backend(60827); pg_cancel...
背景 当PostgreSQL进程无法被cancel, terminate时,进程处于什么状态?为什么无法退出? 例子 1、无法被kill的进程 Type "help" for help. postgres=# select pg_cancel_backend(60827); pg_cancel...
背景 数据库写入方式包括: 1、单条insert, autocommit insert into xx values (); 2、批量(单QUERY) insert into xx values (),(),...(); 3、分组提交 begin; insert into xx val...
背景 使用insert into on conflict 合并插入,如果一条SQL语句中,对一个KEY(冲突键,或冲突约束)多次发生冲突时,会报错。 原因: * It is the user's responsibility to prevent this s...
背景 PostgreSQL异步消息功能的一些应用: 《PostgreSQL 流式处理应用实践 - 二手商品实时归类》 《PostgreSQL 事件触发器应用 - DDL审计记录 + 异步通知(notify)》 《从电波表到数据库小程序之 - 数据库异步广播(notify/listen)》 《use Pos...
背景 PostgreSQL 临时表结构是会话级别的,而在Oracle中,临时表的结构是全局有效的,只是数据会话之间独立。 为了让PostgreSQL临时表的使用与Oracle兼容,除了内核层面兼容之外,目前只能在使用时注意。 使用以下方式: 1、plpgsql中 创建普通表(默认会创建对应的复合类型), ...
背景 https://wiki.postgresql.org/images/8/8b/WO-Indexes_1.0.pdf <Indexes don’t mean slow inserts> PPT内介绍了索引引入的写开销,以及有哪些降低写开销的思路,例如 lsm, index buffer, ...
背景 Oracle connect by语法经常用于有树形关系的记录查询,PostgreSQL使用CTE递归语法,可以实现同样的功能。 《PostgreSQL Oracle 兼容性之 - connect by 高级选项 CONNECT_BY_ISLEAF、SYS_CONNECT_BY_PATH、CONNECT_...
背景 行列转换是OLAP应用场景中,对数据透视常用的SQL之一。 Oracle pivot 行转列 语法如下: SELECT ... FROM ... PIVOT [XML] (pivot_clause pivot_for_clause piv...
背景 生成测试数据,PostgreSQL有各种各样的方法,建本文参考文档。 本文提供一种生成指定任意个数、平均值、标准方差的数值。使用tablefunc插件的normal_rand即可。 ``` F.38.1.1. normal_rand normal_rand(int numvals, float8 me...
背景 因为二手商品没有太多的活动、硬性分类,广告等活动,所以购买或者销售速度没有新商品那么快。为了提高二手商品的销售效率,需要提供一套归类策略。 当商品新增或商品内容发生变化时,需要根据商品属性,以及定义的规则,实时进行商品归类(鱼塘,圈子等)方便用户查询。 结构设计 1、商品ID,属性 create ta...