暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 18 Beta 预览版 – 轻松导出或修改统计数据

原创 秦朝阳 2025-05-21
350

PostgreSQL 18 的 Beta 版本现已发布,现在正是深入了解其 GA 版本新特性的理想时机。其中一项令我特别关注的功能,是对统计信息导出与修正机制的改进。

以下是 PostgreSQL 官方发行说明的摘录:

Add functions to modify per-relation and per-column optimizer statistics (Corey Huinker) Add pg_dump, pg_dumpall, and pg_restore options --statistics-only, --no-statistics, --no-data, and --no-schema (Corey Huinker, Jeff Davis)

性能分析的关键要素之一是了解表、列和索引的底层统计信息。我们经常会遇到查询在生产环境中的行为与预生产环境或用户验收测试 (UAT) 环境中的行为不同的情况。造成这种差异的一个常见原因是数据分布和统计信息的差异。我们多少次希望找到一种方法,在较低的环境中复制类似生产的统计数据,而无需复制数据和手动运行的开销ANALYZE?

借助 PostgreSQL 18,我们可以期待允许我们导出、导入甚至修改统计数据的功能——从而更容易在非生产环境中模拟生产行为,而无需实际的数据加载。
image.png

Dump Statistics. pg_dump --statistics-only --table=public.skewed_data_int Reset Table, Index or Materialize View Stats pg_restore_relation_stats Reset Attributes level statistics pg_restore_attribute_stats

以下是pg_dump包含统计信息的示例输出。此示例输出也可在同一实例或其他环境中使用,以覆盖现有统计信息并影响执行计划。

--table or materialize views SELECT * FROM pg_catalog.pg_restore_relation_stats( 'version', '180000'::integer, 'schemaname', 'public', 'relname', 'skewed_data_int', 'relpages', '84'::integer, 'reltuples', '10000'::real, 'relallvisible', '84'::integer, 'relallfrozen', '0'::integer ); --columns or attributes SELECT * FROM pg_catalog.pg_restore_attribute_stats( 'version', '180000'::integer, 'schemaname', 'public', 'relname', 'skewed_data_int', 'attname', 'categorical_col', 'inherited', 'f'::boolean, 'null_frac', '0'::real, 'avg_width', '4'::integer, 'n_distinct', '4'::real, 'most_common_vals', '{1,2,3,4}'::text, 'most_common_freqs', '{0.5999,0.3154,0.0809,0.0038}'::real[], 'correlation', '0.4595874'::real ); --Index SELECT * FROM pg_catalog.pg_restore_relation_stats( 'version', '180000'::integer, 'schemaname', 'public', 'relname', 'skewed_data_int_pkey', 'relpages', '30'::integer, 'reltuples', '10000'::real, 'relallvisible', '0'::integer, 'relallfrozen', '0'::integer );

结论

统计信息是 PostgreSQL 查询规划器的核心,拥有准确或接近生产环境的统计信息会显著影响性能调优和执行计划的准确性。PostgreSQL 18 新增了导出、导入和调整统计信息的功能,为 DBA 和开发人员带来了强大的全新可能性,尤其是在测试和预生产环境中。

此功能减少了性能调查中的猜测,并提供了一种更安全、无数据的方法来模拟实际工作负载。如果您对性能非常重视,那么 PostgreSQL 18 Beta 版中的这项功能值得探索。

原文地址:https://databaserookies.wordpress.com/2025/05/10/postgresql-18-beta-preview-export-or-amend-statistics-with-ease/
原文作者:Deepak Mahto

最后修改时间:2025-05-21 15:50:30
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论