PostgreSQL 16 三则 “新功能更新”

2023-02-28 14:43:05 浏览数 (1)

POSTGRESQL 15 刚刚推出不久,而POSTGRESQL 16 的新功能也已经在路上了,下面说说PG 16 已经确认有的3个新功能。

1 PG_DUMP 压缩

相对于其他数据库在非物理备份中,POSTGRESQL 的优势会较大,因为POSTGRESQL 的PG_DUMP 支持两种方式的备份,1 逻辑备份,也就是我们习惯的将数据库的数据导出成可以执行的语句 2 binary backup 这个备份方式中可以将备份的数据变换成二进制的模式,并可以通过PG_RESTORE 的方式进行数据的恢复。

这里PG_DUMP 在PG16之前的版本中提供的是针对与二进制的数据备份中 -Fc 方式或 --format = customer的两种方式,同时还在备份中通过 -Z 可以针对备份文件来指定压缩的级别,0 为不压缩,9为压缩的最高级别,通过GIZP的方式。Georgios Kokolatos 在其中提供了一个Patch, 这是PG16的新特色,因为你可以指定压缩的方式和技术,如 zstd , lz4,等新的压缩方式来自持PG_DUMP。

这里需要注意的是,在PG安装中,编译需要将这些模块编译进PG的数据库中否则是无法进行支持的。在通过压缩等级来进行数据压缩中,在一些常规的数据在使用压缩后,同样的数据备份,在选择0 不压缩和选择9 压缩后之间相差可以达到30倍。

2 VACUUM 和 ANALYZE 的权限问题

一般来说PG的数据库在数据量较大的情况下,并且在数据进行大量变动的情况下,是需要注意一个数据库表可以进行vacuum 或者 analyze的操作必须是superuser 或者 此表的owner. 所以在权限方面,这两个操作并不一定非要是SUPERUSER 或 OWNER, 如果我们有一个专门对一些表进行定期VACUUM的需要的普通工作人员,则这样的就无法满足客户的需要。

Andrew Dunstan 提出了这个问题,让POSTGRESQL 在数据库的操作中有更多的灵活性。

举例,你可以在PG 16中通过

create role simon;

grant vaccum on table XXX to simon;

来对数据表进行一个VACUUM 的权限赋予,让这个simon虽然没有对这个表其他的权限,但他可以对这个表进行 vacuum 的操作。

同时针对PG16 也针对这个VACUUM的角色进行了设置 pg_vacuum_all_tables , grant pg_vacuum_all_tables to simon; 此时simon就可以针对这个这个权限,对数据库下所有的表进行vacuum的操作权利。

最后的一则信息,在POSTGRESQL 16 可以通过新的支持整数常量的非十进制表示法!PostgreSQL已经对字符串常量提供了强大的支持,E't', E'11', E'u0009'和U&'009'都表示相同的东西(一个“水平制表符”字符)。

这个功能是通过 John Naylor, Zhihong Yu, David Rowley , Dean Rasheed 等进行 patch的提供的,通过这个patch ,postgresql 将支持 8 , 16 以及二进制数据集合。

产生这样的想法的主要的来源还是数据的表达与理解的问题,一些非10进制的数据表达,可以表达更大的数字,并且对于一些程序员来说这样的表达方式更简便。

0 人点赞