当前位置: 首页 > 科技观察

最重要的DBAPostgreSQL10新亮点_0

时间:2023-03-21 23:45:03 科技观察

前段时间发布了PostgreSQL10的新大版本!强烈建议阅读此处、此处和此处提供的公告、发行说明和“新增功能”概述。和往常一样,有很多博客涵盖了所有新内容,但我想每个人都有自己认为重要的角度,所以与9.6版一样,我在这里列出了我印象中最有趣/相关的功能.一如既往,升级或初始化新集群的用户将获得更好的性能(例如,更好的并行索引扫描、合并连接和不相关子查询、更快的聚合、更智能的连接和聚合),这些都是开箱即用的,但在本文中我想谈谈一些开箱即用的东西,你实际上需要采取一些步骤才能从中受益。下面突出显示的功能是从DBA的角度编译的,很快就会有一篇文章从开发人员的角度描述这些变化。升级说明首先是从现有设置升级的一些提示-从9.6或更早版本迁移时有一些小问题可能会导致问题,因此请务必在实际升级之前在单独的副本上测试升级,并检查所有可能的问题在发行说明中。最显着的缺陷是:所有包含“xlog”的函数都被重命名为使用“wal”而不是“xlog”。后一个命名可能会与普通服务器日志混淆,因此这是一个“以防万一”的更改。如果使用任何第三方备份/复制/HA工具,请检查它们是否是最新版本。服务器日志(错误消息/警告等)的pg_log文件夹已重命名为“日志”。确保验证您的日志解析或grep脚本(如果有)是否有效。默认情况下,查询将使用最多2个后台进程。如果您在CPU数量较少的机器上使用postgresql.conf设置中的默认值10,您可能会看到资源使用量激增,因为默认情况下启用并行处理-这是一件好事,因为它应该意味着更快查询。如果您想要旧行为,请将max_parallel_workers_per_gather设置为0。默认情况下,启用到localhost的复制连接。为了简化测试之类的事情,现在在pg_hba.conf中以“信任”模式(无密码)启用本地主机和本地Unix套接字复制连接!所以如果其他非DBA用户也可以访问真正的生产机器,请务必更改配置。从DBA的角度来看,我的***逻辑复制是一个期待已久的功能,当您只想复制单个表、表的一部分或所有表时,它需要简单的设置,性能损失最小,这也意味着然后主要可以零停机升级版本!从历史上看(需要Postgres9.4+),这可以通过使用第三方扩展或基于慢速触发器的解决方案来实现。对我来说,这是一个10***功能。声明分区以前通过继承和创建触发器以将插入重新路由到正确的表来管理分区的方法很烦人,更不用说对性能的影响了。当前支持的是“范围”和“列表”分区方案。如果有人在某些数据库引擎中缺少“散列”分区,您可以使用带有表达式的“列表”分区来实现相同的功能。可用的散列索引散列索引现在是WAL日志记录的,因此是崩溃安全的,并且已经获得了一些性能改进,使它们比标准B树索引在更大数据上进行简单搜索更快。还支持更大的索引大小。Cross-ColumnOptimizerStatistics此类统计信息需要在一组表列上手动创建,以表明这些值实际上以某种方式相互依赖。这将能够处理慢速查询,其中规划器认为返回的数据很少(概率的乘积通常产生非常小的数字)导致大量数据性能不佳(例如选择“嵌套循环”连接).副本上的并行快照现在可以在pg_dump(-jobs标志)中使用多个进程来大大加快备用服务器上的备份。为了更好地调整并行处理工作者的行为,请参考max_parallel_workers和min_parallel_table_scan_size/min_parallel_index_scan_size参数。我建议增加后两者的默认值(8MB、512KB)。易于使用的新内置监控角色新角色pg_monitor、pg_read_all_settings、pg_read_all_stats和pg_stat_scan_tables使执行各种监控任务变得更加容易-以前您必须使用超级用户帐户或某些SECURITYDEFINER包装函数。用于更安全地生成副本的临时(每会话)复制槽用于检查B树索引有效性的新Contrib扩展这两个智能检查可发现结构不一致和页面级验证未涵盖的内容。希望在不久的将来能更深入。psql查询工具现在支持基本分支(if/elif/else),如下所示将启用具有版本特定分支(pg_stat*视图等具有不同列名称)的单个维护/监视脚本,而不是许多版本特定脚本。SELECT:VERSION_NAME='10.0'ASis_v10\gset\if:is_v10SELECT'yippee'ASmsg;\elseSELECT'timetoupgrade!'ASmsg;\endif这次就这样了!当然还有很多其他的东西没有列出来,所以对于全职DBA,我肯定会建议更全面地查看发行说明。非常感谢为此版本做出贡献的300多人!