关于 OceanBase 的 SQL Audit(`GV$OB_SQL_AUDIT` )用于性能诊断的描述,以下正确的是?

A. GV$OB_SQL_AUDIT 记录所有租户下执行完成的 SQL 请求,但只保留最近 1 小时的数据,超过时间的历史记录会被系统自动清理,无法查询。

B. SQL Audit 中记录了每个 SQL 的执行时间、等待事件、返回行数、扫描行数、重试次数等关键信息,可用于定位慢查询和排查故障。

C. 只有使用 OBProxy 接入的 SQL 才会被记录在 SQL Audit 中,直连 OBServer 的 SQL 请求不会被记录,因为审计点位于 OBProxy 层。

D. 用户可以通过 ALTER SYSTEM SET ob_sql_audit_percentage = 20 调整 SQL Audit 占租户内存的百分比,修改后需要重启 OBServer 生效。

解析
GV$OB_SQL_AUDIT 是 OceanBase 中最核心的性能诊断视图之一,记录了每个已完成 SQL 请求的详细信息,包括:执行时间(elapsed_time )、排队时间(queue_time )、返回行数(return_rows )、扫描行数(scan_rows )、物理读次数(physical_reads )、等待事件(wait_classwait_event )、是否重试(is_retry )等。通过分析这些字段,可以快速定位慢查询、全表扫描、锁等待等问题。

  • A 错误 :SQL Audit 记录的保留时间由租户参数 ob_sql_audit_retention_seconds 控制,默认保留 1 天(86400 秒) ,不是 1 小时。且清理策略是循环覆盖,用户可配置。
  • B 正确 :概括了 SQL Audit 的核心功能。
  • C 错误无论 OBProxy 还是直连 OBServer ,所有 SQL 请求都会被记录在 SQL Audit 中。审计点位于 OBServer 的执行引擎层,与接入方式无关。
  • D 错误ob_sql_audit_percentage 参数支持动态修改 ,无需重启 OBServer。系统会按新比例重新分配内存。

正确答案:B

B. SQL Audit 中记录了每个 SQL 的执行时间、等待事件、返回行数、扫描行数、重试次数等关键信息,可用于定位慢查询和排查故障。

1 个赞

B是对的

2 个赞