Recent Posts

PostgreSQL 对称加密、非对称加密用法介绍

4 minute read

背景 对称加密方法,指加密和解密使用同一把密钥的方法。优势是加密速度快,缺陷是密钥只有一把,安全性较低。 非对称加密方法,指加密和解密用到一对钥匙,一把为私钥,一把为公钥。通常的用法是公钥用于加密,私钥用于解密。优势是更加安全,你自己只要保护好私钥,就可以保证别人给你发的数据无法被篡改、窃听。缺陷是加解密效率比...

[转载] 对称加密与非对称加密

3 minute read

背景 转载: http://www.cnblogs.com/jfzhu/p/4020928.html 原文 (一)对称加密(Symmetric Cryptography) 对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)...

PostgreSQL 11 preview - Surjective indexes - 索引HOT增强(表达式)update评估

4 minute read

背景 PostgreSQL 11马上要提交的一个PATCH,可以更亲和的使用HOT,大幅增强表达式索引的更新性能。 背景技术是HOT,当更新某一条记录时,如果被索引的字段值没有变化,同时被更新记录的新版本与老版本在同一个HEAP PAGE中,那么索引不需要增加冗余ENTRY。从而发生HOT更新。 ...

PostgreSQL 多个数组聚合为一维数组加速(array_agg)

1 minute read

背景 多个数组聚合为一维数组,求PC。业务背景见: 《PostgreSQL APP海量FEED LOG实时质量统计CASE(含percentile_disc)》 由于PostgreSQL内置的聚合函数array_agg支持的数组聚合实际上是将多个数组聚合为多维数组。并不是一维数组。 例如: postgr...

PostgreSQL 店铺运营实践 - JSON[]数组 内部标签数据等值、范围检索100倍+加速示例 (含,单值+多值列合成)

8 minute read

背景 PostgreSQL的数组、JSON等数据类型,给业务方带来了很多便利。但与此同时,优化也会变得更加的烧脑。 比如我们的业务方可能在数据库中存储了一些商品的信息,同时每个商品上会有若干的标签,每个标签使用一个JSON来表示。 数据结构就会变这样: create table js( gid in...

PostgreSQL UDF实现tsvector(全文检索), array(数组)多值字段与scalar(单值字段)类型的整合索引(类分区索引) - 单值与多值类型复合查询性能提速100倍+ 案例 (含,单值+多值列合成)

5 minute read

背景 在应用程序中,特别是使用PostgreSQL多值列(数组、全文检索、JSON)类型的业务中,除了多值列有查询需求,单值列也有查询需求。 那么当两种查询并行存在时,数据库会根据COST选择单列或多列组合索引。但是性能并不能达到极致,只是简化用户的索引设计而已。 例如 create table tbl(g...

PostgreSQL 如何判断idle in transaction的事务中有没有东西要提交

2 minute read

背景 如何判断idle in transaction的事务中有没有东西要提交? 比如在一些情况下,你可能发现数据库中很多idle in transaction的事务,可能是一些僵尸事务,也可能是一些应用框架引起的,连接建立后就开启一个事务,实际上里面啥也没有。 postgres=# select pid, s...