PostgreSQL 10.0 preview 性能增强 - pg_xact align(cacheline对齐)
背景 cacheline对齐,可以大幅提升高并发下的性能。 Hackers, originally this idea was proposed by Andres Freund while experimenting with lockfree Pin/UnpinBuffer [1]. Th...
背景 cacheline对齐,可以大幅提升高并发下的性能。 Hackers, originally this idea was proposed by Andres Freund while experimenting with lockfree Pin/UnpinBuffer [1]. Th...
背景 以前的版本,wal sender进程使用流复制协议,将WAL信息发送给下游的wal receiver进程时,一次最多发送128KiB,是在宏中设置的。 现在允许用户设置GUC参数,来控制这个最大值。 在测试环境中设置为16MB有2倍的性能提升,可以更好的利用网络带宽,提升流复制的传输效率。 Attac...
背景 Append节点通常出现在多个表union , union all或者查询包含多个分区的主表时。 需要对每个子表,或者每个subquery进行查询,然后在将结果合并。 PostgreSQL 10.0增加了一个并行模式即Append节点的并行,多个Append节点,可以并行的执行。、 从而大大的提升效率...
背景 当我们在使用数据库时,排序是一个比较常见的需求,排序有几种方法,使用索引,或者访问堆表然后显示的排序。 当使用索引排序时,索引必须包含排序列,同时必须是驱动列包含排序列。 例如 order by a,b,c,那么可使用索引(a,b,c,*) 但是order by a,b,c能使用索引(a,b...
背景 两阶段提交,在一些客户端异步事务,或者跨库的事务处理中非常常见。 目前,如果数据库crash,PostgreSQL恢复时,对2PC处理机制如下 * on prepare 2pc data (subxacts, commitrels, abortrels, invalmsgs) saved to xlog...
背景 PostgreSQL 9.6支持哈希JOIN并行,但是每个worker进程都需要复制一份哈希表,所以会造成内存的浪费,小表无妨,但是大表的浪费是非常大的。 因此10.0做了一个改进,使用共享的哈希表。 Hi hackers, In PostgreSQL 9.6, hash joins can ...
背景 PostgreSQL 10.0的sharding增强,比如聚合函数的下推算一个。 现在又带来了一个核武器级别的增强,postgres_fdw的异步化调用。 为什么说是核武器级别的呢,比如你有16个sharding节点(对应postgres_fdw的16个库),10.0以前,如果我需要执行一个QUERY涉...
背景 数据库的shared buffer可以用来存储经常使用的数据块,以提升效率。通过LRU算法老化不常用的数据块。 因此在生产数据库中,SHARED BUFFER中通常是热数据。 数据库如果重启,或者发生主备切换,缓存中的热数据需要从磁盘(或者OS PAGE CACHE)重新载入数据库的shared buf...
背景 PostgreSQL 10.0的多核并行有了诸多增强,比如多核并行排序,可以用于提升创建btree索引的速度。 As some of you know, I've been working on parallel sort. I think I've gone as long as I can wit...
背景 query进度的显示,有一个插件pg_query_state支持。 PostgreSQL 10.0将在内核层面增加一个这样的支持。 首先会在analye命令上尝试,但是它会设计为通用的视图,支持其他命令,诸如CREATE INDEX, VAUUM, CLUSTER等。 Hello Hackers, ...