PostgreSQL 12是一款功能强大且广泛使用的开源关系型数据库管理系统。自发布以来,它在性能、易用性、安全性及可扩展性等方面都得到了显著增强。
性能提升
- 查询性能优化:PostgreSQL 12在查询性能上有了显著提升,特别是在处理大数据集时。通过优化B树索引的空间利用率和读写性能,以及对分区表查询的改进,使得查询效率大大提高。TPC-C性能测试显示,PostgreSQL 12平均可以提升约40%的查询性能和空间利用率。
- 分区表性能:对分区表的查询和数据导入性能进行了大幅增强,特别适用于分区数量多的场景。PostgreSQL 12支持在不阻塞查询的情况下增加新的分区,并优化了分区裁剪功能,使得查询计划耗时进一步减少。
- 索引优化:除了B树索引外,还减少了生成GiST、GIN和SP-GiST索引的WAL日志开销,支持用GiST索引创建覆盖索引,以及SP-GiST索引支持K-NN查询等。
新功能和增强
- SQL/JSON路径表达式:PostgreSQL 12支持SQL/JSON路径表达式,允许用户更方便地对JSON文档进行查询,提高了对非结构化数据的处理能力。
- 公共表达式(WITH查询)优化:实现了对公共表表达式(CTE)的非物化操作处理,允许将CTE内联到外部查询中,从而优化查询性能。
- 生成列:引入了“生成列”功能,这些字段值是通过同一表中其他列计算而来的,并可以保存在磁盘上,增强了数据模型的灵活性。
- 可插拔表存储接口:提供了可插拔的表存储访问接口,允许开发者在表的创建和使用时选择不同的存取方式,增强了系统的可扩展性。
管理和安全性增强
- REINDEX CONCURRENTLY:允许用户在不影响索引写入的前提下重建索引,有助于在不停机状态下对较大索引进行维护。
- 页校验和:通过pg_checksums指令,用户可以在离线状态下对PostgreSQL开启或关闭页校验功能,有助于检测数据损坏。
- 安全性增强:增加了GSS接口,支持客户端和服务端的双向加密;支持多因素身份验证,提高了系统的安全性。
其他特点
- 国际化支持:扩展了对ICU排序规则的支持,允许用户自定义非标准的排序方式,如大小写不敏感或按口音不敏感的比较规则。
- 多列最共值(MCV)统计:通过CREATE STATISTICS指令支持多列最共值(MCV)统计,有助于生成针对非均匀分布列的查询的优化计划。
- 兼容性:PostgreSQL 12继续保持对SQL标准的符合性,并增加了对新特性的支持,如SQL 2016标准的JSON特性。