PostgreSQL 10.0 preview 功能增强 - 唯一约束+附加字段组合功能索引 - 覆盖索引 - covering index
背景 如果我们有这样的查询 select * from tbl where c1=? and c2=? and c3=? and c4=? 我们建立了复合索引达到最好的查询性能 create index idx on tbl(c1,c2,c3,c4); 同时还有这样的约束 create unique i...
背景 如果我们有这样的查询 select * from tbl where c1=? and c2=? and c3=? and c4=? 我们建立了复合索引达到最好的查询性能 create index idx on tbl(c1,c2,c3,c4); 同时还有这样的约束 create unique i...
背景 PostgreSQL 10.0 通过session backendground实现了匿名事务,从此可以愉快的支持Oracle存储过程的自治事务了。 此前,我们需要通过dblink实现,或者通过匿名块+exception来实现,比较繁琐。 《PostgreSQL Oracle 兼容性之 - plpgsql...
背景 我们知道,PostgreSQL的MVCC是多版本来实现的,当更新数据时,产生新的版本。 那么如果新版本不在同一个数据块的时候,索引也要随之变化,当新版本在同一个堆表的块里面时,则发生HOT UPDATE,不需要变更没有发生值改变的索引。 但是HOT总不能覆盖100%的更新,所以还是有索引更新的可能存在。...
背景 PostgreSQL 10.0 已经可以看到的sharding增强如下: 1. Push down more full joins in postgres_fdw full join 下推 2. Push down more UPDATEs/DELETEs in postgres_fdw updat...
背景 PostgreSQL 数据库的WAL为重做日志,如果数据库CRASH,那么需要等待WAL来恢复数据库,只有当数据库恢复到一致状态时,才能将数据库唤醒(或者说此时数据库才是一致的)。 数据库被唤醒后(promote),客户就可以对数据库执行查询、增删改查的动作了。 那么如果数据库需要apply很多的WAL...
背景 PostgreSQL 的流复制是非常灵活的,在主库端,可以将事务的级别设置为同步,异步,本地同步,远程同步刷盘,远程同步刷OS缓存,远程数据库apply等多种级别。 《PostgreSQL 9.6 同步多副本 与 remote_apply事务同步级别》 但是在备库,还没有一个可以设置安全栅栏的手段,比如...
背景 PostgreSQL 10.0 将支持hash index WAL. 因此建hash index再也不怕数据库crash或者备库hash index不可用了。 $SUBJECT will make hash indexes reliable and usable on standby. AFAIU, ...
背景 PostgreSQL 10.0 增强了分区表的子表搜索性能,对于涉及分区表包含子表特别多的QUERY,可以提升性能。 性能分析 当分区非常多时,执行计划会变慢,原因是get_tabstat_entry, find_all_inheritors成为主要瓶颈。 10.0的改进 ``` Improve p...
背景 PostgreSQL 10.0 libpq支持pipeline batch两种模式,batch模式意味着客户端可以将多个QUERY塞入pipeline,作为一个batch提交给server段,从而减少客户端和服务端的网络交互次数。 在网络环境不太好的环境中,特别是云环境,大幅提升性能。 + <...
背景 PostgreSQL 10.0有可能会融合JIT,向量计算等技术,提供一个通用的,便于高效协作,提升OLAP性能的一个开发框架。 虽然目前社区有朋友已经提供了LLVM和向量计算的插件,很显然社区是想在内核中直接整合这些计算的。加油PostgreSQL 《分析加速引擎黑科技 - LLVM、列存、多核并行、...