要查找在 OceanBase 中某个租户中执行全表扫描的 SQL 语句,您可以通过审计日志、性能统计信息或执行计划进行诊断。以下是一些建议的步骤:

1. 审计 SQL 语句:
   - 启用 SQL 审计并配置审计选项,以记录 SQL 语句的执行情况。
    ALTER SYSTEM SET audit_enable = true;
    ALTER SYSTEM SET audit_event = 'sql_statement';

   - 查询审计日志,筛选出属于特定租户的 SQL 语句,并检查执行计划。
    SELECT * FROM information_schema.AUDIT_RECORD WHERE tenant_id = 'your_tenant_id' AND plan IS NOT NULL;

   - 替换 'your_tenant_id' 为目标租户的 ID。

2. 查询性能统计信息:
   - 使用性能监控工具或查询系统视图,检查关于全表扫描的性能统计信息。
    SELECT * FROM __all_virtual_table_scan_stat WHERE schema_name = 'your_schema' AND table_name = 'your_table';

   - 替换 'your_schema' 和 'your_table' 为目标租户的模式和表名称。

3. 检查执行计划:
   - 使用 EXPLAIN 命令或相关的工具查看属于目标租户的 SQL 查询的执行计划。
    EXPLAIN PLAN FOR SELECT * FROM your_table WHERE your_condition;

   - 确保执行计划中没有全表扫描,或者检查是否有适当的索引被使用。

4. 监控系统视图:
   - 使用系统视图查询有关表扫描的信息,如 __all_virtual_table_scan_stat。
    SELECT * FROM __all_virtual_table_scan_stat WHERE schema_name = 'your_schema' AND table_name = 'your_table';

   - 这些视图提供了关于表扫描操作的详细统计信息。

请注意,上述查询和视图的确切名称和内容可能会根据 OceanBase 的版本而有所不同。建议查阅相应版本的官方文档以获取准确的信息。在执行监控操作时,请确保在非生产环境中测试,以避免对实际业务产生负面影响。


转载请注明出处:http://www.zyzy.cn/article/detail/11798/OceanBase