PostgreSQL 11 是一款功能强大的开源关系型数据库管理系统(RDBMS),它在数据存储、查询处理、系统性能以及易用性等方面都有显著的提升和增强。这些改进使得 PostgreSQL 11 在处理大数据集、高计算负载以及复杂应用场景时更加高效和灵活。
系统性能提升
并行查询增强:
PostgreSQL 11 显著增强了并行查询的能力,特别是在处理大数据集和高计算负载时。它支持更广泛的并行查询操作,包括并行创建索引、并行哈希连接(Hash Joins)以及并行执行 CREATE TABLE .. AS 等操作。
引入了更有效的分区数据扫描机制,进一步提升了并行查询的性能。
JIT编译支持:
PostgreSQL 11 增加了对即时(Just-in-Time, JIT)编译的支持,使用LLVM项目编译器来加速SQL查询中表达式的编译和执行。这可以显著提高分析型SQL查询的执行效率。
分区表功能改进
哈希分区:
PostgreSQL 11 在原有的按范围(RANGE)和按列表(LIST)分区的基础上,增加了按哈希(HASH)键值分区的功能,提供了更灵活的分区策略选择。
分区表管理增强:
支持在分区表上创建主键、外键、索引和触发器,并自动将这些操作复制给所有分区表。
支持UPDATE分区键,即当记录中的分区键值字段被更新后,会自动将该记录移至新的正确的分区表中。
引入了默认分区(Default Partition),可以自动将不含有分区键值的记录转入默认分区。
存储过程支持
PostgreSQL 11 增加了对存储过程的支持,并允许存储过程嵌入事务。这一特性使得开发人员可以创建更复杂的服务端应用,涉及大量数据的增量导入等功能。存储过程支持SQL标准,并可使用多种过程语言,如PL/pgSQL、PL/Perl、PL/Python和PL/Tcl。
易用性和其他功能
非空默认值字段优化:
改进了 ALTER TABLE 指令的性能,当为表添加带有非NULL默认值的列时,不再需要重写整个表。
新增索引特性:
支持在创建索引时使用 INCLUDE 选项来包含额外的字段,这有助于提升无B-tree索引列的查询性能。
命令行工具增强:
psql 命令行工具新增了关键字 quit 和 exit,使用户更容易退出程序。
新增了 gdesc 命令,用于显示查询结果的列名和类型。
系统函数和角色管理:
增加了新的系统函数和权限下放功能,增强了系统的灵活性和安全性。
新增了三个默认角色,便于管理和控制不同用户的访问权限。
WAL文件大小调整:
Initdb/Pg_resetwal 工具支持修改WAL(Write-Ahead Logging)文件的大小,提供了更好的灵活性和性能优化选项。