翻译: 小次郎
PostgreSQL9.6在前些日子发布了, 社区为该版本的重大更新付诸良多, 发布日志一如既往的长,我挑选了6个重要的更新, 这些或许能够帮助你更好的使用PostgreSQL。
并行:
并行应该是这个版本中最大的卖点:这个期待良久的功能, 将会出现在用户的许多场景中, 在PostgreSQL之前的版本中, 即便拥有很多的空闲处理器,数据库的单个查询只能利用单个cpu的计算能力。 这个限制现在没有了, 许多场景下的查询现在可以利用并行特性: 顺序扫描,join,聚合计算,这些都可以利用并行的多核处理器。
更好的锁监控:
pg_stat_activity
视图提供了更加详细的等待信息, 当一个进程正在等待一个锁,你会看到锁的类型,以及将你的查询阻塞的等待事件的详细信息。 另外增加了pg_blocking_pids()函数, 你就会知道哪些进程阻塞这个给定的服务器进程。 这些监控都能够过帮助DBA了解一个特定事件触发的锁等待了多长时间, 从而找到系统瓶颈.
多个同步服务器
前面版本的同步流复制中至多可以拥有一个同步节点, PostgreSQL9.6允许配置多个同步节点,用户可以设置一个或多个节点来同步数据, 并通过确保所有节点的确认信息提高了事务的可靠性。
防止膨胀:
截止现在,一个长时间的报表输出, 或者一个一个游标的查询结果输出信息都会阻塞失效行的清理, 数据库中这些经常改动的表会膨胀,会触发数据库的性能问题,导致存储空间的大量使用。 该版本中添加了 old_snapshot_threshold
参数允许集群清理事务结束无效的行, 所有的快照都可以看到该记录已经到达了一定的年纪
PostgreSQL FDW优化:
PostgreSQL现在拥有超过80多种外部表封装(FDW), 可以用来访问几乎大多数的远程数据源, 在9.6版本中, postgres_fdw
引入了很多的改进, 这些改进包括控制拉取数据量的参数fetch_size
, 下推操作(join, sorts)到远程PostgreSQL实例, 如果你想对多个数据库的数据做聚合技术,这些都便于你的操作.
远程作用
PostgreSQL9.6 中新增加了一种复制模式,叫做 remote_apply
, Master节点等待事务作用到远端节点,而不仅仅是写入磁盘, 这会比通常的复制模式慢一些,但不会慢很多, 它会确保所有的"提交数据"在slave 节点已经生效, 如果你想让你的只读查询分布到多个节点的话,这就是为你准备的.
筛选出其中6项是一个艰难的选择, 因为在此版本中, 还存在许多其他方面的改进,比如有: 短语全文检索, pg_visibility
拓展模块, frozen 页面更好的空间回收(VACUUM)机制, 部分索引(partial indexes)只扫描索引部分, 命令进度的报告... PostgreSQL 一如既往,拥有很多的性能提升!
对于这个版本的详细信息,可以从这个维基页面开始: