通常,执行成果的 SQL 都会计入 SQL_AUDIT 中,而执行报错的 SQL 则需要依据其执行报错的阶段来决定是否计入 SQL_AUDIT 中。
在 OceanBase 数据库中,SQL 请求的执行流程如图所示。
如果 SQL 在进入 Executor 阶段前发生报错,则该 SQL 的执行信息无法计入 SQL_AUDIT 中,比如:
- SQL 中有语法错误,Parser 阶段报错。
- SQL 中的表或者列不存在,Resolver 阶段报错。
如果 SQL 在 Executor 阶段发生报错,则该 SQL 的执行信息会被统计并写入 SQL_AUDIT 中,比如:
- Insert 时发生主键冲突错误。
- SQL 执行时发生超时。
适用版本
OceanBase 数据库所有版本