发布于:2020-12-19 18:01:30
0
246
0
2019年10月3日,发布了世界上最先进的开源数据库的新版本。PostgreSQL 12现在可用,对查询性能(特别是在较大的数据集和整体空间利用率方面)进行了显着改进,还有其他重要功能。
在此博客中,我们将介绍这些新功能,并向您展示如何获取和安装此新PostgreSQL 12版本。我们还将探讨升级时要考虑的一些注意事项。PostgreSQL 12功能和改进,让我们开始提及这个新PostgreSQL版本的一些最重要的功能和改进。
索引编制
对B树索引的空间利用率和读/写性能进行了优化。
减少创建GiST,GIN和SP-GiST索引的WAL开销。
您可以使用SP-GiST索引通过距离运算符(<->)执行K近邻查询。
重建索引时不会通过REINDEX CONCURRENTLY命令阻止对索引的写操作,从而使用户可以避免因长时间重建索引而导致停机的情况。
分区
对分区表的查询有了改进,尤其是对于具有数千个分区的表,这些表只需要从有限的子集中检索数据。
使用INSERT和COPY向分区表添加数据的性能提高。
您将能够在不阻止查询的情况下将新分区附加到表。
SQL
现在,您可以使用SQL / JSON标准中定义的JSON路径表达式对JSON文档运行查询,并且它们可以利用现有的索引机制对以JSONB格式存储的文档进行有效检索。
PostgreSQL 12现在可以自动内联WITH查询(如果它不是递归的,没有任何副作用,并且在查询的后面部分仅被引用一次),这反过来又可以帮助提高许多现有查询的性能查询。
引入“生成的列”。这种类型的列根据同一表中其他列的内容计算其值。还支持在此存储此计算值。
国际化
PostgreSQL 12通过允许用户定义“不确定性归类”来扩展其对ICU归类的支持,例如,可以允许不区分大小写或不区分重音的比较。
认证方式
引入了客户端和服务器端加密,以通过GSSAPI接口进行身份验证。
如果PostgreSQL服务是使用OpenLDAP编译的,则它能够发现LDAP服务器。
使用clientcert = verify-full选项和在pg_hba.conf文件中配置的其他身份验证方法进行多因素身份验证。
如果要利用这些新功能和改进,可以转到下载页面并获取最新的PostgreSQL版本。如果您需要HA设置,这里是一个博客,向您展示如何为HA安装和配置PostgreSQL。
如何安装PostgreSQL 12
在此示例中,我们将使用CentOS7作为操作系统。因此,我们需要转到基于RedHat的OS下载站点并安装相应的版本。
1个 |
|
它将安装带有稳定,测试和源代码包的PostgreSQL存储库。
1个 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
然后,安装客户端和服务器PostgreSQL12软件包。它将安装一些python依赖项。
1个 |
|
现在,您可以初始化新的PostgreSQL 12数据库。
1个 2 3 |
|
并启用/启动PostgreSQL服务。
1个 2 3 4 5 |
|
就是这样。您已启动并运行新的PostgreSQL版本。
1个 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
现在,您已经安装了最新的PostgreSQL版本,您可以将数据迁移到这个新的数据库节点中。
升级到PostgreSQL 12
如果要将当前的PostgreSQL版本升级到这个新版本,则有三个主要选项可以执行此任务。
pg_dump:这是一个逻辑备份工具,可让您转储数据并将其还原到新的PostgreSQL版本中。在这里,您将有一个停机时间,该停机时间将根据您的数据大小而变化。.您需要停止系统或避免在主节点中使用新数据,运行pg_dump,将生成的转储移至新的数据库节点并进行还原。在这段时间内,您无法写入PostgreSQL主数据库,以避免数据不一致。
Pg_upgrade:这是一个PostgreSQL工具,用于就地升级PostgreSQL版本。在生产环境中可能很危险,因此在这种情况下我们不建议使用此方法。使用这种方法也会有停机时间,但是可能比使用以前的pg_dump方法要少得多。
逻辑复制:从PostgreSQL 10开始,您就可以使用这种复制方法,该方法允许您以零(或几乎零)的停机时间执行主要版本升级。这样,您可以在最新的PostgreSQL版本中添加一个备用节点,并且当复制是最新的时,您可以执行故障转移过程来升级新的PostgreSQL节点。
升级到PostgreSQL 12之前的注意事项
通常,对于所有升级过程以及所有技术,都需要考虑以下几点。让我们看一些主要的。
删除了数据类型abstime,reltime和tinterval。
recovery.conf设置已包含在postgresql.conf文件中,并且不再使用。如果创建了此文件,则服务器将无法启动。文件recovery.signal和standby.signal文件现在用于切换到非主要模式。将trigger_file设置重命名为promove_trigger_file,并且删除了standby_mode设置。
不允许使用多个冲突的recovery_target规范。
pg_restore中需要指定“ -f”以将转储内容发送到标准输出。
B树索引中的最大索引条目长度减少了八个字节,以改善重复条目的处理。对先前版本的索引pg_upgrade执行的REINDEX操作可能会失败。
如果没有提供参数列表并且有多个匹配的对象,则DRIF IF EXISTS FUNCTION / PROCEDURE / AGGREGATE / ROUTINE会产生错误。
有关新的PostgreSQL 12功能和迁移之前的注意事项的更多详细信息,您可以参考官方发行说明网页。
作者介绍