本文档介绍了 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_viewobservability_service_query_coarse_1_viewobservability_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_viewobservability_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_viewobservability_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_viewobservability_service_query_viewobservability_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_viewobservability_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_viewobservability_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_activitystat_activity_v3
- 相关列:
pid:后端进程 ID。如需终止会话,请将进程 ID 传递给 PostgreSQLpg_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 地址。