E.1.1. 概述
PostgreSQL 17 包含许多新功能和增强功能,包括:
适用于
VACUUM的新内存管理系统,可减少内存消耗并提高整体 vacuuming 性能。新的 SQL/JSON 功能,包括构造函数、标识函数和
JSON_TABLE()函数,该函数用于将 JSON 数据转换为表表示形式。各种查询性能改进,包括使用流式 I/O 的顺序读取、高并发下的写入吞吐量以及搜索 btree 索引中的多个值。
逻辑复制增强功能,包括:
故障转移控制
pg_createsubscriber,一种从物理备用数据库创建逻辑副本的实用程序
pg_upgrade 现在在发布者和订阅者上保留复制槽
新的客户端连接选项
sslnegotiation=direct,用于执行直接 TLS 握手以避免往返协商。pg_basebackup 现在支持增量备份。
COPY添加了一个新选项ON_ERROR ignore,该选项允许在出现错误时继续执行复制操作。
以下部分将更详细地解释 PostgreSQL 17 的上述项目和其他新功能。
E.1.2. 迁移到版本 17
对于希望从任何先前版本迁移数据的用户,需要使用 pg_dumpall 或使用 pg_upgrade 或逻辑复制进行转储/恢复。有关迁移到新主要版本的一般信息,请参见Section 18.6。
版本 17 包含许多可能影响与以前版本的兼容性的更改。请注意以下不兼容情况:
更改功能以在维护操作期间使用安全search_path (Jeff Davis) §
这可以防止维护操作(
ANALYZE、CLUSTER、REFRESH MATERIALIZED VIEW、REINDEX或VACUUM)执行不安全的访问。表达式索引和物化视图使用的函数需要引用非默认 Schema,在创建函数时必须指定搜索路径。将
ago限制为仅在间隔值的末尾显示 (Joseph Koshakow) §§此外,还可以防止空间隔单位多次出现。
删除服务器变量 old_snapshot_threshold (Thomas Munro) §
此变量允许 vacuum 删除可能仍对正在运行的事务可见的行,如果稍后访问,则会导致 “snapshot too old” 错误。如果找到改进的实现,稍后可能会将此功能重新添加到 PostgreSQL 中。
更改初始会话用户超级用户状态的
SET SESSION AUTHORIZATION处理 (Joseph Koshakow) §新行为基于发出
SET SESSION AUTHORIZATION命令时会话用户的超级用户状态,而不是连接时会话用户的超级用户状态。删除模拟每个数据库用户的功能 (Nathan Bossart) §
db_user_namespace,此功能很少使用。在 Windows 上删除 wal_sync_method 值
fsync_writethrough(Thomas Munro) §此值与 Windows 上的
fsync相同。更改两个 WAL 文件名函数的文件边界处理(Kyotaro Horiguchi、Andres Freund、Bruce Momjian)§
函数
pg_walfile_name()和pg_walfile_name_offset()用于在 LSN 位于文件段边界上时报告上一个 LSN 段号;它现在返回当前的 LSN 分段。删除服务器变量
trace_recovery_messages因为它不再需要 (Bharath Rupireddy) §删除信息架构列
element_types。domain_default(彼得·艾森特劳特) §更改 pgrowlocks 锁定模式输出标签 (Bruce Momjian) §
移除
buffers_backend和buffers_backend_fsync从pg_stat_bgwriter(Bharath Rupireddy) §这些字段被视为对
pg_stat_io中的类似列冗余。重命名 pg_stat_statements 的 I/O 块读/写时序统计列 (Nazir Bilal Yavuz) §
这会将
blk_read_time重命名为shared_blk_read_time,并将blk_write_time重命名为shared_blk_write_time。更改
pg_attribute.attstattarget和pg_statistic_ext.stxstattarget将默认统计目标表示为NULL(Peter Eisentraut) § §重命名
pg_collation。colliculocaletocolllocale和pg_database.daticulocale至datlocale(Jeff Davis) §将列重命名为 ,重命名
num_dead_tuples为num_dead_item_ids,并添加dead_tuple_bytes(泽田正彦) § §max_dead_tuple_bytespg_stat_progress_vacuummax_dead_tuples在系统视图中重命名 SLRU 列
pg_stat_slru(Alvaro Herrera) §pg_stat_reset_slru()接受的列名也会更改。
E.1.3. 更改
您将在下面找到 PostgreSQL 17 与上一个主要版本之间变化的详细说明。
E.1.3.1. 服务器
E.1.3.1.1. 优化器
允许优化器通过考虑前面的行输出子句 (Jian Guo, Richard Guo, Tom Lane) §§ 中引用的列的统计信息和排序顺序来改进 CTE 计划
改进
IS NOT NULL和IS NULL查询限制的优化 (David Rowley, Richard Guo, Andy Fan) §§如果指定了
IS NULL,则从NOT NULL列的查询中删除IS NOT NULL限制,并消除对NOT NULL列的扫描。允许在
IS [NOT] UNKNOWN条件语句上的布尔列上进行分区修剪(David Rowley)§改进使用包含运算符 <@ 和 @> 时范围值的优化 (Kim Johan Andersson, Jian He) §
允许将相关
IN子查询转换为联接 (Andy Fan, Tom Lane) §改进分区表、继承父级和
UNION ALL查询上LIMIT子句的优化(Andy Fan、David Rowley) §允许在更多情况下并行运行查询节点 (Tom Lane) §
允许对
GROUP BY列进行内部排序以匹配ORDER BY(Andrei Lepikhov, Teodor Sigaev) §可以使用 server 变量 enable_group_by_reordering 禁用此功能。
允许
UNION(不带ALL)使用 MergeAppend (David Rowley) §修复 MergeAppend 计划以更准确地计算需要排序的行数 (Alexander Kuzmenkov) §
允许 GiST 和 SP-GiST 索引成为增量排序的一部分 (Miroslav Bendik) §
这对于第一列具有 GiST 和 SP-GiST 索引而其他列没有的
ORDER BY子句特别有用。
E.1.3.1.2. 索引
允许 btree 索引更有效地查找一组值,例如使用
constants 的 IN子句提供的值 (Peter Geoghegan, Matthias van de Meent) §允许使用并行工作程序创建 BRIN 索引 (Tomas Vondra, Matthias van de Meent) §
E.1.3.1.3. 一般性能
允许真空更有效地去除和冻结元组(Melanie Plageman,Heikki Linnakangas)§
由 vacuum 引起的 WAL 流量也更加紧凑。
允许 vacuum 更有效地存储元组引用(Masahiko Sawada,John Naylor) §§§§
此外,当 maintenance_work_mem 或 autovacuum_work_mem 较高时,vacuum 不再静默地局限于 1 GB 内存。
优化无索引关系的 vacuum 操作 (Melanie Plageman) §
将默认vacuum_buffer_usage_limit增加到 2MB (Thomas Munro) §
提高检查具有多个成员资格的角色时的性能 (Nathan Bossart) §
提高激烈竞争的 WAL 写入的性能 (Bharath Rupireddy) §
提高向客户端传输大块数据时的性能 (Melih Mutlu) §
允许使用新的系统变量 io_combine_limit (Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz) §§§ 对文件系统读取进行分组
E.1.3.1.4. 监控
创建系统视图
pg_stat_checkpointer(Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov) §§§相关列已从
pg_stat_bgwriter中删除,并添加到此新的系统视图中。改进对重置统计数据的控制 (Atsushi Torikoshi, Bharath Rupireddy) §§§
允许
pg_stat_reset_shared()(不带参数) 和 pg_stat_reset_shared(NULL)重置所有共享统计信息。允许 pg_stat_reset_shared('slru') 和pg_stat_reset_slru()(不带参数) 重置 SLRU 统计信息,这在 pg_stat_reset_slru(NULL) 中已经可以实现。添加与从备份中恢复WAL相关的日志消息(Andres Freund)§
为
信任连接添加log_connections日志行 (Jacob Champion) §添加日志消息以报告 walsender 获取和释放复制插槽 (Bharath Rupireddy) §
这是由 server 变量 log_replication_commands 启用的。
添加报告等待事件类型的系统视图
pg_wait_events(Bertrand Drouvot) §这对于为
pg_stat_activity中报告的 await 事件添加描述非常有用。允许真空报告索引处理的进度 (Sami Imseih) §
这显示在系统视图
pg_stat_progress_vacuum列indexes_total和indexes_processed中。
E.1.3.1.5. 权限
允许授予执行维护操作的权限 (Nathan Bossart) §
可以使用
MAINTAIN特权按表授予权限,也可以通过pg_maintain预定义角色按角色授予权限。允许的操作包括VACUUM、ANALYZE、REINDEX、REFRESH MATERIALIZED VIEW、CLUSTER和LOCK TABLE。允许具有
pg_monitor成员资格的角色执行pg_current_logfile()(Pavlo Golub, Nathan Bossart) §
E.1.3.1.6. 服务器配置
添加系统变量 allow_alter_system 以禁止
ALTER SYSTEM(Jelte Fennema-Nio, Gabriele Bartolini) §允许
ALTER SYSTEM设置无法识别的自定义服务器变量 (Tom Lane) §这也可以通过
GRANT ON PARAMETER实现。添加服务器变量 transaction_timeout 以限制事务的持续时间 (Andrey Borodin, Japin Li, Junwang Zhao, Alexander Korotkov) §§§
添加内置的独立于平台的排序规则提供程序 (Jeff Davis) §§§§
这支持
C和C.UTF-8排序规则。添加服务器变量 huge_pages_status 以报告 Postgres (Justin Pryzby) § 对大页面的使用情况
当 huge_pages 设置为
try时,这非常有用。添加服务器变量以禁用事件触发器 (Daniel Gustafsson) §
设置 event_triggers 允许临时禁用事件触发器以进行调试。
允许配置 SLRU 缓存大小(Andrey Borodin、Dilip Kumar、Alvaro Herrera)§
新的服务器变量包括 commit_timestamp_buffers、multixact_member_buffers、multixact_offset_buffers、notify_buffers、serializable_buffers、subtransaction_buffers 和 transaction_buffers。commit_timestamp_buffers、transaction_buffers 和 subtransaction_buffers 使用 shared_buffers 自动扩展。
E.1.3.1.7. 流式复制和恢复
添加对增量文件系统备份的支持(Robert Haas、Jakub Wartak、Tomas Vondra)§§
可以使用 pg_basebackup 的新
--incremental选项创建增量备份。新的应用程序pg_combinebackup允许操作基本和增量文件系统备份。允许创建 WAL 摘要文件(Robert Haas、Nathan Bossart、Hubert Depesz Lubaczewski)§§§§
这些文件记录了在 LSN 范围内更改的数据块号,对于增量文件系统备份非常有用。这由服务器变量 summarize_wal 和 wal_summary_keep_time 控制,并通过
pg_available_wal_summaries()、pg_wal_summary_contents()和pg_get_wal_summarizer_state()进行内省。将系统标识符添加到文件系统备份清单文件 (Amul Sul) §
这有助于检测无效的 WAL 使用情况。
当pg_basebackup将连接信息写入
postgresql.auto.conf时,允许写入连接字符串值dbname(Vignesh C、Hayato Kuroda)§添加列
pg_replication_slots。invalidation_reason报告无效插槽的原因 (Shveta Malik, Bharath Rupireddy) §§添加列
pg_replication_slots。inactive_since报告槽位不活动持续时间 (Bharath Rupireddy) §§§添加函数
pg_sync_replication_slots()以同步逻辑复制槽 (Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut) §§
E.1.3.1.8. 逻辑复制
添加应用程序pg_createsubscriber以从物理备用服务器 (Euler Taveira) § 创建逻辑副本
pg_upgrade迁移有效的逻辑槽和订阅(Hayato Kuroda、Hou Zhijie、Vignesh C、Julien Rouhaud、Shlok Kyal)§§
这允许逻辑复制在升级后快速继续。这仅适用于版本 17 或更高版本的旧 PostgreSQL 集群。
添加服务器变量sync_replication_slots以启用故障转移逻辑槽同步 (Shveta Malik, Hou Zhijie, Peter Smith) §§
为
CREATE/ALTER SUBSCRIPTION添加逻辑复制故障转移控制 (Shveta Malik, Hou Zhijie, Ajin Cherian) §§允许应用逻辑复制更改以在订阅者上使用哈希索引 (Hayato Kuroda) §
以前,只有 btree 索引可用于此目的。
如果订阅所有者的超级用户权限被撤销,则重新启动应用工作程序 (Vignesh C) §
这将强制重新验证。
添加
flush选项pg_logical_emit_message()(Michael Paquier) §这使得消息持久。
允许指定在订阅者可见之前必须同步的物理备用数据库 (Hou Zhijie, Shveta Malik) §§
新的 server 变量为 synchronized_standby_slots。
向
pg_stat_subscription(Peter Smith) § 添加工作人员类型列
E.1.3.2. 实用程序命令
添加新的
COPY选项ON_ERROR忽略以丢弃错误行(Damir Belyalov、Atsushi Torikoshi、Alex Shulgin、Jian He、Yugo Nagata)§§§§默认行为是
ON_ERROR stop。添加新
COPY选项LOG_VERBOSITY,报告COPY FROM忽略的错误行 (Bharath Rupireddy) §允许
COPY FROM报告处理过程中跳过的行数 (Atsushi Torikoshi) §这将显示在系统视图列
pg_stat_progress_copy中。tuples_skipped。在
COPY FROM中,允许轻松指定所有列都应该强制为 null 或不为 null(张明利)§允许分区表具有标识列 (Ashutosh Bapat) §
允许对分区表进行排除约束 (Paul A. Jungwirth) §
只要排除约束比较分区键列是否相等,其他列就可以使用特定于排除约束的比较。
添加更清晰的
ALTER TABLE方法,将列设置为默认统计目标(Peter Eisentraut)§新语法为
ALTER TABLE ... SET STATISTICS DEFAULT;仍然支持使用SET STATISTICS -1。允许
ALTER TABLE更改列的生成表达式 (Amul Sul) §语法为
ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION.允许在分区表上指定表访问方法 (Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier) §§
添加
DEFAULTALTER TABLE .. SET ACCESS METHOD(Michael Paquier) § 的设置
E.1.3.2.1. 解释
允许
EXPLAIN报告优化器内存使用情况 (Ashutosh Bapat) §该选项称为
MEMORY。添加
EXPLAIN选项SERIALIZE以报告转换数据以进行网络传输的成本 (Stepan Rutz, Matthias van de Meent) §将本地 I/O 块读/写时序统计信息添加到
EXPLAIN的BUFFERS输出 (Nazir Bilal Yavuz) §改进
EXPLAIN对 SubPlan 节点和输出参数的显示(Tom Lane、Dean Rasheed)§将 JIT
deform_counter详细信息添加到EXPLAIN(Dmitry Dolgov) §
E.1.3.3. 数据类型
允许
interval数据类型支持+/-无穷大值(Joseph Koshakow、Jian He、Ashutosh Bapat)§如果类型是在同一事务中创建的,则允许使用通过
ALTER TYPE添加的ENUM(Tom Lane) §这在以前是不允许的。
E.1.3.4. 合并
允许
MERGE修改可更新视图 (Dean Rasheed) §添加到
WHEN NOT MATCHED BY SOURCEMERGE(Dean Rasheed) §已支持对目标行执行
WHEN NOT MATCHED。允许
MERGE使用RETURNING子句 (Dean Rasheed) §新的
RETURNING函数merge_action()报告生成该行的 DML。
E.1.3.5. 函数
添加函数
JSON_TABLE()以将JSON数据转换为表表示形式(Nikita Glukhov、Teodor Sigaev、Oleg Bartunov、Alexander Korotkov、Andrew Dunstan、Amit Langote、Jian He)§§此函数可以在
SELECT查询的FROM子句中用作元组源。添加 SQL/JSON 构造函数
JSON()、JSON_SCALAR()和JSON_SERIALIZE()(Nikita Glukhov、Teodor Sigaev、Oleg Bartunov、Alexander Korotkov、Andrew Dunstan、Amit Langote)§添加 SQL/JSON 查询函数
JSON_EXISTS()、JSON_QUERY()和JSON_VALUE()(Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Peter Eisentraut, Jian He) §§§§§添加 jsonpath 方法以将
JSON值转换为其他JSON数据类型 (Jeevan Chalke) §jsonpath 方法是
.bigint()、 、.boolean().date()、.decimal([precision [, scale]]).integer().number().string().time().time_tz().timestamp()和.timestamp_tz()。添加
to_timestamp()时区格式说明符 (Tom Lane) §TZ接受时区缩写或数字偏移量,而OF仅接受数字偏移量。允许会话时区由
AS LOCAL(Vik Fearing) § 指定这在转换时间戳值、添加和删除时区时非常有用,而不是指定文本会话时区。
添加函数
uuid_extract_timestamp()并uuid_extract_version()返回 UUID 信息(Andrey Borodin) §添加函数以生成指定范围内的随机数 (Dean Rasheed) §
这些函数是
random(min, max),它们采用integer、bigint和numeric类型的值。添加函数以将整数转换为二进制和八进制字符串(Eric Radman,Nathan Bossart)§
函数是
to_bin()和to_oct()。添加 Unicode 信息函数 (Jeff Davis) §
函数
unicode_version()返回 Unicode 版本,icu_unicode_version()返回 ICU 版本,如果为字符分配了 Unicode 码位,则返回 unicode_assigned()。添加函数
to_regtypemod()以返回类型规范的类型修饰符 (David Wheeler, Erik Wienhold) §添加
pg_basetype()函数以返回域的基本类型(史蒂夫·查韦斯)§添加函数
pg_column_toast_chunk_id()以返回值的 TOAST 标识符 (Yugo Nagata) §如果值未存储在 TOAST 中,则返回
NULL。
E.1.3.6. PL/pgSQL#
允许 plpgsql
%TYPE和%ROWTYPE规范表示非数组类型的数组(Quan Zongliang、Pavel Stehule)§允许 plpgsql
%TYPE规范引用复合列 (Tom Lane) §
E.1.3.7. libpq
添加 libpq 函数以更改角色密码 (Joe Conway) §
新函数
PQchangePassword()在将新密码发送到服务器之前对其进行哈希处理。添加 libpq 函数以关闭门户和准备好的语句 (Jelte Fennema-Nio) §
函数是
PQclosePrepared()、 、PQclosePortal()PQsendClosePrepared()和PQsendClosePortal()。添加 libpq API,它允许阻止和非阻止取消请求,如果已在使用,则进行加密 (Jelte Fennema-Nio) §
以前仅支持阻止、未加密的取消请求。
添加 libpq 函数
PQsocketPoll()以允许轮询网络套接字(Tristan Partin、Tom Lane)§§添加 libpq 函数
PQsendPipelineSync()以发送管道同步点(Anton Kirilov)§这类似于
PQpipelineSync(),但除非达到输出缓冲区的大小阈值,否则它不会刷新到服务器。添加 libpq 函数
PQsetChunkedRowsMode()以允许以块形式检索结果(Daniel Vérité)§允许 TLS 连接,而无需网络往返协商(Greg Stark、Heikki Linnakangas、Peter Eisentraut、Michael Paquier、Daniel Gustafsson)§§§§
这是通过客户端选项
sslnegotiation=direct启用的,需要 ALPN,并且仅适用于 PostgreSQL 17 及更高版本的服务器。
E.1.3.8. psql
改进默认和空权限的 psql 显示(Erik Wienhold、Laurenz Albe)§
命令
\dp现在为空权限显示(none);default 仍显示为 empty。让反斜杠命令 honor
\pset null(Erik Wienhold, Laurenz Albe) §以前
\pset null被忽略。允许 psql 的
\watch在返回最少行数后停止(Greg Sabino Mullane)§参数为
min_rows。允许使用 control-C 取消 psql 连接尝试 (Tristan Partin) §
允许 psql 遵守
FETCH_COUNT非SELECT查询 (Daniel Vérité) §改进 psql Tab 键补全 (Dagfinn Ilmari Mannsåker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He) §§§§
E.1.3.9. 服务器应用程序
添加应用程序pg_walsummary以转储 WAL 摘要文件 (Robert Haas) §
允许批量恢复 pg_dump 的大型对象 (Tom Lane) §
这允许恢复许多大型对象以避免事务限制并并行恢复。
添加pg_dump选项
--exclude-extension(Ayush Vatsa) §允许 pg_dump、pg_dumpall 和 pg_restore 指定文件中的包含/排除对象(Pavel Stehule、Daniel Gustafsson)§
该选项称为
--filter。将
--sync-method参数添加到多个客户端应用程序(Justin Pryzby、Nathan Bossart)§这些应用程序包括 initdb、pg_basebackup、pg_checksums、pg_dump、pg_rewind 和 pg_upgrade。
添加pg_restore选项
--transaction-size以允许在事务批处理中恢复对象(Tom Lane)§这允许交易批处理的性能优势,而不会出现交易块过大的问题。
将 pgbench 调试模式选项从
-d--debug更改为 (Greg Sabino Mullane) §选项
-d现在用于数据库名称,也可以使用新的--dbname选项。添加 pgbench 选项
--exit-on-abort以在任何客户端中止后退出 (Yugo Nagata) §添加 pgbench 命令
\syncpipeline以允许发送同步消息 (Anthonin Bonnefoy) §允许pg_archivecleanup删除备份历史文件 (Atsushi Torikoshi) §
选项为
--clean-backup-history。为 pg_archivecleanup (Atsushi Torikoshi) § 添加一些长选项
长选项包括
--debug、 和--dry-run--strip-extension。允许 pg_basebackup 和 pg_receivewal 在其连接规范中使用 dbname (Jelte Fennema-Nio) §
这对于对数据库名称敏感的连接池程序非常有用。
添加pg_upgrade选项
--copy-file-range(Thomas Munro) §这在 Linux 和 FreeBSD 上受支持。
允许 reindexdb
--index并行处理来自不同表的索引(Maxim Orlov、Svetlana Derevyanko、Alexander Korotkov)§允许 reindexdb、vacuumdb 和 clusterdb 处理与模式匹配的所有数据库中的对象 (Nathan Bossart) §§§
新选项
--all控制此行为。
E.1.3.10. 源代码
删除对 OpenSSL 1.0.1 的支持 (Michael Paquier) §
使用 CPU AVX-512 指令进行位计数(Paul Amonson、Nathan Bossart、Ants Aasma)§§
需要 LLVM 版本 10 或更高版本 (Thomas Munro) §
在 64 位 LoongArch CPU 上使用原生 CRC 指令 (旭东杨) §
删除 AIX 支持 (Heikki Linnakangas) §
删除特定于 Microsoft Visual Studio 的 PostgreSQL 构建选项 (Michael Paquier) §
Meson 现在是 Visual Studio 构建的唯一可用方法。
删除配置选项
--disable-thread-safety(Thomas Munro, Heikki Linnakangas) §§现在,我们假设所有支持的平台都有足够的线程支持。
删除配置选项
--with-CC(Heikki Linnakangas) §设置
CC环境变量现在是指定编译器的唯一支持方法。用户定义的数据类型接收函数将不再接收其以 null 结尾的数据 (David Rowley) §
添加增量
JSON解析器以用于大型JSON文档 (Andrew Dunstan) §将顶级
README文件转换为 Markdown (Nathan Bossart) §删除不再需要的顶级
INSTALL文件 (Tom Lane) §删除 make
distprep的选项 (Peter Eisentraut) §添加对 Android 共享库的 make 支持 (Peter Eisentraut) §
添加对注入点的后端支持 (Michael Paquier) §§§§
这用于服务器调试,必须在服务器编译时启用它们。
添加动态共享内存注册表 (Nathan Bossart) §
这允许在启动时未初始化的共享库协调动态共享内存访问。
修复
emit_log_hook以对同一查询使用与其他日志记录相同的时间值(Kambam Vinay,Michael Paquier)§改进使用
jsonpath进行谓词检查的文档 (David Wheeler) §
E.1.3.11. 其他模块
允许将具有非加入资格的加入推送到外部服务器和自定义扫描(Richard Guo,Etsuro Fujita)§
需要修改外部数据包装器和自定义扫描才能处理这些情况。
允许将
EXISTS和IN子查询下推到postgres_fdw外部服务器 (Alexander Pyhalov) §增加默认的外部数据包装器元组成本(David Rowley、Umair Shahid)§§
此值由优化器使用。
允许在 ltree 列上创建哈希索引 (Tommy Pavlicek) §
这还可以在 ltree 列上启用 hash join 和 hash 聚合。
允许非重音字符翻译规则包含空格和引号 (Michael Paquier) §
unaccent.rules文件的语法已更改。允许 amcheck 使用新选项
--checkunique检查唯一约束冲突(Anastasia Lubennikova、Pavel Borisov、Maxim Orlov)§删除 adminpack contrib 扩展 (Daniel Gustafsson) §
现在生命周期已结束的 pgAdmin III 使用了这。
允许
ALTER OPERATOR设置更多优化属性 (Tommy Pavlicek) §这对于扩展非常有用。
允许扩展定义自定义等待事件 (Masahiro Ikeda) §§§§
自定义等待事件已添加到 postgres_fdw 和 dblink。
添加pg_buffercache函数
pg_buffercache_evict()以允许共享缓冲区驱逐(Palak Chaturvedi,Thomas Munro)§这对于测试很有用。
E.1.3.11.1. pg_stat_statements
将存储在
pg_stat_statements中的保存点名称替换为占位符 (Greg Sabino Mullane) §这大大减少了记录
SAVEPOINT、RELEASE SAVEPOINT和ROLLBACK TO SAVEPOINT命令所需的条目数。将存储在
pg_stat_statements中的两阶段提交 GID替换为占位符 (Michael Paquier) §这大大减少了记录
PREPARE TRANSACTION、COMMIT PREPARED和ROLLBACK PREPARED所需的条目数。Track
DEALLOCATEinpg_stat_statements(Dagfinn Ilmari Mannsåker, Michael Paquier) §DEALLOCATE名称作为占位符存储在pg_stat_statements中。添加
pg_stat_statements的本地 I/O 块读/写时序统计列 (Nazir Bilal Yavuz) §§新列为
local_blk_read_time和local_blk_write_time。将 JIT deform_counter详细信息添加到
pg_stat_statements(Dmitry Dolgov) §向
pg_stat_statements_reset()添加可选的第四个参数 (minmax_only) 以允许仅重置最小/最大统计数据 (Andrei Zubkov) §此参数默认为
false。添加
pg_stat_statements列stats_since和minmax_stats_since以跟踪条目创建时间和上次最小/最大重置时间(Andrei Zubkov)§
E.1.4. 致谢
链接




