高级 Query Insights 参考文档

选择文档版本:

本文档介绍了 AlloyDB Omni 中高级 Query Insights 的配置参数、遥测维度以及可观测性视图和函数。

如需详细了解如何启用和查询高级 Query Insights,请参阅使用高级 Query Insights 监控查询性能。

配置参数

如需应用不需要重启数据库的参数更改,请运行 ALTER SYSTEM SET,然后运行 SELECT pg_reload_conf()。下表介绍了高级 Query Insights 的配置参数:

参数 类型 默认值 需要重启 说明
google_insights_v2.enabled boolean off 对于使用 shared_preload_libraries进行的初始启用,需要重启。对于使用 pg_reload_conf()进行的后续重新加载,不需要重启。 启用或停用实例中的高级 Query Insights 遥测数据收集 。
google_insights_v2.qi_max_query_string_length integer 10240 不需要(使用 pg_reload_conf() 重新加载) 设置为标准化 SQL 模板记录的最大字节长度(1024 到 102400),其中字面量 值会屏蔽为位置参数,例如 $1 和 $2。
google_insights_v2.qi_preserve_comments boolean off 不需要(使用 pg_reload_conf() 重新加载) 控制是否在标准化查询 字符串中保留 SQL 注释。
google_insights_v2.qi_track_wait_event_types boolean on 不需要(使用 pg_reload_conf() 重新加载) 记录高级 wait_class 瓶 101} 颈类别,例如 CPU、IO、Lock、 Timeout 和 IPC。
google_insights_v2.qi_track_wait_events boolean on 不需要(使用 pg_reload_conf() 重新加载) 记录精细的 PostgreSQL wait_event 名称,例如 DataFileExtend、transactionid 和 WALWrite。
google_insights_v2.qi_track_client_address boolean off 不需要(使用 pg_reload_conf() 重新加载) 在查询和客户端地址 统计信息视图中记录连接客户端 IP 地址。
google_insights_v2.qi_track_tag boolean off 不需要(使用 pg_reload_conf() 重新加载) 启用对 SQL 注释中的标记(例如 SQLCommenter 标记)的跟踪。
google_insights_v2.qi_track_active_queries boolean off 不需要(使用 pg_reload_conf() 重新加载) 启用对活跃查询和开放 事务的实时跟踪。

按维度划分的可观测性视图和指标

以下部分列出了每个遥测维度的 google_insights_v2 架构中提供的可观测性视图和指标列。

查询

查询维度跟踪实例中查询的执行统计信息和标准化 SQL 文本。如需在标准化查询文本中保留 SQL 注释,请将 google_insights_v2.qi_preserve_comments 设置为 on。

此维度提供以下视图和列:

  • 可观测性视图:
    • observability_service_query_view
    • observability_service_query_coarse_1_view
    • observability_service_query_coarse_2_view
  • 相关列:
    • query_id:标准化 SQL 查询的哈希标识符。
    • query:标准化 SQL 查询文本。
    • database:运行查询的逻辑数据库。
    • username:执行查询的数据库角色。
    • total_execution_time:累计执行时间(以微秒为单位)。
    • total_wait_time:累计等待时间(以微秒为单位)。
    • total_read_time:累计磁盘读取时间(以微秒为单位)。
    • total_write_time:累计磁盘写入时间(以微秒为单位)。
    • total_rows:查询返回或影响的总行数。
    • total_shared_blocks_hit:共享缓冲区命中总数。
    • total_shared_blocks_read:从磁盘读取的共享块总数。
    • count:查询执行的总次数。
    • recorded_on:记录遥测时间间隔时的时间戳。

等待事件类型

当 google_insights_v2.qi_track_wait_event_types 设置为 on(默认启用)时,等待事件类型维度会记录高级 wait_class 瓶颈类别。

此维度提供以下视图和列:

  • 可观测性视图:
    • observability_service_wait_event_no_query_view
    • observability_service_wait_event_stats_by_query_view
  • 相关列:
    • wait_class:等待事件类别,例如 IO、Lock、LWLock、CPU 或 Internal wait event。
    • wait_event:等待类中的精细 PostgreSQL 等待事件名称。
    • time_spent:等待事件类型的累计等待时间(以微秒为单位)。
    • count:等待事件类型发生的总次数。
    • database:发生等待事件的逻辑数据库。
    • username:与等待事件关联的数据库角色。
    • tag_id:关联的 SQLCommenter 标记集的数字标识符。
    • tag_string:包含应用标记的原始 SQL 注释字符串。
    • recorded_on:记录遥测时间间隔时的时间戳。
    • query_id:查询的哈希标识符(位于 observability_service_wait_event_stats_by_query_view 中)。

等待事件

当 google_insights_v2.qi_track_wait_events 设置为 on(默认启用)时,等待事件维度会记录精细 PostgreSQL wait_event 名称。

此维度提供以下视图和列:

  • 可观测性视图:
    • observability_service_wait_event_no_query_view
    • observability_service_wait_event_stats_by_query_view
  • 相关列:
    • wait_event:特定的 PostgreSQL 等待事件名称,例如 DataFileExtend、DataFileRead、WALWrite 或 Internal wait event。
    • wait_class:等待事件所属的等待事件类别。
    • time_spent:等待事件的累计等待时间(以微秒为单位)。
    • count:等待事件发生的总次数。
    • database:发生等待事件的逻辑数据库。
    • username:与等待事件关联的数据库角色。
    • tag_id:关联的 SQLCommenter 标记集的数字标识符。
    • tag_string:包含应用标记的原始 SQL 注释字符串。
    • recorded_on:记录遥测时间间隔时的时间戳。
    • query_id:查询的哈希标识符(位于 observability_service_wait_event_stats_by_query_view 中)。

数据库

当 google_insights_v2.enabled 设置为 on 时,数据库维度会跟踪每个逻辑数据库的资源消耗和查询量。

此维度提供以下视图和列:

  • 可观测性视图:
    • observability_service_db_load_conn_view
    • observability_service_query_view
    • observability_service_wait_event_no_query_view
  • 相关列:
    • database:逻辑数据库名称。
    • username:在数据库中执行查询的数据库角色。
    • total_execution_time:数据库中的累计查询执行时间(以微秒为单位)。
    • total_wait_time:数据库中的累计等待时间(以微秒为单位)。
    • count:数据库中的查询执行总次数。
    • recorded_on:记录遥测时间间隔时的时间戳。

用户和客户端 IP 地址

默认情况下,用户和客户端 IP 地址维度按数据库角色 (username) 跟踪负载。如需同时收集连接客户端 IP 地址 (client_address),您必须将 google_insights_v2.qi_track_client_address 设置为 on(默认为 off)。

此维度提供以下视图和列:

  • 可观测性视图:
    • observability_service_query_view
    • observability_service_client_address_stats_by_query_view
  • 相关列:
    • client_address:连接客户端 IP 地址(当 google_insights_v2.qi_track_client_address 为 on 时)。
    • username:数据库角色名称。
    • database:逻辑数据库名称。
    • query_id:标准化 SQL 查询的哈希标识符。
    • time_spent:客户端地址的累计查询执行时间(以微秒为单位)。
    • count:用户或客户端 IP 地址的查询执行总次数。
    • recorded_on:记录遥测时间间隔时的时间戳。

标记

标记维度按应用标记元数据跟踪查询执行统计信息。如需收集标记指标,您必须将 google_insights_v2.qi_track_tag 设置为 on(默认为 off)。设置为 off 时,这些视图不会返回任何行。

此维度提供以下视图和列:

  • 可观测性视图:
    • observability_service_db_load_tag_view
    • observability_service_tag_view
  • 相关列:
    • tag_id:应用标记组合的数字标识符。
    • tag_string:包含应用标记的原始 SQL 注释字符串。
    • application:从 SQLCommenter 标记中提取的应用名称。
    • db_driver:从 SQLCommenter 标记中提取的数据库驱动程序。
    • framework_name:从 SQLCommenter 标记中提取的应用框架名称。
    • framework_controller:从 SQLCommenter 标记中提取的框架控制器。
    • framework_action:从 SQLCommenter 标记中提取的框架操作。
    • framework_route:从 SQLCommenter 标记中提取的框架路由。
    • traceparent:从 SQLCommenter 标记中提取的 W3C 跟踪记录上下文。
    • database:运行带标记的查询的逻辑数据库名称。
    • username:执行带标记的查询的数据库角色。
    • total_execution_time:标记组合的累计查询执行时间(以微秒为单位)。
    • count:标记组合的查询执行总次数。
    • recorded_on:记录遥测时间间隔时的时间戳。

活跃查询

活跃查询维度实时跟踪正在运行的查询和开放事务。如需查询活跃会话,您必须将 google_insights_v2.qi_track_active_queries 设置为 on。设置为 off 时,查询这些视图会返回错误。

此维度提供以下视图和列:

  • 可观测性视图:
    • stat_activity
    • stat_activity_v3
  • 相关列:
    • pid:后端进程 ID。如需终止会话,请将进程 ID 传递给 PostgreSQL pg_terminate_backend(pid) 系统函数。
    • normalized_query_hash:标准化 SQL 查询的哈希标识符。
    • normalized_query:活跃查询的标准化 SQL 文本。
    • state:当前后端状态,例如 active 或 idle in transaction。
    • backend_start:当前会话开始时的时间戳。如需计算会话时长(以秒为单位),请计算 EXTRACT(EPOCH FROM (clock_timestamp() - backend_start))。
    • xact_start:当前事务开始时的时间戳。如需计算事务时长(以秒为单位),请计算 EXTRACT(EPOCH FROM (clock_timestamp() - xact_start))。
    • query_start:当前查询开始时的时间戳。如需计算查询时长(以秒为单位),请计算 EXTRACT(EPOCH FROM (clock_timestamp() - query_start))。
    • wait_event_type:如果后端正在等待,则为等待事件类别。
    • wait_event:如果后端正在等待,则为等待事件名称。
    • database:活跃会话的逻辑数据库名称。
    • username:活跃会话的数据库角色名称。
    • application_name:连接应用名称。
    • client_addr:连接客户端 IP 地址。