墨墨导读:本文讨论了PostgreSQL 13新版本中的一些隐藏新特性。

数据技术嘉年华,十周年盛大开启,点我立即报名!大会以“自研·智能·新基建——云和数据促创新 生态融合新十年” 为主题,相邀数据英雄,总结过往十年历程与成绩,展望未来十年趋势与目标!

原文作者:JONATHAN S. KATZ
原文标题:Hidden Gems of PostgreSQL 13
原文链接:https://info.crunchydata.com/blog/postgresql-13-hidden-gems
译者:多米爸比

PostgreSQL 13是一个幸运的发行版!该版本有一些非常有影响力的新特性,将在秋季的预定时间发布。

在PostgreSQL发布过程中,我最喜欢的部分之一是回顾和讨论新版本中的特性,并了解它们如何对我们的用户产生正面的影响。例如,在历届PGCon会议上,我了解了PostgreSQL 12如何引入了进行多种身份认证的特性。

每个发行版都会有一些隐藏特性。(这些特性可能不会直接从纸面上看到,但在实际需要时它们会产生很大的作用。)Postgres 13也不例外:这些特性或使写查询更容易,或添加安全层,或帮助您避免服务宕机。

PostgreSQL 13的隐藏"杀手锏"特性有哪些呢?

防范失控的复制槽

PostgreSQL 9.4引入了复制槽,复制槽(物理复制槽)提供了一种便捷的方法来防止备库与主备不同步,它也是实现逻辑复制的基本组件。可以说,这使得PostgreSQL流复制设置变得接近“一设即忘”:一旦设置完成,流复制将正常工作,您可能不用担心出现不同步的情况。

但是,这引出了一种新的问题:“未感知的复制槽”。下面根据我个人经验对这一名词进行解释。

复制槽的工作原理:主库PostgreSQL实例会一直保留预写日志(WAL)文件,直到所有备库所需的插槽都确认已接收到特定段为止。只有完成此操作后,主库实例才会移除相应的WAL文件。另外我们知道在标准的PostgreSQL安装中,WAL文件的大小为16MB。

之前我编写了一个使用逻辑复制(当时通过逻辑解码)的应用程序,该程序将从数据库中流式传输所有数据更改,并根据这些更改进行应用(又称为“捕获数据更改”)。有时,不仅该程序的进程崩溃,我的一些监控项也会失败(循环崩溃)。但是,有一个监控项没有失败:数据库磁盘空间耗尽的警告!

事情原由:有一个复制槽未被感知到与备库失联,因此我的数据库主库一直保留WAL文件。如果不进行干预,我的PostgreSQL实例可能会耗尽磁盘空间并完全崩溃。

这引出了PostgreSQL 13的一个隐藏特性:“max_slot_keep_wal_size”。设置参数值后,该值表示如果复制槽被感知到失联,保留WAL文件的最大数量。如果超过该值,PostgreSQL将开始删除最早的WAL文件。

好消息是此特性可以帮助防止由于意外失联的复制槽而导致的服务宕机。但是,您可能会面临备库不同步的问题后必须重建的风险。

不管如何使用复制槽,PostgreSQL流复制还未完全达到“一设即忘”的程度:您确实需要监控PostgreSQL流复制的运行状况。

最大公约数/最小公倍数

在数学考试中这不是一个技巧性的问题:PostgreSQL 13在其数学库中添加了gcd(最大公约数)和lcm(最小公倍数)函数!这些函数有助于解决涉及对齐相关的问题,当您遇到这种情况时,您将会对这一特性表达感激!

PostgreSQL外部数据包装器的身份认证

当使用postgres_fdw将应用程序部署到生产环境时,要考虑很多事情,尤其是在安全性方面。一个重要的考虑因素:数据库实例如何向另一个实例进行身份认证?

PostgreSQL 13通过引入使用基于证书的身份认证功能,扩展了PostgreSQL FDW身份认证的可能性。基于证书的身份认证比基于密码认证更有安全优势。虽然设置证书可能需要花费更多的工作,但从长远来看,它更易于管理和保护安全。

基于身份认证的机制扩展到postgres_fdw,以及下面另一个隐藏特性将对生产系统中的安全性进一步增强!

下面接着说关于认证的隐藏特性…

应用程序使用加密的证书进行连接

您是否遇到过想使用加密证书连接到PostgreSQL,但又不想每次都输入交互式的密码?

PostgreSQL 13添加了一个新的客户端连接参数,名为 sslpassword,该参数可让您指定证书的密码作为连接字符串的一部分。这使应用程序更方便地利用加密的证书,而不再需要与用户进行交互!

想充分利用这一隐藏特性,您仍然需要将证书密码保存在安全的位置。

标准化

Unicode标准化是unicode字符串比较的一项重要技术。例如,标准化是为SCRAM身份认证准备UTF-8字符串的关键步骤,因为它确保规范等效的字符串可以进行比较。

PostgreSQL 13添加了“标准化”函数,只要服务器使用UTF-8,该函数就可以用于字符串标准化。这个特性有助于在UTF-8字符串上执行查找:您也可以使用标准化函数作为表达式索引的一部分。

无需使用插件的UUID函数

在以前的版本您可能知道使用gen_random_uuid()函数在PostgreSQL数据库中生成UUID,在PostgreSQL 13之前必须安装pgcrypto扩展才能使用这些函数。

尽管pgcrypto这个扩展功能很棒,但您肯有很多原因不需要安装它也能生成v4版本的UUID函数。在PostgreSQL 13里是很方便的,因为有这一隐藏特性。

新增术语表

Postgres 13中添加了许多优雅的术语描述,也是我想向您介绍的PostgreSQL术语表。PostgreSQL生态系统中有很多术语,很难完全掌握,包括首字母缩写词,例如我总是会查找ACID的解释,因为这个词的字母顺序我脑子经常会弄乱。

该词汇表是PostgreSQL 13文档中添加的一个很赞的特性,我鼓励您进行查看和挖掘!

就这?..

更多内容我推荐您阅读PostgreSQL 13发行说明,看看是否可以发现属于自己的杀手锏。

只有当我们实践过新版本,我们才知道新版本中对我们最有用的功能是什么,因此我极力鼓励您稍作尝试,亲自体验一下!

墨天轮原文链接:https://www.modb.pro/db/32564(复制到浏览器中打开或者点击“阅读原文”立即查阅)

推荐阅读:144页!分享珍藏已久的数据库技术年刊


视频号,新的分享时代,关注我们,看看有什么新发现?

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

点击下图查看更多 ↓

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

PostgreSQL 13隐藏杀手锏特性相关推荐

  1. PostgreSQL 13 Beta 1 发布,大量新特性

    功能性 PostgreSQL 13 中有许多新功能可以帮助提高 PostgreSQL 的整体性能,同时使开发应用程序变得更加容易. B 树索引(PostgreSQL 的标准索引)在处理重复数据方面得到 ...

  2. PostgreSQL 13新特性之二: 支持异构分区表逻辑复制。

    作者简介 谭峰,网名francs,PostgreSQL中文社区委员,<PostgreSQL实战>作者之一,<PostgreSQL 9 Administration Cookbook& ...

  3. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性--多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

  4. 技术干货 | 阿里云数据库PostgreSQL 13大版本揭秘

    简介:阿里云RDS PostgreSQL是一款兼容开源PostgreSQL的全托管云数据库产品,自2015年首次发布以来,根据用户需求不断升级迭代,已支持9.4.10.11.12等多个版本,覆盖了高可 ...

  5. Fedora 13 的新特性

    为什么80%的码农都做不了架构师?>>>    Fedora Project Wiki公布了Fedora 13的新特性列表. 主要包括:默认采用NFSv4协议,支持通过IPv6挂载N ...

  6. PostgreSQL 13 发布,索引和查找有重大改进

    9月24日,PostgreSQL全球开发组宣布PostgreSQL 13正式发布,作为世界上使用最多的开源数据库之一,PostgresSQL 13是目前的最新版本. PostgreSQL 13 在索引 ...

  7. xfce上安装mysql_在Fedora 33/32系统上安装PostgreSQL 13数据库的说明

    如果你要在Fedora 33/32系统上安装PostgreSQL 13数据库,请看如下说明,在安装之前,需要添加所需的存储库.同时,PostgreSQL团队为基于YUM和基于Debian的Linux系 ...

  8. PGPool-II 4.2.1+PostgreSQL 13高可用

    PGPool-II 4.2.1+PostgreSQL 13高可用 说明 按照示例文档过程一步步操作,要注意一些权限配置和用户密码.官方加密用了scram-sha-256,此文档全用md5.在ECS上部 ...

  9. POSTGRESQL 13 可以并行VACUUM INDEX 你知道对吧

    POSTGRESQL 我们在大量的使用,但实话实话知识的更新永远是滞后的,VACUUM 是可以并行进行INDEX 的操作,这个事情是在 POSTGRESQL 13 的这个版本上被实现的. 实际上POS ...

最新文章

  1. FlushMode属性与transaction(spring注入的事务)
  2. php文件上传绕过mime类型,文件上传限制绕过技巧
  3. Linux_相关命令(学习,备忘)
  4. vc:如何从Internet上有效而稳定地下载文件
  5. Firefox年内将默认启用AV1解码
  6. 关于Python IDE自动补全功能不好用的问题,解决方案
  7. SharePoint 2010 技术参数(整理)
  8. 中国象棋程序的设计与实现(五)--回答CSDN读者的一些问题
  9. Persistence4j 1.1发布,Java ORM框架
  10. pycharm professional2019.1破解过程
  11. Handbook之012:函数类别构型
  12. windows快速打开命令窗口方式[利刃篇]
  13. dubbo分布式服务子系统的划分
  14. linux on android 项目,好累,终于完成了 Android-on-Yeeloong 项目的搭建
  15. stm32cubeIDE下载无法打开GDB的问题
  16. Vuforia+Unity实现AR效果
  17. 2015 2020 r4烧录卡 区别_行业新闻2020年中国智能门锁行业发展现状分析
  18. 各种常见数据传输线端口(插头)的分类
  19. 不知道怎么压缩图片大小?分享2个压缩小技巧
  20. ubuntu中git安装与配置 / git clone git@github.com失败

热门文章

  1. sci写作sci写作模板_2020年写作主题
  2. 实践 | Centos 7搭建LVS+Keepalived高可用Web服务群集群
  3. Kali Linux 自定义分辨率
  4. Bootstrap3 Affix插件
  5. Bootstrap 响应式设计
  6. Ubuntu 创建文件夹时出现:用户名 不在 sudoers 文件中。此事将被报告。
  7. 程序设计基础(C语言)课程设计报告,C语言程序设计基础课程设计报告.doc
  8. html自定义标签模板,javascript – 模板与HTML自定义元素的使用
  9. 最大似然估计_R初等统计分析(一)——概率分布、最大似然估计
  10. java thread join()_Java中Thread.join()的使用方法