通常由查询本身来寻找交互性及重新安排操作兴发游戏登录的顺序

当前位置:兴发游戏平台 > 兴发游戏登录 > 通常由查询本身来寻找交互性及重新安排操作兴发游戏登录的顺序
作者: 兴发游戏平台|来源: http://www.antsuperman.com|栏目:兴发游戏登录

文章关键词:兴发游戏平台,并行化

  在我们将写好的一个T-SQL语句抛给SQL Server准备执行的时候,首选要经历的过程就是编译过程,当然如果此语句以前在SQL Server中执行过,那么将检测是否存在已经缓存的编译过的执行计划,用以重用。

  但是,执行编译的过程需要执行一系列的优化过程,关于优化过程大致分为两个阶段:

  1、首先,SQL Server对我们写的T-SQL语句先执行一些简化,通常由查询本身来寻找交互性及重新安排操作的顺序。

  在此过程中,SQL Server侧重于语句写法调整,而不过多的考虑成本或者分析索引可用性的等,最重要的目标就是产生一个有效的查询。

  然后,SQL Server才会加载元数据,包括索引的统计信息,进入第二个阶段。

  2、在这个阶段才是SQL Server一个复杂的优化过程,这个阶段SQL Server会根据上一阶段形成的执行计划运算符进行评估和尝试,甚至于重组执行计划,所以相对这个优化过程是一个耗时的过程。

  这个图看上去有点复杂,我们来详细分析下,其实就是将这个优化阶段分为3个子阶段

  1这个阶段仅考虑串行计划,也就说单处理器运行,如果这个阶段找到了一个好的串行计划,优化器就不会进入下一阶段。所以对于数据量少的情况,或者执行语句简单的情况下,基本采用的都是串行计划。

  2这个阶段首先对第1阶段的串行计划进行优化,然后如果环境支持并行化操作,则进行并行化操作,通过进行比较,然后进行优化后的成本如果比较低则输出执行计划,如果成本还是比较高,则进入第2阶段,再继续优化。

  3其实到达这个阶段就是优化的最后一个阶段了,这个阶段会对第2个阶段中采用串行和并行的比较结果进行最后一步优化,如果串行执行好那就进一步优化,当然如果并行执行好的话,则再继续并行优化。

  其实第3阶段是查询优化器的无奈之举,当到达第3阶段了就是一个补救阶段,只能最后做优化了,优化完好不好的就只能按照这个执行计划执行了。兴发游戏登录

  关于这些优化器的最重要原则的就是:尽可能的减少扫描范围,不管是表或者索引,当然走索引比表好,索引的量也是越少越好,最理想的情况是只有一条或者几条。

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!