GV$OB_SQL_AUDIT视图中是记录所有请求的sql吗?

GV$OB_SQL_AUDIT视图中是记录所有请求的sql吗?

@论坛小助手

根据文档库中的信息,GV$OB_SQL_AUDIT 视图确实记录了所有 OBServer 节点上每一次 SQL 请求的来源、执行状态等统计信息。无论是 SQL 执行成功还是失败,该视图都会记录相关信息,包括 SQL 文本、执行计划等关键信息。因此,可以认为 GV$OB_SQL_AUDIT 视图记录了所有请求的 SQL。

具体依据如下:

  • 片段标题: GV$OB_SQL_AUDIT → 功能描述
    视图 GV$OB_SQL_AUDIT 用于展示所有 OBServer 节点上每一次 SQL 请求的来源、执行状态等统计信息。

  • 片段标题: 分析 SQL 监控视图 → SQL Audit 监控视图
    GV$OB_SQL_AUDIT 是最常用的 SQL 监控视图,能够记录每一次 SQL 请求的来源、执行状态、资源消耗及等待事件,无论 SQL 执行是成功还是失败。

综上所述,GV$OB_SQL_AUDIT 视图中记录的是所有请求的 SQL。

具体信息可参考以下文档:

  1. GV$OB_SQL_AUDIT
  2. 启用和关闭并行查询
  3. GV$OB_SESSION
  4. V$OB_SQL_AUDIT
  5. 分析 SQL 监控视图

如果observer实例的吞吐量(TPS+QPS)很高,记录所有的请求SQL 会不会影响性能呢?

@论坛小助手

根据文档库中的信息,GV$OB_SQL_AUDIT 视图确实会记录所有 SQL 请求的详细信息,包括执行计划、资源消耗等。如果 Observer 实例的吞吐量(TPS+QPS)很高,记录所有的请求 SQL 确实可能会对性能产生一定影响。以下是具体分析:

1. 性能影响因素

  • 写入开销:每次 SQL 请求都会在 GV$OB_SQL_AUDIT 中生成一条记录,这需要一定的内存和磁盘 I/O 资源来存储这些数据。
  • 查询开销:如果需要频繁查询 GV$OB_SQL_AUDIT 视图以进行性能分析或问题排查,可能会进一步增加系统的负载。
  • 内存占用:为了保证快速访问,部分审计数据可能缓存在内存中,高吞吐量场景下可能导致内存使用率上升。

2. 优化建议

尽管记录所有 SQL 请求可能会带来性能开销,但 OceanBase 数据库提供了一些机制来降低这种影响:

(1) 调整审计级别

  • OceanBase 支持通过配置参数 ob_sql_audit 来控制是否记录 SQL 审计信息。如果性能压力较大,可以考虑关闭不必要的审计功能。
  • 示例代码:
    -- 查看当前审计状态
    SHOW VARIABLES LIKE 'ob_sql_audit';
    
    -- 关闭 SQL 审计功能
    SET GLOBAL ob_sql_audit = OFF;
    

(2) 限制记录范围

  • 可以通过设置 ob_sql_audit_filter 参数,仅记录特定类型的 SQL 请求(如耗时较长的 SQL 或错误 SQL),从而减少记录量。
  • 示例代码:
    -- 设置仅记录耗时超过 1 秒的 SQL
    SET GLOBAL ob_sql_audit_filter = 'ELAPSED_TIME>1000000';
    

(3) 定期清理审计数据

  • GV$OB_SQL_AUDIT 的数据会随着时间增长而累积,建议定期清理或归档历史数据,避免其占用过多存储空间。
  • 示例代码:
    -- 删除指定时间范围内的审计记录
    DELETE FROM oceanbase.__all_virtual_sql_audit WHERE request_time < time_to_usec(now() - INTERVAL 1 DAY);
    

(4) 优化系统资源配置

  • 如果吞吐量非常高,可以通过增加租户内存配额或调整计划缓存大小(ob_plan_cache_percentage)来缓解性能压力。
  • 示例代码:
    -- 增加计划缓存占比
    SET GLOBAL ob_plan_cache_percentage = 10;
    

3. 总结

虽然记录所有请求 SQL 在高吞吐量场景下可能会对性能产生一定影响,但通过合理配置审计参数、限制记录范围以及优化系统资源配置,可以有效降低这种影响。如果性能压力过大且不需要完整的 SQL 审计信息,建议适当关闭或调整审计功能。

以上内容基于文档库中的信息及 OceanBase 社区版的最佳实践。如果仍有疑问,建议参考官方文档或联系 OceanBase 技术支持团队获取更多帮助。

更多信息请查看:

  1. 性能调优概述
  2. 体验 Operational OLAP
  3. SQL 调优典型场景和案例
  4. OceanBase 数据库性能的影响因素
  5. JOIN 表使用建议
  6. SQL 调优常见问题
  7. SQL 性能问题的典型场景和排查思路
  8. SQL FAQ
  9. 数据库层高可用
  10. 查询 SQL 流量分布情况及 QPS

niubiablity @论坛小助手

您好,您提到的问题似乎与 OceanBase 没有关联,我无法回答,敬请谅解! 如果您有其他 OceanBase 相关问题,欢迎继续提问。

这个数据是记录在内存中的,TPS和QPS很高的情况对性能影响也很小,当然你要是追求极致的性能,还是建议关闭SQL_AUDIT