• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

SQL -> 并行和并发的区别 & 查看查询中的执行计划

开发技术 开发技术 3小时前 1次浏览

       最近一段时间遇到了一个问题,说是“查询处理器不能够为并行查询提供必要的线程资源(The query processor could not start the necessary thread resources for parallel query execution.)”, 涉及到并发的问题,查找了一圈发现了不少好文章,现在总结一下,以备不时之需,欢迎讨论和纠正~


并行和并发的区别:

       并行(Concurrent)

    • 同一时间段
    • 多个程序,都处于已启动运行到运行完毕之间;
    • 这几个程序都运行在同一个处理机上,互相抢占资源

       并不是真正意义上的“同时进行”,而是将这个时间段划分非常细,划分成几个时间区间,在这几个时间区间来回横跳,由于CPU处理的速度非常快,以至于给用户一种“错觉”,感觉是这几个程序是同时运行的。

       并发(Parallel)

    • 同一时间点
    • 多个程序,都处于已启动运行到运行完毕之间;
    • 系统有一个以上CPU;
    • 不同的CPU 执行不同的进程,各个进程不相互影响,不抢占CPU资源

       只有在多个CPU 或一个CPU 多个核的情况下,才有可能发生并行,也就是说,并行的决定因素不只是CPU的数量,也有可能是一个CPU有多个核。

执行计划:

       我们还可以通过查看一组sql 的执行计划来知道,这段代码运行是并行还是串行。

  1. 首先打开执行计划:
    SQL -> 并行和并发的区别 & 查看查询中的执行计划
    或者直接在工具栏里找到,并单击选中
    SQL -> 并行和并发的区别 & 查看查询中的执行计划
  2. 执行sql,然后在执行结果一栏,切换到执行计划:
    SQL -> 并行和并发的区别 & 查看查询中的执行计划
  3. 查看执行计划,如果是并行运算可以找到并行度
    SQL -> 并行和并发的区别 & 查看查询中的执行计划
  4. 右击聚集索引扫描,选择属性,可以打开下面这个窗口
    SQL -> 并行和并发的区别 & 查看查询中的执行计划

 

       【注】:分析执行计划,要从右到左分析。部分截图也来自第二个参考链接哦~其他详细内容可以查看下面第二个参考链接~😉。

 

 

 


参考链接:

  • https://www.cnblogs.com/xc-chejj/p/10813692.html  (一目了然,印象深刻,有图文哦~👍)
  • SQL Server调优系列基础篇(并行运算总结)  (有关调优的系列文章很赞👍,讲解了有关执行计划里面各个部分表示的含义,以及分析了执行计划~)

      


程序员灯塔
转载请注明原文链接:SQL -> 并行和并发的区别 & 查看查询中的执行计划
喜欢 (0)