SQL Server - 在 SQL Server 中提交 T-SQL 后会发生什么?

当查询语句提交到SQL服务器时,它会经历几个处理步骤。

第1步:解析 (parsing)

这是查询执行的第一步。 这涉及语法检查。 违反SQL语法规则的语句无法通过检查。 此步骤的输出是解析树 parse tree。

解析 (parsing)

第2步:绑定 (binding)

Algebrizer将解析后的树作为输入进行绑定。Algebrizer执行语义检查以确定语句是否有意义,例如,语句中的对象和列是否存在。Algebrizer还识别正在为给定查询处理的所有数据类型。 在此步骤之后,当实际执行命令时,该语句不再以源格式提供。Algebrizer生成一个查询进程树,用作查询优化器的输入。

绑定 (binding)

第三步:查询优化 (QueryOptimization)

查询优化是编译的最后一步。 无法优化的语句,例如控制流和数据定义语言(DDL)命令,被编译成内部形式。 可优化的语句被标记,然后传递给查询优化器。 查询优化器的工作是获取从algebrizer输出的查询树,并找到一种“好的”方法来检索所需的数据(结果)。SQL Server使用成本是基于优化器计算的。 成本主要是通过考虑每个备选方案必须读取的数据大小来计算的。 为了计算出这些成本,SQLServer需要知道每个表的大小和列值的分布,这可以从与数据相关的统计信息中获得。 优化器的输出是查询执行计划 (execution plan)。

第4步:查询执行    

这是查询处理的最后一步。 在处理需要来自基表的数据的步骤时,关系引擎请求存储引擎从关系引擎请求的行集中传递数据。

Flow
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容