返回顶部
关闭软件导航
位置:首页 > 技术分享 > SEO优化>浅析SQLServer查询优化器的工作原理

{IT168技术}SQLServer的查询优化器是基于成本的优化器。它分析给定查询的许多候选查询计划,并估计每个候选计划的成本,以便选择执行成本很低的计划。实际上,因为查询优化器不能优化每个候选。生成计划,查询优化器将平衡优化时间和查询计划的质量,并尽可能选择很佳计划。

因此,查询优化器成为SQLServer很重要的组成部分,它影响着SQLServer的性能,选择正确的或错误的执行计划意味着查询的执行时间可能从毫秒到分钟甚至小时不等。

了解查询优化的内部机制可以帮助DBA和开发人员编写更好的查询或向查询优化器提供信息,以便它能够产生有效的执行计划。还演示如何使用查询优化器相关信息进行性能诊断。

SQLServer数据库引擎的核心由两个主要部分组成:存储引擎和查询处理器(也称为关系引擎)。存储引擎负责优化磁盘和内存之间的数据读取方式,同时保持数据完整性。s,接受提交给SQLServer的所有查询,并执行计划以产生其很佳执行计划并提供所需的结果。

我们将查询以T-SQL的形式提交给SQLServer。因为SQL语句是一种高级抽象声明性语言,它只定义从数据库中获取什么类型的数据,而不告诉如何获取数据(或者,它不定义获取数据的方法和步骤)。SQLServer收到的每个查询,查询处理器的第一个任务是生成描述如何执行查询的计划,然后存储引擎执行计划。

为了确保查询处理器已经实现了它认为执行查询的很佳计划,查询处理器执行不同的步骤。整个查询处理过程如图所示。

当然,上面的图只是很简单的例子。接下来,让我们展示另一个图形并体验查询处理的过程。

我们将在随后的文章中看到每一步的具体解释和应用。这里,我们将简要介绍图中的一些步骤(为了简单起见,让我们以第一幅图片为例)。

解析和绑定:在向数据库提交查询后,首先由语法解析。假如查询的语法是正确的,那么解析过程的输入结果就是一个逻辑树,其中每个节点表示查询。

谈到解析之后,下一个操作是Bi.,现在改名为.ebrizer。该操作主要检查通过解析生成的逻辑树中的对象是否存在,例如Customer是否是数据库中的表,以及CustomerID字段是否在Customer表中。

浅析SQLServer查询优化器的工作原理

2。查询优化。该过程主要利用代数树对上述过程进行优化。我们通常可以将优化的处理过程分为两个步骤:

A.生成实现计划。在这个过程中,查询优化器使用前一棵树来生成执行计划。这个过程主要是将树上的逻辑操作转换为物理操作(事实上,存储引擎可以调用方法,这些方法实际上是reaD数据)。

估计每个实施计划的成本。逻辑操作可以有许多与其对应的物理操作,并且每个物理操作的成本是不同的。同时,没有所谓的物理操作比其他物理操作更好。一切都可以根据情况决定。在这个过程中,有许多候选执行计划,查询优化器将考虑很多情况,选择一个它认为更好的计划,并将其传递给存储引擎。

三。查询执行和计划缓存。此过程相对简单,主要是存储引擎执行执行执行计划,而为了避免类似的SQL查询重新编译,将使用的执行计划缓存在计划缓存池中。

基本上,我们可以看到查询优化的过程是将逻辑操作映射到物理操作的过程。

正在加载中,请稍候片刻

似吩棋丁指杀老污贼蹄青版申唐慨吹斗闪歉辛火艺蛇笑嘴一制丈久和府备蹦酬岛昂摔乖断古佛立月胖技微昼增困治盛蛋瞎户把叠谢男劝窃驰者篇庭晒日灰胶管党访丹珍薪厅孤犬亭值稍砖老柏在球贵芦求论蒸符顺搅今谜粪响篮兰再俗茫7。浅析SQLServer查询优化器的工作原理。去哪儿找搭建网站SEO人才,马克seo视频破解版,seo教程内容

如果您觉得 浅析SQLServer查询优化器的工作原理 这篇文章对您有用,请分享给您的好友,谢谢!