Recent Posts

PostgreSQL 并行计算tpc-h测试和优化分析

5 minute read

背景 PostgreSQL 9.6首次推出支持聚合、全表扫描、HASH JOIN、nestloop的并行计算。 https://www.postgresql.org/docs/9.6/static/release-9-6.html Parallel queries (Robert Haas, Amit Kap...

PostgreSQL 多租户

less than 1 minute read

背景 Oracle 12c提出了数据库多租户的概念,即PDBs(私有数据库),因为早期Oracle的设计是以schema为隔离的,schema的隔离不够彻底,原因是通过赋权就很容易获得不同SCHEMA下的数据。 PDB的设计与PostgreSQL的Database概念非常相似,所以PostgreSQL实际上很适...

Linux 内核编程基本功之内核同步与互斥锁mutex

5 minute read

背景 在使用PostgreSQL实现同步流复制时,在主节点发现有大量的mutex,导致了写并发被限制。 本文为转载文章 http://blog.csdn.net/cug_fish_2009/article/details/6126414 Pro-II、内核同步与互斥锁 1、理解互斥锁? 互斥锁的使用也是保持...

PostgreSQL 同步流复制(高并发写入)锁瓶颈分析

47 minute read

背景 PostgreSQL的同步流复制实际上是通过walsender接收到的walreceiver的LSN位点,来唤醒和释放那些需要等待WAL已被备库接收的事务的。 对同步事务来说,用户发起结束事务的请求后,产生的RECORD LSN必须要小于或等于walsender接收到的walreceiver反馈的LSN位...

PostgreSQL 流复制xlog异步send

4 minute read

背景 PostgreSQL的流复制相比大家并不陌生,但是目前PG为了保证主的高度统治地位,一切以主库为准。包括SEND WAL时,也要求主已经FLUSH才能发给备库。 这实际上会导致些许的延迟,当然这个延迟目前来看可以忽略不计,但是随着硬件的发展,将来这个模式可能就会不适应。 那么能不能让主库的WAL rec...

PostgreSQL clang vs gcc 编译

6 minute read

背景 CLANG是一个不错的编译器,本文将介绍一下使用CLANG编译以及它的优化开关,如何编译PostgreSQL,同时对比一下GCC 4.4.6版本的性能。 安装clang 安装clang,需要更高版本的gcc来进行编译。 安装gcc 找一个比较快的镜像下载源码包 https://gcc.gnu.org/...

PostgreSQL Oracle 兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁

4 minute read

背景 PostgreSQL的plpgsql服务端编程语言与Oracle数据库的pl/sql编程语言非常类似,但是对于自治事务一直没有语法层面的支持。 以往如果要支持自治事务,可以使用exception或者使用dblink来实现。 写法有点复杂,如果你想要语法层面的支持,可以试试社区放出的这个补丁,补丁还没有合...

致DBA , 开发者 , 内核开发者 , 架构师 - PostgreSQL 爱好者参考资料

2 minute read

背景 给 DBA、应用开发者、内核开发者、架构师 整理了一些PostgreSQL的相关资料。 一、TO 应用开发者 PPT 1、安装PG集群,PG SQL语言精讲,plpgsql开发语言精讲,PG 客户端、服务端管理,PG 数据库架构,PG 日常维护,PG 分布式使用,PG数据库监控,PG 性能优化。 &l...

PostgreSQL 使用 pgbench 测试 sysbench 相关case - pg_oltp_bench

9 minute read

背景 pgbench是PostgreSQL的性能测试工具,C写的,调用LIBPQ,效率非常高。pgbench也支持自定义测试脚本,支持自定义随机算法,支持自定义脚本的weight设置等等,用途非常广泛。 sysbench是一个比较流行的测试软件框架,可测试内存,CPU,数据库,存储等。测试时调LUA的脚本进行测...

PostgreSQL 透明加密(TDE,FDE) - 块级加密

6 minute read

背景 在数据库应用中,为了提高数据的安全性,可以选择很多中安全加固的方法。 例如, 1. 可以对敏感字段进行加密,可以使用服务端加密,也可以使用数据库端加密,例如pgcrypto加密插件。 服务端加解密相对来说比较安全,因为在数据库端存储的是加密后的数据,只要服务端的秘钥保护好,基本上数据都是安全的。 但...