PostgreSQL 13版本更新小结

我从一个使用者的角度,简单罗列了一下PG13大版本的更新,这些内容我觉得是对业务用户,对DBA比较常用,也是影响比较大的点。

简单总结的话——PG13对DBA更友好了~~~

参数变更

wal_keep_segments更名为wal_keep_size,按MB为单位设置大小,不再是按照之前的WAL文件个数来设置

wal_keep_size = wal_keep_segments * wal_segment_size (typically 16MB)

服务端的功能变更

一、分区表

  • 查询优化器能更智能去做分区裁剪,需要打开“enable_partition_pruning”参数(默认就是on)
  • 能在更多的场景下使用分区表之间的join,需要打开“enable_partitionwise_join”参数(默认是off),但是这个参数打开之后,在执行计划生成期间,会占用更多的CPU和内存
  • 支持行级before触发器
  • 支持在逻辑复制中发布/订阅分区表,以前是需要每个分区子表单独发布/订阅,现在可以通过父表自动发布

二、索引

  • Btree索引引入了个名为deduplicated的技术,能有效减小索引大小,当索引包含很多重复的键值的时候
  • 强制要求索引的排序规则和列的排序规则保持一致(collations)

三、性能相关

  • 支持增量排序
  • 追加了一个hash_mem_multiplier参数,当有一个大的聚合查询的时候,允许hash聚合的结果集落盘
  • 单纯的insert行为可以出发autovacuum,以前只会出发autoanalyze,目的是尽快的去更新行的可见性标志位(infomask),实施freeze的行为
  • 提升了超大表的truncate性能
  • int转text性能提升

四、监控相关

  • 支持在explainauto_explainautovacuumpg_stat_statements内跟踪WAL使用情况
  • 允许以采样的模式去日志里记录SQL,涉及log_statement_sample_rate参数
  • 追加了一个backtrace_functions参数,当C函数执行报错的时候,可以记录函数堆栈信息,不是全平台支持,且堆栈信息的多寡取决于编译选项,对开发人员比较友好

五、系统视图

  • pg_stat_activity里面追加了leader_pid的列,可以看并行进程的父进程是谁
  • 追加pg_stat_progress_basebackup来追踪备份进度
  • 追加pg_shmem_allocations来查看share buffer的使用情况
  • 追加pg_stat_slru来观察SLRU缓存
  • track_activity_query_size最高可以设置到1MB,以前100KB

六、等待事件

简单列一下追加的事件名称,没有细看

  • VacuumDelay:vacuum 延迟
  • BackupWaitWalArchive:等待归档
  • RecoveryPause:recovery暂停
  • RecoveryConflictSnapshot
  • RecoveryConflictTablespace

流复制和恢复相关

  • primary_conninfoprimary_slot_name这两个参数,可以通过reload的方式更改,不再需要重启
  • 如果没有指定永久复制槽,PG会使用临时复制槽,但是需要设置wal_receiver_create_temp_slot参数
  • 追加max_slot_wal_keep_size参数,控制复制槽最多保留多少WAL。如果超过这个阈值,复制槽会失效,默认是-1
  • 备库提升为主的时候如果未到预期的目标点,会报错,以前是会恢复到WAL的最新点就结束(有多少WAL就恢复多少)

SQL

  • vacuum支持并行处理索引
  • 对分区表做lock table,不再检查子表的权限
  • 支持alter table将生成列变为普通列
  • alter view语法修改视图的列名,以前是通过alter table rename column的方式改,比较迷惑的一个语法

数据类型

追加了一个xid8的SQL数据类型,用于表达完整的事务号,即64位事务号。但是!数据库内部依旧是用xid来表示事务号的。。。

函数

  • 支持对pg_lsnmin()max()聚合操作
  • 追加了gen_random_uuid()函数用于生成version-4 UUIDs
  • 事务号相关的函数,支持xid8类型,也兼容以前的xid
  • 支持将extension内的一些对象(函数,物化视图,索引和触发器)和extension本身之间的依赖关系解除,通过ALTER .. NO DEPENDS ON

服务端命令

  • 追加pg_verifybackup命令,用于验证备份集
  • vacuumdb命令可以并行,指定--parallel选项
  • reindexdb命令可以并行,指定--jobs选项

你可能感兴趣的:(PostgreSQL 13版本更新小结)