PostgreSQL 12: 新增 Pluggable Table Storage Interface

MySQL 支持多种存储引擎,例如 InnoDB、MyISAM、Memory 存储引擎等,现阶段 PostgreSQL 只提供 Heap 一种存储引擎。

PostgreSQL 12 版本的一个重量级特性是引入了 Pluggable Table Storage Interface,为后续支持多种存储引擎奠定了基础,比如 zheap、Memory、columnar-oriented 等存储引擎。

有资料表明可能在 PostgreSQL 13 版本引入 zheap 存储引擎,zheap 存储引擎具备如下特性:

  • In-place update with undo means that bloat goes away automatically in most cases
  • Smaller on disk and fewer writes
  • better for unattended operation + large data sets

zheap 存储引擎的 In-place update 特性让人垂涎欲滴。

关于 Pluggable Table Storage Interface

PostgreSQL 12 introduces the pluggable table storage interface that allows for the creation and use of different methods for table storage. New access methods can be added to a PostgreSQL cluster using the CREATE ACCESS METHOD command and subsequently added to tables with the new USING clause on CREATE TABLE.

A table storage interface can be defined by creating a new table access method.

In PostgreSQL 12, the storage interface that is used by default is the heap access method, which is currently is the only built-in method.

创建存储引擎

存储引擎的创建可通过 CREATE EXTENSION 命令创建外部扩展实现,之后创建表时指定新建的存储引擎即可,例如创建 am_storage1(此存储引擎并不存在,只是一个语法示例) 存储引擎:

1
2
CREATE EXTENSION am_storage1;
CREATE TABLE table_name (…) USING am_storage1;

会话级设置存储引擎

可在会话层设置存储引擎,之后创建的表默认使用已设置的存储引擎,如下:

1
2
3
SET default_table_access_method = am_storage1;

CREATE TABLE else ...;

12 版本可通过 default_table_access_method 参数查询当前会话的存储引擎,如下:

1
2
3
4
5
postgres=# show default_table_access_method;
default_table_access_method
-----------------------------
heap
(1 row)

参考

最后推荐和张文升共同编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级特性、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,涵盖大量实战用例!

购买链接:https://item.jd.com/12405774.html

PostgreSQL实战
感谢支持!
0%