SQL -> 并行和并发的区别 & 查看查询中的执行计划
最近一段时间遇到了一个问题,说是“查询处理器不能够为并行查询提供必要的线程资源(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 的执行计划来知道,这段代码运行是并行还是串行。
- 首先打开执行计划:
或者直接在工具栏里找到,并单击选中 - 执行sql,然后在执行结果一栏,切换到执行计划:
- 查看执行计划,如果是并行运算可以找到并行度
- 右击聚集索引扫描,选择属性,可以打开下面这个窗口
【注】:分析执行计划,要从右到左分析。部分截图也来自第二个参考链接哦~其他详细内容可以查看下面第二个参考链接~😉。
参考链接:
- https://www.cnblogs.com/xc-chejj/p/10813692.html (一目了然,印象深刻,有图文哦~👍)
- SQL Server调优系列基础篇(并行运算总结) (有关调优的系列文章很赞👍,讲解了有关执行计划里面各个部分表示的含义,以及分析了执行计划~)
本文来自博客园,作者:77工作室,转载请注明原文链接:https://www.cnblogs.com/z7luv/p/15305724.html
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。