PG ANALYZE语法

1    9319    6

Tags:

👉 本文共约3350个字,系统预计阅读时间或需13分钟。

有关VACUUM请参考:https://www.dbaup.com/pg-vacuummingling.html
参考: http://postgres.cn/docs/13/sql-analyze.html

ANALYZE

ANALYZE — 收集有关一个数据库的统计信息

大纲

描述

ANALYZE收集一个数据库中的表的内容的统计信息,并且将结果存储在pg_statistic系统目录中。接下来,查询规划器会使用这些统计信息来帮助确定查询最有效的执行计划。

如果没有table_and_columns列表,则ANALYZE处理当前用户有权分析的当前数据库中的每个表和物化视图。使用列表,ANALYZE仅处理那些表。还可以给出表的列名列表,在这种情况下,仅收集这些列的统计信息。

当选项列表用括号括起来时,选项可以按任何顺序来写。 带括号的语法是在PostgreSQL 11中添加的;不带括号的语法已弃用。

参数

  • VERBOSE

    允许显示进度消息。

  • SKIP_LOCKED

    规定ANALYZE在开始处理一个关系时不应等待任何冲突的锁被释放:如果关系不能无需等待立即锁定,则跳过该关系。 请注意即使采用此选项,ANALYZE在打开关系的索引或从分区、表继承子级和某些类型的外表获取样本行时仍可能阻塞。 此外,当ANALYZE通常处理指定分区表的所有分区时,如果分区表上有一个冲突的锁,这个选项将导致ANALYZE跳过所有分区表。

  • boolean

    规定所选的选项打开或关闭。 您可以写TRUEON1以启用该选项,或者是FALSEOFF0来禁用它。 boolean 值可以被省略,在假定为TRUE的情况下。

  • table_name

    要分析的一个指定表的名称(可以是模式限定的)。如果省略,则分析当前数据库中的所有常规表、分区表和物化视图(但不包含外部表)。 如果指定的表是分区表,则整个分区表的继承统计信息和各个分区的统计信息都将更新。

  • column_name

    要分析的一个指定列的名称。默认是所有列。

输出

当指定了VERBOSE时,ANALYZE会发出进度消息来指示当前正在处理哪个表。还会打印有关那些表的多种统计信息。

注解

要分析表,通常必须是该表的所有者或超级用户。不过,数据库所有者可以分析数据库中的所有表,共享目录除外。 (对共享目录的限制意味着真正的数据库范围的ANALYZE只能由超级用户执行。) ANALYZE将跳过调用用户没有分析权限的任何表。

只有被显式选中时才会分析外部表。并非所有外部数据包装器都支持ANALYZE。如果表的包装器不支持ANALYZE,该命令会打印一个警告并且什么也不做。

在默认的PostgreSQL配置中,自动清理守护进程(见第 24.1.6 节)会在表第一次载入数据或者用常规操作改变时负责表的自动分析。当启用自动清理时,定期运行ANALYZE是个好主意,或者可以在表内容做了大的修改后运行ANALYZE。准确的统计信息将帮助规划器选择最合适的查询计划,从而提升查询处理的速度。主读数据库的一般策略是在一天中使用量最低时运行一次VACUUMANALYZE(如果有大量的更新动作则是不够的)。

ANALYZE只要求目标表上的一个读锁,因此它可以和表上的其他动作并行。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

1 条回复

发表回复