您的位置:

PostgreSQL版本更新历史

引言

PostgreSQL是一款开源的对象-关系型数据库管理系统,其最初的设计目的是提供一个更加完备的SQL实现。

它因其完整的ACID事务支持,可扩展性、高可靠性和数据完整性而备受青睐。

PostgreSQL从1986年开始开发,并于1995年首次开源发布。截至2021年,PostgreSQL当前的最新版本为14.0。

在过去的几十年中,PostgreSQL经历了多次版本更新,以不断提高其性能、可靠性和可用性,以及适应不断变化的技术环境。

PostgreSQL历史版本

一、PostgreSQL 6.x

PostgreSQL 6.x是PostgreSQL的第一个大规模版本更新,其中包含了许多重大的新功能和改进。

这个版本增加了许多SQL标准的支持,包括UNION,VIEW和 primary key constraints等重要功能。

CREATE VIEW my_view AS
SELECT * FROM my_table;

此外,还新增了一些命令和操作,例如VACUUM命令,它可以将空间释放给操作系统,以及CLUSTER命令,该命令根据一个表上的索引来重新组织表中的行。

二、PostgreSQL 7.x

PostgreSQL 7.x 中添加了很多重要的新功能、扩展模块和性能改进。

这个版本包括对大型表的支持,以及能够处理行级权限控制和更好地支持外部数据源的功能。

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

此外,还包括许多新的SQL特性,如GROUP BY GROUPING SETS、ROLLUP和CUBE,以及新的数据类型,如ARRAY。

三、PostgreSQL 8.x

PostgreSQL 8.x 是一个相对于过去几个版本而言的重要更新。

这个版本增加了许多新的SQL特性,如WITH语句和功能更强大的聚合函数,还增加了对视图的双向更新的支持。

WITH my_query AS (
  SELECT * FROM my_table WHERE id = 42
)
SELECT * FROM my_query;

此外,还修复了一些已知的性能问题,并加入了一些新的事件触发器。

四、PostgreSQL 9.x

PostgreSQL 9.x 引入了许多新特性,其中最重要的是分区表,这使得PostgreSQL能够更好地处理大量数据。

此外,还增加了更多的SQL特性,如COMPOUND TRIGGER以及新的可扩展查询优化和索引方法。

CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    created_at TIMESTAMP
);

CREATE TABLE my_table_2019 PARTITION OF my_table (
  CHECK (created_at >= DATE '2019-01-01' AND created_at < DATE '2020-01-01')
);

此版本还增加了一个完全自包含的PL / Python语言,从而为用户提供了在PostgreSQL中编写Python代码的功能。

五、PostgreSQL 10.x

PostgreSQL 10.x 是一个“提高性能、稳定、可用”的版本。

其中新增了三个重要特性,分别是逻辑复制、全表分区和多列统计,这使得PostgreSQL能够更好地适应大数据量的情况。

CREATE PUBLICATION my_publication FOR TABLE my_table;

此版本还针对查询中的多个子查询重写了查询优化器,并对扩展进行了改进。

六、PostgreSQL 11.x

PostgreSQL 11.x 强调提高可扩展性和容错性。

这个版本增加了一个新的分区方法,使得PostgreSQL能够更好地处理具有时间维度的数据。此外,还增加了对故障转移的更好支持。

CREATE TABLE my_table (
  ts TIMESTAMP NOT NULL,
  data JSONB
)
PARTITION BY RANGE (ts);

CREATE TABLE my_table_2021 PARTITION OF my_table 
  FOR VALUES FROM ('2021-01-01') TO ('2022-01-01');

此版本还带来了对本地性能、查询计划和索引计算的显着改进。

七、PostgreSQL 12.x

PostgreSQL 12.x 强调可扩展性,并增加了VACUUM的自动化。此外,还增加了更多的性能和安全性改进。

其中重要的特性是分区表中的附加分区和还原,以及对索引扩展的改进,从而使其能够更好地支持空间数据和模糊查询。

ALTER TABLE my_table ATTACH PARTITION my_table_2023
  FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');

CREATE INDEX my_index ON my_table USING GIST (column);

总结

PostgreSQL作为数据库领域最具影响力的开源解决方案之一,通过不断的版本更新和升级,已经成为了企业生产环境必不可少的选择。

PostgreSQL的前景光明,我们期待在未来更多的版本中看到更多的功能和改进。