Recent Posts

2011年功力的德哥教你两天撸通PostgreSQL - 入门、开发、原理、管理、调优

less than 1 minute read

背景 很多人抱怨我写的入门文档太少,实际上几年前做过很多入门的培训,PPT也很全,听过我讲的朋友戏称这份PPT足够出一本标准教材了(达到了380页之多)。 PostgreSQL的入门教材还有很多,书籍也很多,如果您真的钟爱我写的文章的话,那就不要错过本文了,当时是2011年,PostgreSQL社区是一个很有爱...

PostgreSQL 递归查询CASE - 树型路径分组输出

5 minute read

背景 PostgreSQL的递归查询可以解决很多树形结构,路径查询等问题。 结合PostgreSQL plpgsql编程,可以实现更加复杂的问题,比如接下来这个CASE。 用户要求输出每个末端路径涉及的所有的记录。 例子 创建测试表,插入路径数据. create table test(id seria...

MySQL不适合去O(Oracle)的原因分析

1 minute read

背景 去O从互联网逐渐蔓延到传统企业,但是MySQL适合传统企业吗?来听听某些传统用户的心声。 某些传统企业也想学互联网去O的思路,复制互联网的去O神话,但是他们自己调研了一下MySQL之后,发现这种想法并不科学。 这些弊端在PostgreSQL中并不存在,还增加了许多特性可以帮助企业降低开发量。这几年PG在...

数据库三十六计 - PostgreSQL 三十六计(下)

5 minute read

背景 PostgreSQL 三十六计 - 下 25. 数据库端编程,处理复杂业务逻辑。 在传统企业、电商、运营商等涉及用户交互、或者多个系统交互的业务场景中,通常一个事务涉及到很复杂的业务逻辑,需要保证数据的一致性,同时还需要与数据库多次交互。 比如银行开户,涉及的业务系统多,逻辑复杂。在传统企业中,通常也使用...

数据库三十六计 - PostgreSQL 三十六计(中)

1 minute read

背景 PostgreSQL 三十六计 - 中 13. 金融风控、公安刑侦、社会关系、人脉分析 等业务场景,高效实现图式数据搜索。 利用PostgreSQL函数编程,异步消息,复杂JOIN,递归查询,一对多关系存储等手段,解决高效的图式数据查询需求。 1. 猎头挖人 作为IT人士或者猎头、HR,对Linked...

数据库三十六计 - PostgreSQL 三十六计(上)

2 minute read

背景 PostgreSQL 三十六计 - 上 1. 任意字段组合查询有高招。 在业务中,任意字段组合查询的需求越来越多,也就是俗称的ADHoc查询。例如前端人机交互,根本不知道用户会对哪些字段进行检索,任意字段组合搜索、透视。为了达到查询加速效果,传统数据库需要对每一种查询组合建立多字段复合索引,导致索引非常多...

PostgreSQL 数据rotate用法介绍 - 按时间覆盖历史数据

2 minute read

背景 在某些业务场景中,数据有冷热之分,例如业务只关心最近一天、一周或者一个月的数据。对于历史的数据可以丢弃。 比如某些指标的监控场景,保留一周的监控数据,历史的都可以丢弃。 如何丢弃历史数据?或者说如何实现rotate? 1. 使用delete, 删除7天前的数据。 delete from table ...

PostgreSQL 10.0 preview 性能增强 - Write Amplification Reduction Method (WARM)消除某些情况下的INDEX写放大

4 minute read

背景 目前,PostgreSQL的MVCC是多版本来实现的,当更新数据时,产生新的版本。(社区正在着手增加基于回滚段的存储引擎) 由于索引存储的是KEY+CTID(行号),当tuple的新版本与旧版本不在同一个数据块(BLOCK)的时候,索引也要随之变化,当新版本在同一个块里面时,则发生HOT UPDATE,索...

PostgreSQL 10.0 preview 功能增强 - 后台运行(pg_background)

6 minute read

背景 当用户在管理数据库时,如果要在交互式界面跑一些QUERY,但是不知道QUERY要运行多久,担心网络问题或者其他问题导致终端断开,QUERY执行情况不明的话。就需要后台运行这个功能了。 后台运行在LINUX中也很常见,比如 nohup ls -la / >/tmp/result 2>&...