PostgreSQL 11 preview - 添加非空默认值不需要 rewrite table - online add column with default value
背景 PostgreSQL ,我们在给表加列时,如果不设置列的默认值,不需要rewrite table,只是对元数据进行修改。 但是如果需要设置新增列的默认值,那么必须rewrite table。 PostgreSQL 11,新特性,在元数据中新增了2列(attmissingval, atthasmissin...
背景 PostgreSQL ,我们在给表加列时,如果不设置列的默认值,不需要rewrite table,只是对元数据进行修改。 但是如果需要设置新增列的默认值,那么必须rewrite table。 PostgreSQL 11,新特性,在元数据中新增了2列(attmissingval, atthasmissin...
背景 Oracle的两个文本详见,会自动转换为数值进行相减操作。 PostgreSQL默认并不会将文本转换为数值进行相减操作。 为了实现兼容,有两种方法: 1、创建text到numeric的隐式转换 2、创建text-text的操作符。 PostgreSQL 内置CAST 可以看到varchar是有隐...
背景 Oracle 对’‘有一些特殊的处理,默认会转成NULL。使得’‘可以适合任意的数据类型。 然而对于PostgreSQL来说,没有做这层转换,所以’‘并不能输入给任意类型。 Oracle SQL> create table a(id int, c1 varchar2(10) default ''...
背景 Oracle 时间相减,得到的是一个浮点值N,代表N天。 PostgreSQL 时间相减,得到的是一个时间间隔类型,但是可以转换为一个浮点值。 Oracle 例子 SQL> select sysdate - to_date('2017-01-01','yyyy-mm-dd') from dual...
背景 PostgreSQL 的HOOK机制,结合PostgreSQL的_PG_init与_PG_fini两个初始化函数(加载SO时自动load _PG_init(), 退出会话时自动加载_PG_fini()),使得用户可以在不修改源码的情况下,使用HOOK来实现一些数据库的功能扩展。 比如实现改写SQL执行计划...
背景 digoal’s 大量PostgreSQL文章入口
背景 PostgreSQL recovery时,如何获取需要的wal record呢? 流程 PostgreSQL recovery时,可以从三个地方获取wal record 1、pg_wal 目录 2、recovery.conf中配置的restore_command 3、recovery.conf中配置...
背景 有些朋友在使用COPY命令对数据库进行数据导入导出时,可能会发现COPY到文件时,怎么和想象的不一样,COPY到文件并没有落到指定的地方。实际上原因是COPY命令是服务端命令,COPY到某个文件实际上是COPY到数据库所在的服务器上面了,而不是客户端所在的服务器。
背景 《阿里云 RDS PostgreSQL 高并发特性 vs 社区版本 (1.6万并发: 3倍吞吐,240倍响应速度)》 最近测试的阿里云高并发版本的性能,在1.6万个连接下,实际SQL的响应速度是社区版本的240倍。但是很多网友问怎么测的1.6万个连接,因为pgbench默认只能连1000个连接。 超过1...
背景 PostgreSQL主库创建的slot(物理或逻辑的都算),在备库是否存在? 目前的版本,PG在主库创建的SLOT,备库是没有的(不会通过流复制协议复制到备库) (但是,2ND提出的failover slot,就是来解决这个问题的,在主库创建的slot,会通过流复制协议,发送给物理备库。) 测试 主...