对于PostgreSQL的新手来说,清理是多版本并发系统的一部分,它负责删除每当记录被更改或删除时生成的无效元组或行。autovacuum功能可以清除死掉(已删除)的隐藏行,从而消除表膨胀,类似于Java的垃圾收集器。有两个与vacuum相关的改进:索引的并行清理以及允许对仅追加的数据进行仅索引扫描。
首先,有了并行vacuum,Postgres现在可以使用多个处理器线程来更快地执行vacuum操作。我们的测试结果表明,使用多个并行工作时,vacuum可以提高3倍。其次,在此版本之前,自动vacuum操作仅会在更新和删除时触发,但现在插入操作也同样会触发。因此,仅索引扫描将更频繁地发生,这对于连续流写入数据库的物联网(IoT)应用程序特别有用。
Libpq是客户端应用程序用来查询数据库的默认库函数集。确保这些连接的安全很重要,否则可能会有模拟服务器的机会,这也称为中间人攻击。可以使用许多不同的安全协议对客户端发送的密码进行编码,例如SCRAM-SHA-256。新的增强功能使SCRAM可以使用通道绑定,该功能可以在不使用证书时通过SSL连接进行相互身份验证。
易于使用的安全性至关重要,因为难以使用的功能通常根本不会带来安全性。带通道绑定的SCRAM是密码身份验证的一种变体,它易于使用,但更加安全。
当数据库抛出诸如“无法打开文件库/ XXXXX / XXXX”("could not open file base/XXXXX/XXXX”)之类的错误时,您会意识到有些严重错误。在大多数情况下,此类错误是在尝试访问表或索引时发生的。Pg_catcheck是EDB开发的用于诊断系统目录损坏的简单工具。如果您怀疑系统目录已损坏,则此工具可以帮助您准确找出问题所在以及严重程度。Pg_catcheck现在将验证每个关系的初始文件是否可用(表或索引)。
这个选项不会告诉您为什么会出现这样的错误。它也不会提供如何修复它们的建议——对此,你应该咨询专家。但是,这个选项提供了一个主动的工具,可以帮助早期检测用例,而不是在生产中发现错误。
这是一个用于创建完全物理备份的改进和新工具的完美结合。Pg_basebackup——对运行中的PostgreSQL集群进行备份的工具——现在提供了一个备份清单。此清单是一个JSON文件,包含关于备份的元数据:版本号、文件列表、WAL范围和校验和。
Pg_verifybackup是一个新工具,它不仅验证备份中文件的完整性,还验证恢复备份所需的WAL日志记录是否有效。Pg_verifybackup确保您的备份确实是好的,可以正确恢复。
通过分区,您可以使用范围,列表或哈希键对大型数据集进行分段,从而创建响应速度更快的数据库。分区会将一个表拆分为多个表,并以对客户端应用程序透明的方式完成,从而可以更快地访问所需的数据。以前,PostgreSQL仅在分区表具有匹配的分区边界时才允许您有效地连接分区表。
在PostgreSQL 13中,分区连接允许你高效地连接表,即使它们的分区边界不完全匹配。这样做的好处是,连接分区表的速度更快,这鼓励了分区的使用,从而提高了数据库的响应速度。
PostgreSQL的主要功能之一是使您可以通过逻辑复制有选择地将哪些数据复制到备用数据库。该功能现在更加强大,因为它可以与分区表一起使用。以前,必须将分区分别复制到备用数据库。现在,可以显式发布分区表,从而使其所有分区自动发布。添加/删除分区会使分区同样添加到备用数据库中或从备用数据库中删除。
此功能的好处在于,它为您提供了极大的灵活性。您现在还可以从分区表复制到非分区表,从非分区表复制到分区表,当然也可以从分区表复制到分区表。逻辑复制不再因分区而受到限制。
现在,B树索引(PostgreSQL中使用的默认和最常见的索引类型)已默认删除重复数据。例如,假设您的索引使用的是墨西哥的“ Estado Unidos Mexicanos”和美国的“ United States of America”。如果有成千上万条具有相同国家/地区名称的记录,则重复的索引键现在仅在磁盘上存储一次。如果您的工作负载使用许多非唯一索引(低基数),这可能意味着可以节省大量磁盘空间和更好的性能。早期测试显示索引减小了40%,在某些特定情况下甚至减小了70%。
有趣的是,PostgreSQL 13中默认启用了此功能,因此您可能会受益甚至不知道!请注意,如果您使用pg_upgrade进行升级,则需要对以前的索引进行重复数据删除时重新索引。
PostgreSQL社区在每个主要版本中继续增强重要的安全功能。一个重要的默认值已更改:最低TLS版本为1.2,这更加安全。除此之外,还有许多其他改进,使您在安全设置方面有更多选择和灵活性。其中,外部数据包装器还具有其他一些便利,例如使用证书进行身份验证的功能,以及允许非超级用户无需密码即可连接到外部服务器。除此之外,还有许多其他功能-包括使用密码来解锁客户端证书的功能-为您提供更多满足安全需求的选项。
这只是我们认为值得强调的一小部分。但是,PostgreSQL 13具有170多个增强功能-每个人都有一些增强!阅读发行说明以获取PostgreSQL 13新增功能的完整列表。
PostgreSQL社区继续在每个主要版本中增强重要的安全特性。一个重要的默认值发生了变化:TLS的最小版本是1.2,这更安全。除此之外,还有许多其他改进,为您提供了更多的选择和安全性设置的灵活性。其中,外部数据包装器(Foreign Data Wrappers,简称FDW)有两个额外的便利,比如使用证书进行身份验证的能力,以及允许非超级用户无需密码即可连接到外部服务器。此外,还有许多其他附加功能——包括使用密码解锁客户证书的能力——为您提供了更多的选择,以满足您的安全需求。
这是对我们认为值得强调的东西的简短描述,PostgreSQL 13有超过170个增强——每个人都有适合的东西! 可以阅读社区发布说明,了解PostgreSQL 13的新特性。
准备升级了吗?立即下载PostgreSQL 13
更多精彩内容,请关注以下平台、网站:
中国Postgre SQL分会官方公众号(技术文章、技术活动):
开源软件联盟PostgreSQL分会
中国Postgre SQL分会技术问答社区:
www.pgfans.cn
中国Postgre SQL分会官方网站:
www.postgresqlchina.com