git.postgresql.org
的习惯, 在我的github里已经持续发表了PostgreSQL dev版本的新特性. 有兴趣的朋友关注github: https://github.com/digoal/blog/tree/master/202404
这篇信息主要整理之前发布的内容, 来看看即将封版(不再接收新特性的commit, 进入alpha,beta,release流程)的PostgreSQL 17到底值不值得期? PostgreSQL 17新增特性如下:
1、支持块级别增量备份与恢复: 对于特别大的库非常棒, 数据文件的备份终于不需要每次都全拷贝了, 可以只备份上次备份以来修改过的数据块.
2、支持逻辑复制failover、switchover: 16支持了standby开启逻辑复制功能, 17的增强是在基于流复制的HA解决方案中支持了逻辑复制的failover(而且是0丢失的).
3、支持COPY错误处理: 以前COPY遇到异常的行会报错退出, 现在支持了skip error row. 不过还有记录error row, 支持也是早晚的事.
4、JSON类型处理能力增强: 主要增强了jsonpath的功能, 总之使用PG处理JSON是很顺手的.
5、vacuum性能改进: 引入TidStore数据结构, 打破存储dead tupleids的上限(只要内存足够, 索引再也不需要被多次扫描), 并且大幅度提升vacuum了效率?
6、index 性能优化: 支持并行创建brin索引; gist/sp-gist索引支持增量排序场景; btree倒序增强等.
7、高并发锁竞争优化: 通过一系列wal锁优化, 提升高并发写入性能.
8、性能优化: 批量导入性能提升; merge append提升union性能; 通过增量排序提升group by性能; 减少分区表partitionwise join内存消耗; postgres_fdw 支持semi-join pushdown等;
9、新增GUC参数: 新增了一系列的GUC参数提升数据库管理灵活性.
10、SQL语法、函数功能增强: 分区表分裂与合并、merge语法、生成列、exclude约束等功能增强.
11、管理手段增强: 支持login 事件、新增维护角色、读写分离一致性函数支持等.
12、内部统计信息、系统视图增强: 新增等待事件视图、增强检查点统计信息、增强并行操作统计信息、增强范围类型的统计信息维度、增强standby统计信息、增强io统计信息
13、table access method 接口增强: 新增了自定义Option的接口, undo回滚段am可能快来了.
14、扩展接口能力增强: 新增钩子、支持自定义等待事件、新增自定义注入点、支持DSM注册等.
15、wire protocol、libpq协议增强: 继续加强吧, 希望国产数据库厂商开发兼容mysql、sqlserver等协议更容易.
看完是不是有点失落? 为什么xid64、undo回滚段、TDE等万众期待的功能还是没有等来. 但17依旧是值得期待的版本, 毕竟块级增量备份和恢复、逻辑复制failover、垃圾回收性能改进(一定程度缓解了xid wrapped问题)、高并发性能提升都是不错的. 另外AM接口不断增强, 估计undo回滚段管理未来的版本也快来了.
整理好的详细文档
全部是链接, 如果公众号打不开, 请点击阅读原文, 打开github.
支持块级别增量备份与恢复:
《PostgreSQL 17 preview - 内置块级别物理增量备份(INCREMENTAL backup/pg_combinebackup)功能》
《PostgreSQL 17 preview - Add new pg_walsummary tool》
《PostgreSQL 17 preview - Add new function
pg_get_wal_summarizer_state()
分析为聚合入 pg_wal/summaries 的pid内存中的wal片段信息》《PostgreSQL 17 preview - 增量备份patch: Add the system identifier to backup manifests》
支持逻辑复制failover、switchover:
《PostgreSQL 17 preview - pg_upgrade大版本升级支持保留逻辑订阅全部信息 (preserve the full subscription's state)》
《PostgreSQL 17 preview - 主库视图
pg_replication_slots
.conflict_reason
支持逻辑复制冲突原因跟踪》《PostgreSQL 17 preview - 支持逻辑复制槽failover to 流复制standby节点.
pg_create_logical_replication_slot(... failover = true|false ...)
》《PostgreSQL 17 preview - preparation for replicating unflushed WAL data》
《PostgreSQL 17 preview - sync logical replication slot LSN, Failover & Switchover》
《PostgreSQL 17 preview - Add a new slot sync worker to synchronize logical slots》
《PostgreSQL 17 preview - 增加GUC standby_slot_names , 保证这些standby已接收并flush所有逻辑slot向下游发送逻辑数据对应的WAL》
《PostgreSQL 17 preview - pg_createsubscriber支持将物理从库转换为逻辑从库》
《PostgreSQL 17 preview - 跟踪slot断联时间戳
pg_replication_slots.inactive_since
》
支持COPY错误处理:
《PostgreSQL 17 preview - Add new COPY option SAVE_ERROR_TO (copy跳过错误行)》
《PostgreSQL 17 preview - pg_stat_progress_copy Add progress reporting of skipped tuples during COPY FROM》
《PostgreSQL 17 preview - COPY LOG_VERBOSITY notice ERROR信息》
JSON类型处理能力增强:
《PostgreSQL 17 preview - Implement various jsonpath methods》
《PostgreSQL 17 preview - JSON_TABLE: Add support for NESTED paths and columns》
vacuum性能改进:
《PostgreSQL 17 preview - 增加index vacuum 进度打印》
《PostgreSQL 17 preview - Optimize vacuuming of relations with no indexes 降低wal产出》
《PostgreSQL 17 preview - 解除vacuumdb,clusterdb,reindexdb的某些options组合限制》
《PostgreSQL 17 preview - 使用TidStore数据结构存储dead tupleids, 提升vacuum效率, 为什么PG单表不建议超过8.9亿条记录?》
《PostgreSQL 17 preview - vacuum_buffer_usage_limit调大默认值, 减少vacuum造成的wal flush, 提升vacuum速度》
index 性能优化:
《PostgreSQL 17 preview - Allow Incremental Sorts on GiST and SP-GiST indexes》
《PostgreSQL 17 preview - btree index backward scan (order by desc 场景)优化》
《PostgreSQL 17 preview - Allow parallel CREATE INDEX for BRIN indexes》
高并发锁竞争优化:
《PostgreSQL 17 preview - 优化wal insert lock, 提升高并发写入吞吐性能》
《PostgreSQL 17 preview - Reduce rate of walwriter wakeups due to async commits》
《PostgreSQL 17 preview - WAL锁竞争优化 - reading WAL buffer contents without a lock, Additional write barrier in AdvanceXLInsertBuffer()》
性能优化:
《PostgreSQL 17 preview - 函数parser阶段优化, 函数guc into lists避免parser》
《PostgreSQL 17 preview - 删除snapshot too old特性, 将引入新实现方式》
《PostgreSQL 17 preview - postgres_fdw 支持semi-join pushdown (exists (...))》
《PostgreSQL 17 preview - 将unstable hashfunc剥离, 提升in-memory场景哈希计算性能和算法自由度》
《PostgreSQL 17 preview - 优化器增强, group by支持Incremental Sort, GUC: enable_group_by_reordering》
《PostgreSQL 17 preview - 引入新的smgr, 优化bulk loading》
《PostgreSQL 17 preview - Add
--copy-file-range
option topg_upgrade
》《PostgreSQL 17 preview - 减少分区表partitionwise join内存消耗》
《PostgreSQL 17 preview - 使用 Merge Append 提升 UNION 性能》
《PostgreSQL 17 preview - pg_restore
--transaction-size=N
支持N个对象封装为一个事务提交》
新增GUC参数:
《PostgreSQL 17 preview - Add GUC: event_triggers . for temporarily disabling event triggers》
《PostgreSQL 17 preview - Allow ALTER SYSTEM to set unrecognized custom GUCs.》
《PostgreSQL 17 preview - XX000 内部错误 backtrace, add GUC backtrace_on_internal_error》
《PostgreSQL 17 preview - allow_alter_system GUC控制 是否允许
alter system
修改postgresql.auto.conf
》《PostgreSQL 17 preview - 新增 GUC: or_to_any_transform_limit 控制
OR to ANY
转换》《PostgreSQL 17 preview - 新增 GUC trace_connection_negotiation : 跟踪客户端 SSLRequest or GSSENCRequest packet》
SQL语法、函数功能增强:
《PostgreSQL 17 preview - plpgsql 支持定义
%TYPE
%ROWTYPE
数组变量类型》《PostgreSQL 17 preview - 支持修改生成列表达式
alter table ... ALTER COLUMN ... SET EXPRESSION AS (express)
》《PostgreSQL 17 preview - Support identity columns in partitioned tables》
《PostgreSQL 17 preview - 简化exclude约束用法, 对primary key,unique约束增加without overlaps可选项》
《PostgreSQL 17 preview - Add RETURNING support to MERGE》
《PostgreSQL 17 preview - 增加uuid功能函数: 提取UUID值里面的时间戳 和 生成UUID值的函数版本》
《PostgreSQL 17 preview - 新增返回某个范围内的随机数的随机函数
random(min, max)
》《PostgreSQL 17 preview - Add support for
MERGE ... WHEN NOT MATCHED BY SOURCE
》《PostgreSQL 17 preview - 使用pg_basetype 获得domain类型的基础类型》
《PostgreSQL 17 preview - Implement
ALTER TABLE ... MERGE|SPLIT PARTITION
... command》
管理手段增强:
《PostgreSQL 17 preview - 内置支持login event trigger》
《PostgreSQL 17 preview - Add tests for XID wraparound》
《PostgreSQL 17 preview - pgbench工具新增meta语法syncpipeline,
pgbench: Add \syncpipeline
》《PostgreSQL 17 preview - 引入MAINTAIN权限及pg_maintain预制角色》
《PostgreSQL 17 preview - 新增 "builtin" collation provider》
《PostgreSQL 17 preview - 通过pg_wal_replay_wait()支持读写分离pool实现跨实例的读写一致性》
内部统计信息、系统视图增强:
《PostgreSQL 17 preview - Add new parallel message type to progress reporting.》
《PostgreSQL 17 preview - Add system view pg_wait_events》
《PostgreSQL 17 preview - Add JIT deform_counter》
《PostgreSQL 17 preview - 添加checkpoint delay等待事件》
《PostgreSQL 17 preview - Add
local_blk_{read|write}_time
I/O timing statistics for local blocks》《PostgreSQL 17 preview - Introduce pg_stat_checkpointer》
《PostgreSQL 17 preview - improve range type pg_stats》
《PostgreSQL 17 preview - 增强standby节点检查点统计信息》
《PostgreSQL 17 preview - Add EXPLAIN (MEMORY) to report planner memory consumption》
table access method 接口增强:
《PostgreSQL 17 preview - Add support for
DEFAULT
inALTER TABLE .. SET ACCESS METHOD
》《PostgreSQL 17 preview - 支持修改分区表access method》
《PostgreSQL 17 preview - 寻找undo-based table access methods的蛛丝马迹》
《PostgreSQL 17 preview - 频繁提交table access method相关patch, undo-based table access methods真的快来了吗?》
《PostgreSQL 17 preview - table AM增强: Custom reloptions for table AM》
扩展接口能力增强:
《PostgreSQL 17 preview - 增加alter table部分属性hook, 未来可定制化审计功能》
《PostgreSQL 17 preview - 支持自定义等待事件》
《PostgreSQL 17 preview - Introduce the dynamic shared memory registry (DSM 注册器)》
《PostgreSQL 17 preview - 新增代码注入功能(enable-injection-points), 类似hook.》
《PostgreSQL 17 preview - 引入读写原子操作函数接口with full barrier semantics》
《PostgreSQL 17 preview - 支持在申请时指定动态共享内存区域初始、最大段size》
《PostgreSQL 17 preview - 代码注入(injection_points)功能增强, Introduce runtime conditions》
libpq协议增强:
《PostgreSQL 17 preview - libpq: Add support for Close on portals and statements , 释放绑定变量语句入口(prepared statements)》
《PostgreSQL 17 preview - 增加wire protocol头文件》
《PostgreSQL 17 preview - libpq新增
PQchangePassword()
接口, 防止alter user修改密码时明文被记录在SQL活跃会话、log、pg_stat_statements中》
END
关于Klustron
Klustron同时支持MySQL和PostgreSQL数据库连接协议和SQL语法的分布式HTAP数据库系统,聚焦于解决各行业的应用软件、Web系统和SaaS云服务在存储、管理和利用海量关系型数据中存在的各种问题,并致力于提供支撑高并发高负载的事务处理和数据读写服务,进而助力应用软件开发商、服务商,一起为最终用户最大限度地创造价值。
欢迎大家下载和安装Klustron数据库集群,并免费使用(无需注册码)。
Klustron 完整软件包下载:
http://downloads.klustron.com/
如需购买请邮箱联系sales_vip@klustron.com,有相关问题欢迎添加下方小助手微信联系🌹
点击👆上方,关注获取源代码及技术信息~