PostgreSQL MySQL 兼容性之 - bit 函数和操作符
bit 函数和操作符MySQL& Bitwise AND << Left shift >> Shift right BIT_COUNT Returns the number of set bits ^ Bitwise XOR | Bitwise OR ~ Bitwise NOT...
View ArticlePostgreSQL MySQL 兼容性之 - 控制流函数
CASEMySQLCASE OPERATOR CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE...
View ArticlePostgreSQL 加载动态库详解
PostgreSQL 支持通过动态库的方式扩展PG的功能,在调用动态库涉及的函数时会自动加载这些库。但是某些动态库可能需要预加载,例如使用了hook的动态库,或者是需要初始化共享内存,需要fork work process的动态库。举个例子:pg_stat_statements这个插件依赖的动态库就使用了HOOK,并且需要初始化共享内存。下面再细分一下:.1. 需要初始化共享内存,或者fork...
View ArticlePostgreSQL 性能优化之 - 大锁与long sql/xact的蝴蝶效应
在使用数据库时,某些特定的因素结合在一起,就可能引发蝴蝶效应。导致数据库性能的急剧下降。本文要讲的是和以下几个因素有关的:因素1PG的锁排队机制,即使没有获得锁,只要在锁队列中就会造成锁竞争。session A lock1 get session B lock2 wait lock1 release session C lock3 可能和lock1, lock2 冲突 session D lock4...
View ArticlePostgreSQL 某单机插入性能测试 1200万行/s, 4.2GB/s
本文主要介绍并测试一下PostgreSQL 在中高端x86服务器上的数据插入速度,帮助企业用户了解PostgreSQL在这种纯插入场景的性能。(例如运营商网关数据,金融行业数据,产生量大,并且要求快速插入大数据库中持久化保存。)测试结果写在前面:1.每32K的block存储89条记录,...
View ArticlePostgreSQL Greenplum crash 后临时表引发的BUG - 暨年龄监控的重要性
PostgreSQL 和 Greenplum 都支持临时表。在使用临时表时,如果数据库crash,临时表不会被自动清除,这样可能会埋下隐患,隐患爆发时是非常危险的。问题在哪呢?因为vacuum...
View ArticleGreenplum 的Oracle兼容性之 - orafunc
Greenplum gpAux下面有一个插件是orafunc,包含了常用的oracle函数:add_months bitand concat cosh decode dump instr last_day listagg lnnvl months_between nanvl next_day nlssort nvl nvl2 oracle.substr reverse round sinh tanh...
View ArticlePostgreSQL 统计信息混淆之处(scan,read,fetch,hit)源码解读
PostgreSQL 几个统计信息的解释难以理解,所以本文花一些时间从源码的角度来解释一下。让大家对这几个容易误解的统计值有更好的理解。比较难理解的几个统计值为:pg_stat_all_indexes 的idx_scan idx_tup_read idx_tup_fetch pg_statio_all_indexes 的idx_blks_read idx_blks_hit...
View ArticlePostgreSQL hugepage 支持
PostgreSQL启动大页支持很简单,只需要配置几个东西。例子:.1. postgresql.confhuge_pages = on shared_buffers = 8GB # 使用8G内存 .2. 操作系统配置grub.conf,加入如下,重启系统numa=off transparent_hugepage=never 或在/etc/rc.local中加入下面的几行,然后重启操作系统:if...
View ArticlePostgreSQL Oracle 兼容性之 - pipelined
在Oracle中可以使用pipelined来返回多条记录。在PostgreSQL中对应的功能是setof 表示返回多条记录。网上的一个例子:Oracle supports pipelined functions. e.g a split function which takes in a string (a,b,c) and returns a b and c on multiple rows....
View ArticlePostgreSQL 的好基友之 - redis (PG如何插入和拔出redis)
在PostgreSQL中直接读写REDIS。好处多多,可以降低应用层设计的复杂度,减少交互次数,降低RT。应用场景举例:.1. 使用redis作为PostgreSQL的二级缓存,...
View ArticlePostgreSQL和Greenplum的临时表空间介绍
PostgreSQL的临时表空间,通过参数temp_tablespaces 进行配置,PostgreSQL允许用户配置多个临时表空间。配置多个临时表空间时,使用逗号隔开。如果没有配置temp_tablespaces...
View ArticlePostgreSQL 长事务中DML产生的数据无法被及时纳入统计信息导致的问题
PostgreSQL最低的事务隔离级别是read committed,因此在事务中产生的数据变化,在外部是不可见的,包括auto analyze也是不可见的。例子:postgres=# show autovacuum; autovacuum ------------ on (1 row) postgres=# show autovacuum_naptime ; autovacuum_naptime...
View ArticlePostgreSQL 如何计算可变参数中有没有重复参数, 如何构造排列组合SQL
PostgreSQL 如何计算可变参数中有没有重复参数。有一个计算排列组合的算法需求,需要知道参数中是否有重复值。目的是过滤掉重复值。实现方法很简单,需要创建支持可变参数的函数,如下:postgres=# CREATE or replace FUNCTION has_dupli_val(VARIADIC arr int[]) RETURNS boolean AS $$ select...
View ArticlePostgreSQL offset 原理,及使用注意事项
使用PostgreSQL查询记录时,可以使用offset跳过一些记录,从跳跃点开始取后面的数据。但是这里有一个问题是这样的:postgres=# create or replace function f() returns void as $$ declare begin raise notice 'called'; end; $$ language plpgsql strict volatile;...
View ArticlePostgreSQL 计算 任意类型 字段之间的线性相关性
PostgreSQL自带了计算numeric和numeric字段的线性相关性的聚合函数corr(numeric, numeric)。例如:postgres=# select corr(c1,c2) from (values (1,2),(2,1),(100,90),(13,13),(25,27) ) t(c1,c2); corr -------------------...
View Article一个简单算法可以帮助物联网,金融 用户 节约98%的数据存储成本 (PostgreSQL,Greenplum帮你做到)
PostgreSQL简直是工业界和学术界的完美结合,怎么说呢?下面娓娓道来。前段时间为大家分享了物联网行业分析以及PostgreSQL 为物联网场景量身定制的特性介绍。https://yq.aliyun.com/articles/18034https://yq.aliyun.com/edu/lesson/67今天再给大家分享一枚重磅炸弹,PostgreSQL 帮助物联网用户...
View Article