Recent Posts

PostgreSQL 异步IO (effective_io_concurrency) 实测

6 minute read

背景 异步IO的目的是充分发挥块设备的吞吐能力,让块设备处于更繁忙的工作状态(一次连续摄取更多的块),而不是等用户进程需要数据时再读取。 如果数据库并发连接(或者活跃会话)足够时,并且块设备处于繁忙状态,那么没有必要开启异步IO,因为开了也没什么用,块设备已经足够的忙了。 目前PostgreSQL的bitma...

PostgreSQL schemaless 的实现(类mongodb collection)

1 minute read

背景 使用mongodb时,并不需要先建表(collection),直接就可以往里面写,原因是collection本事就是固定的BSON结构。 所以当用户插入时,如果表不存在,建一个BSON结构的colleciton即可。 而关系数据库无法做到这一点,因为关系数据库的表结构都是事先构建,并且在写入数据时,是需...

海量数据 写入、共享、存储、计算 最佳实践

1 minute read

背景 数据是为业务服务的,业务方为了更加透彻的掌握业务本身或者使用该业务的群体,往往会收集,或者让应用埋点,收集更多的日志。 随着用户量、用户活跃度的增长,时间的积累等,数据产生的速度越来越快,数据堆积的量越来越大,数据的维度越来越多,数据类型越来越多,数据孤岛也越来越多。 日积月累,给企业IT带来诸多负担,...

PostgreSQL 10 解读

5 minute read

背景 本文参考当前的release notes以及git, committe fest编写,10还没有正式release,部分内容在正式release时可能会修改,同时会新增新的内容。 PG 10 最主要特性概述 1、支持表级逻辑订阅。多个表可以并行订阅提升订阅的整体吞吐能力。 2、支持表分区。 3、多核并...

数据库优化器原理(含动态规划、机器学习建模优化器aqo) - 如何治疗选择综合症

8 minute read

背景 RBO -> CBO -> 动态优化 经常听到这样的声音:“查询慢?加个索引吧。”,虽然话不专业,但是体现了早期基于RBO(基于规则)的优化器思维。 通常对业务不熟悉,或者对数据库不熟悉时,可能会凭自觉做出这样的判断。 RBO思维存在较大的问题,所以导致了CBO(基于成本)的出现。 再往后...

Greenplum 跨库数据JOIN需求 - dblink的使用和弊端以及解决方案

9 minute read

背景 Greenplum在许多企业中被用于数据仓库,一个企业中通常会有统一的用户管理系统,账务系统;还有许多业务线。 数据被分成两类,一类是业务相关的,一类是全公司统一的数据。 如果用户将两个部分数据分别存入不同的数据库(单个实例可以创建多个数据库),并且公共数据需要与业务数据JOIN时,你可能会想到dbli...

异步流复制模式如何保证不丢数据?

1 minute read

背景 PostgreSQL支持多种事务commit模式,以一主多备的同步流复制为例,事务的REDO信息持久化是怎样的呢? 配置synchronous_commit参数如下,以及对应的含义: local:表示REDO本地持久化。 on:表示本地持久化,以及一个备库持久化。 remote_write:表示本地...