在 2020 年 11 月 23 日配置 XE 以捕获一些错误后,我可以统计 2,163,665 次来自旧版应用程序请求的相同错误(可能不会很快得到纠正)。这些错误可以在处理 SQL 语句的第一步和第二步进行分类:
- DBMS 首先解析 SQL 语句。它将语句分解成单独的单词,称为标记,确保语句具有有效的动词和有效的从句,等等。在此步骤中可以检测到语法错误和拼写错误。
- DBMS 验证该语句。它根据系统目录检查语句。语句中命名的所有表是否都存在于数据库中?是否所有列都存在并且列名是否明确?用户是否具有执行语句所需的权限?在此步骤中可以检测到某些语义错误。
该文档还说,解析 SQL 语句不需要访问数据库并且可以非常快速地完成,但是在服务器上发出的请求数量让我觉得我应该验证一下。
我想衡量那些在这些步骤中被拒绝的错误请求对资源消耗的影响。有没有办法这样做?
我从您的评论中看到,错误发生的频率并不高,以至于成为性能问题。
要回答所提出的问题,您可以创建一个过滤的 XE 跟踪来捕获详细的 sql_batch_completed 和 rpc_completed 事件,其中结果是错误。然后可以通过聚合统计数据的时间间隔来汇总事件。
下面的示例总结了从跟踪文件目标按一分钟间隔进行的 CPU 和逻辑读取。