上海品茶

您的当前位置:上海品茶 > 报告分类 > PDF报告下载

3-崔鹏-PostgreSQL16新特性解析.pdf

编号:155542 PDF 31页 941.14KB 下载积分:VIP专享
下载报告请您先登录!

3-崔鹏-PostgreSQL16新特性解析.pdf

1、PostgreSQL16新特性解析演讲人 崔鹏公司&职位 海能达通信股份有限公司&数据库团队负责人PG16特性增强概述16版本迁移不兼容项概述多维度介绍16版本功能性能等提升CONTENTPG16特性增强概述核心增强 允许并行化和内部右right hash joinsFULLOUTER 添加 SQL/JSON 构造函数和标识函数优化器/数据类型 提高vacuum freezing性能 增加对 中的用户名和数据库名称以及 中的用户名的正则表达式匹配的支持 pg_hba.conf pg_ident.conf 允许使用新视图监视 I/O 统计信息pg_stat_io监控管理 允许从备用服务器进行逻辑

2、复制 允许逻辑复制订户并行应用大型事务复制性能提升03libpq负载平衡02COPY01查询并行性PostgreSQL 16在查询执行方面进行了性能改进。这个版本增加了更多的查询并行性,包括允许并行执行FULL和RIGHT连接,以及并行执行string_agg和array_agg聚合函数。此外,PostgreSQL 16可以在SELECT DISTINCT查询中使用增量排序。它还对窗口查询进行了一些优化,改进了RANGE和LIST分区的查找,并支持RIGHT和OUTER查询中的“反连接”。PostgreSQL 16还可以使用COPY将并发批量加载数据的性能提高300%。该版本还引入了对x86和

3、ARM架构下使用SIMD的CPU加速的支持,包括对处理ASCII和JSON字符串、数组和子事务搜索的优化。另外,PostgreSQL 16在libpq(PostgreSQL的客户端库)中引入了负载平衡。逻辑复制增强逻辑复制允许PostgreSQL用户实时地将数据流传输到其他PostgreSQL或其他实现逻辑协议的外部系统。在PostgreSQL 16之前,用户只能在主实例上创建逻辑复制发布者。PostgreSQL 16增加了在备用实例上执行逻辑解码的能力,为用户提供了更多的选择来分配他们的工作负载,例如,使用一个比主用实例不那么忙的备用实例来逻辑复制更改。PostgreSQL 16还对逻辑复制

4、进行了一些性能改进。这包括允许订阅者并行应用大型事务,在UPDATE或DELETE操作期间使用除PRIMARY KEY以外的索引执行查找,以及允许在初始化期间使用二进制格式复制表。并列关系010302备用实例上执行逻辑解码UPDATE或DELETE操作二进制格式复制表开发人员的经验PostgreSQL 16继续实现SQL/JSON标准来操作JSON数据,包括对SQL/JSON构造函数(例如JSON_ARRAY(),JSON_ARRAYAGG()等)和身份函数(IS JSON)的支持。这个版本还增加了SQL标准的ANY_VALUE聚合函数,该函数返回聚合集中的任意值。为方便起见,PostgreS

5、QL 16现在允许指定非十进制整数字面值,如0 xff、0000777和0b101010,并使用下划线作为千位分隔符,如5_432。这个版本为psql客户端增加了对扩展查询协议的支持。用户可以执行查询,例如SELECT 1+2,并使用bind命令替换变量。ANY_VALUESQL/JSONJSON_ARRAY()允许指定非十进制整数字面值安全特性PostgreSQL 16继续让用户能够授予特权访问某些功能,也不需要超级用户具有新的预定义角色。其中包括:pg_maintenance和pg_create_subscription,前者支持执行VACUUM、ANALYZE、REINDEX等操作,后者

6、允许用户创建逻辑复制订阅。此外,从这个版本开始,逻辑复制订阅者将以表所有者的身份执行表上的事务,而不是超级用户。PostgreSQL 16现在允许你在pg_hba.conf和pg_identity.conf文件中使用正则表达式来匹配用户名和数据库名。此外,PostgreSQL 16增加了在pg_hba.conf和pg_identity.conf中包含其他文件的能力。PostgreSQL 16还增加了对SQL标准SYSTEM_USER关键字的支持,该关键字返回用于建立会话的用户名和身份验证方法。PostgreSQL 16还增加了对Kerberos凭据委托的支持,它允许像postgres_fdw和

7、dblink这样的扩展使用经过身份验证的凭据连接到其他服务。这个版本还为客户端添加了几个新的面向安全的连接参数。这包括require_auth,客户机可以在其中指定它愿意从服务器接受哪些身份验证方法。您现在可以将sslrootcert设置为system,以指示PostgreSQL使用客户端操作系统提供的受信任证书颁发机构(CA)存储。监控与管理PostgreSQL 16增加了几个新的监控特性,包括新的pg_stat_io视图,它提供I/O统计信息。这个版本还提供了上一次扫描表或索引的时间戳。对于用于pg_stat_activity的规范化算法也有改进。此版本包括对页面冻结策略的改进,这有助于真

8、空和其他维护操作的性能。PostgreSQL 16还改进了对文本排序的一般支持,提供了文本排序的规则。PostgreSQL 16将ICU设置为默认的排序提供程序,并且还增加了对预定义的unicode和ucs_basic排序的支持。PostgreSQL 16为pg_dump添加了额外的压缩选项,包括对lz4和zstd压缩的支持。pg_stat_activityunicode和ucs_basicpg_stat_ioICU16版本迁移不兼容项概述不兼容项11.更改 PL/pgSQL 绑定游标变量的赋值规则(Tom Lane)2.以前,在游标赋值期间,此类变量的字符串值被设置为与变量名称匹配;现在它将

9、在 OPEN 期间分配,并且与变量名称不匹配。要恢复以前的行为,请在 之前将所需的门户名称分配给游标变量。OPEN3.不允许主键的 NULLS NOT DISTINCT 索引(Daniel Gustafsson)4.将 REINDEX DATABASE 和 reindexdb 更改为不处理系统目录上的索引(Simon Riggs)5.仍然可以使用 和 reindexdb-system 处理此类索引。REINDEX SYSTEM6.收紧对继承表和分区表的 GENERATED 表达式限制(Amit Langote、Tom Lane)父表/分区表和子表/分区表的列必须都具有相同的生成状态,但现在实际

10、的生成表达式可能不同。不兼容项21.删除pg_walinspect函数和(Bharath Rupireddy)pg_get_wal_records_info_till_end_of_wal()pg_get_wal_stats_till_end_of_wal()2.将服务器变量重命名为 debug_parallel_query(David Rowley)force_parallel_mode3.删除使用规则手动创建视图的功能(Tom Lane)ON SELECT4.删除服务器变量(Andres Freund)vacuum_defer_cleanup_age自从添加了hot_standby_fee

11、dback和复制槽以来,这就没有必要了。5.删除服务器变量(Simon Riggs)promote_trigger_file这用于将备用数据库提升为主数据库,但现在使用 pg_ctlpromote 或 pg_promote()可以更轻松地完成。不兼容项31.删除只读服务器变量和(Peter Eisentraut)lc_collatelc_ctype排序规则和区域设置可能因数据库而异,因此将它们作为只读服务器变量是没有帮助的。2.角色继承现在控制在 GRANT 期间添加的成员角色的默认继承状态(Robert Haas)角色的默认继承行为可以用 new 子句覆盖。这允许继承某些角色,而不允许继承其

12、他角色,因为成员的继承状态是在时间设置的。以前,成员角色的继承状态仅由角色的继承状态控制,对角色继承状态的更改会影响所有以前和将来的成员角色。GRANT.WITH INHERITGRANT3.限制 CREATEROLE 的权限及其修改其他角色的能力(Robert Haas)以前,具有权限的角色可以更改任何非超级用户角色的许多方面。此类更改(包括添加成员)现在要求请求更改的角色具有权限。例如,现在,只有当他们也具有这些权限时,他们才能更改、和 属性。CREATEROLEADMIN OPTIONCREATEDBREPLICATIONBYPASSRLS4.删除 postmaster 二进制文件(Pe

13、ter Eisentraut)的符号链接版本升级大版本升级有两种方式1.数据导入导出 pg_dumpall pg_restore2.pg_upgrade工具进行升级多维度介绍16版本功能性能等提升逻辑复制1允许在备用数据库(Bertrand Drouvot、Andres Freund、Amit Khandekar)上进行逻辑解码创建逻辑槽需要快照 WAL 记录,但不能在备用节点上创建。为了避免延迟,新函数pg_log_standby_snapshot()允许创建此类记录。添加服务器变量以控制逻辑解码发布者如何传输更改以及订阅者如何应用更改(Shi Yu)变量为 debug_logical_re

14、plication_streaming。允许逻辑复制初始表同步以二进制格式复制行(Melih Mutlu)这仅适用于标记为二进制的订阅。逻辑复制2提高无主键的逻辑复制应用的性能(Onder Kalaci,Amit Kapila)具体来说,现在可以使用btree 索引,而不是按顺序扫描表来查找匹配项。REPLICA IDENTITY FULL允许逻辑复制订阅者仅处理没有来源的更改(Vignesh C、Amit Kapila)这可用于避免复制循环。这由新选项控制。CREATE SUBSCRIPTION.ORIGIN以表所有者身份执行逻辑复制 SELECT 和 DML 操作(Robert Haas)

15、这提高了安全性,现在要求订阅所有者是超级用户,或者对复制集中拥有表的所有角色具有 SET ROLE 权限。可以使用订阅run_as_owner选项启用以前以订阅所有者身份执行所有操作的行为。实用程序命令11.实用程序命令添加 EXPLAIN 选项以显示参数化查询的通用计划(Laurenz Albe)GENERIC_PLAN2.允许 COPY FROM 值映射到列的(Israel Barth Rubio)DEFAULT3.允许 COPY 到外部表中以批量添加行(Andrey Lepikhov、Etsuro Fujita)这由postgres_fdw选项batch_size控制。4.允许 CREA

16、TE TABLE 指定类型(Teodor Sigaev、Aleksander Alekseev)STORAGE 以前只有ALTER TABLE 可以控制这一点。实用程序命令25.允许在外部表上截断触发器(Yugo Nagata)6.允许 VACUUM 和 vacuumdb 仅处理 TOAST 表(Nathan Bossart)这是通过关闭 VACUUM 或使用该选项的 vacuumdb 来实现的。PROCESS_MAIN-no-process-main7.添加 VACUUM 选项以跳过或更新所有冻结的统计信息(Tom Lane、Nathan Bossart)选项为和。SKIP_DATABASE

17、_STATSONLY_DATABASE_STATS8.更改 REINDEX DATABASE 和 REINDEX SYSTEM 以不再需要参数(Simon Riggs)以前必须指定数据库名称。9.如果未指定任何统计信息,则允许 CREATE STATISTICS 生成统计信息名称(Simon Riggs)数据类型1.允许非十进制整数文本(Peter Eisentraut)例如,、和。0 x42F0o2730b1001012.允许 NUMERIC 处理任何大小的十六进制、八进制和二进制整数(Dean Rasheed)以前,这些非十进制基数仅支持不带引号的八字节整数。3.允许在整数和数值常量中使用

18、下划线(Peter Eisentraut、Dean Rasheed)这可以提高长数字字符串的可读性。4.接受日期时间输入中的拼写(Vik Fearing)+infinity5.防止在日期时间字符串中指定 和 与其他字段一起使用(Joseph Koshakow)epochinfinity6.删除对表单中日期输入的未记录支持(Joseph Koshakow)YyearMmonthDday7.添加函数 pg_input_is_valid()并检查类型转换错误(Tom Lane)pg_input_error_info()优化器1.允许在更多情况下进行增量排序,包括(David Rowley)DISTI

19、NCT2.添加具有或使用预排序数据的聚合功能(David Rowley)ORDER BYDISTINCT新的服务器变量enable_presorted_aggregate 可用于禁用此功能。3.允许在顶部记忆(Richard Guo)UNION ALL4.允许使用不可为空的输入作为内部关系来执行反连接(Richard Guo)5.允许并行化 FULL 和内部右哈希连接(Melanie Plageman、Thomas Munro)OUTER6.提高 GIN 索引访问优化器成本的准确性(Ronan Dunklau)性能提升11.允许更高效地添加堆页和索引页(Andres Freund)2.在非冻结

20、操作期间,在适当的情况下执行页面冻结(Peter Geoghegan)这使得全表冷冻真空吸尘器变得不那么必要了。3.当模式处于活动状态但不需要时,允许窗口函数在内部使用更快的 ROWS 模式(David Rowley)RANGE4.允许优化始终递增的窗口函数 ntile()和(David Rowley)cume_dist()percent_rank()5.允许聚合函数 string_agg()并行化(David Rowley)array_agg()性能提升21.通过缓存 RANGE 和分区查找来提高性能(Amit Langote,Hou Zhijie,David Rowley)LIST2.允许

21、通过真空和分析来控制共享缓冲区的使用(Melanie Plageman)VACUUM/ANALYZE 选项是,vacuumdb 选项是。默认值由服务器变量 vacuum_buffer_usage_limit 设置,该变量还控制autovacuum。BUFFER_USAGE_LIMIT-buffer-usage-limit3.在 Windows 上支持 wal_sync_method=fdatasync(Thomas Munro)4.如果仅更新索引列,则允许 HOT 更新(Matthias van de Meent、Josef Simanek、Tomas Vondra)BRIN5.提高更新进程标

22、题的速度(David Rowley)6.允许/搜索和 ASCII 字符串检测使用向量运算(Nathan Bossart、John Naylor)xidsubxidASCII 检测对于 COPY FROM 特别有用。向量运算也用于某些 C 数组搜索。7.减少内存分配的开销(Andres Freund、David Rowley)监控监测11.添加系统视图pg_stat_io视图以跟踪 I/O 统计信息(Melanie Plageman)2.记录表上上次顺序扫描和索引扫描的统计信息(Dave Page)此信息显示在 pg_stat_*_tables 和pg_stat_*_indexes 中。3.记录

23、有关更新行移动到新页面的统计信息(Corey Huinker)该列n_tup_newpage_upd。pg_stat_*_tables4.将推理锁信息添加到pg_locks系统视图(Masahiko Sawada、Noriyoshi Shinoda)交易 ID 显示在列中,推测插入令牌显示在列中。transactionidobjid5.将预准备语句结果类型的显示添加到pg_prepared_statements视图(Dagfinn Ilmari Mannsker)监控监测21.在创建订阅时创建订阅统计信息条目stats_reset以便准确(Andres Freund)以前,只有在报告第一个统计

24、信息时才会创建条目。2.更正 pg_stat_database 中所示的临时关系写入的 I/O 考虑(Melanie Plageman)3.添加函数 pg_stat_get_backend_subxact()以报告会话的子事务缓存(Dilip Kumar)4.让 pg_stat_get_backend_idset()和相关函数使用不变的后端 ID(Nathan Bossart)pg_stat_get_backend_activity()以前,索引值可能会在会话的生存期内更改。5.使用特殊后端类型报告独立后端(Melanie Plageman)6.添加等待事件 SpinDelay 以报告自旋锁睡

25、眠延迟(Andres Freund)监控监测31.创建新的等待事件 DSMAllocate 以指示等待动态共享内存分配(Thomas Munro)以前,这种类型的等待被报告为,也被分配使用。DSMFillZeroWritemmap()2.将数据库名称添加到逻辑 WAL 发送方的进程标题(Tatsuhiro Nakamori)物理 WAL 发送程序不显示数据库名称。3.向log_checkpoints消息添加检查点和信息(Bharath Rupireddy、Kyotaro Horiguchi)REDO LSN4.在客户端证书失败期间提供其他详细信息(Jacob Champion)权限11.添加具

26、有创建订阅权限的预定义角色pg_create_subscription(Robert Haas)2.允许订阅不需要密码(Robert Haas)这是通过选项 password_required=false 完成的。3.简化 LOCK TABLE 的权限(Jeff Davis)以前,用户在各种锁定级别执行的能力仅限于他们有权在表上执行的命令所需的锁定级别。例如,具有 UPDATE 权限的人可以执行除 之外的所有锁定级别,即使它是较小的锁定级别。现在,如果用户已经拥有更高锁定级别的权限,则可以发出较低的锁定级别。LOCK TABLEACCESS SHARE4.允许与(Robert Haas)一起执

27、行 GRANT group_name TO user_nameADMIN OPTION以前需要许可。CREATEROLE5.允许 GRANT 使用/语法(Robert Haas)WITH ADMIN TRUEFALSE以前仅支持语法。WITH ADMIN OPTION权限21.允许创建其他角色的角色自动继承新角色的权限或将 ROLE 设置为新角色的能力(Robert Haas、Shi Yu)这由服务器变量 createrole_self_grant 控制。2.阻止用户更改非继承角色的默认权限(Robert Haas)现在只允许对继承的角色执行此操作。3.授予角色成员资格时,要求授予者角色是具有

28、适当权限的角色(Robert Haas)即使非引导超级用户授予角色成员资格,这也是一项要求。4.允许非超级用户使用非当前用户(Robert Haas)的授权用户授予权限当前用户仍必须具有指定授予的用户授予的足够权限。5.添加 GRANT 以控制使用 SET ROLE 的权限(Robert Haas)这由一个新选项控制。GRANT.SET权限31.将依赖项跟踪添加到已授予权限的角色(Robert Haas)例如,如果存在使用该选项的权限,则删除将失败;必须用于撤消从属权限。ADMIN OPTIONCASCADE2.为 GRANT 记录添加授予者的依赖项跟踪(Robert Haas)这保证了pg_

29、auth_members。值始终有效。grantor3.允许多个角色成员资格记录(Robert Haas)以前,新的会员资格授予将删除之前匹配的成员资格授予,即使授予的其他方面不匹配也是如此。4.防止删除引导用户(Robert Haas)的超级用户权限还原此类用户可能会导致错误。5.允许 makeaclitem()接受多个权限名称(Robins Tharakan)以前只接受单个权限名称,如 SELECT。pg_hba.conf 文件1.在(Bertrand Drouvot)中添加对数据库和角色条目的正则表达式匹配的支持pg_hba.conf正则表达式模式以斜杠为前缀。如果在 中引用以斜杠开头的

30、数据库和角色名称,则需要用双引号引起来。pg_hba.conf2.改进了 pg_ident.conf 的用户列处理以匹配(Jelte Fennema)pg_hba.conf具体而言,添加对、角色成员资格和带前导斜杠的正则表达式的支持。与这些模式匹配的任何用户名都必须用双引号引起来。all+3.允许在 和(Julien Rouhaud)中包含文件pg_hba.confpg_ident.conf它们由、和 控制。系统视图 pg_hba_file_rules和 pg_ident_file_mappings 现在显示文件名。includeinclude_if_existsinclude_dir4.允许令牌的长度不受限制(Tom Lane)pg_hba.conf5.将规则和映射编号添加到系统视图pg_hba_file_rules(Julien Rouhaud)THANK YOU联系信息CONTACT INFORMATION微信/公众号二维码

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(3-崔鹏-PostgreSQL16新特性解析.pdf)为本站 (张5G) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部