最近一段时间遇到了一个问题,说是“查询处理器不能够为并行查询提供必要的线程资源(The query processor could not start the necessary thread resources for parallel query execution.)”, 涉及到并发的问题,查找了一圈发现了不少好文章,现在总结一下,以备不时之需,欢迎讨论和纠正~
并行和并发的区别:
并行(Concurrent):
并不是真正意义上的“同时进行”,而是将这个时间段划分非常细,划分成几个时间区间,在这几个时间区间来回横跳,由于CPU处理的速度非常快,以至于给用户一种“错觉”,感觉是这几个程序是同时运行的。
并发(Parallel):
只有在多个CPU 或一个CPU 多个核的情况下,才有可能发生并行,也就是说,并行的决定因素不只是CPU的数量,也有可能是一个CPU有多个核。
执行计划:
我们还可以通过查看一组sql 的执行计划来知道,这段代码运行是并行还是串行。
【注】:分析执行计划,要从右到左分析。部分截图也来自第二个参考链接哦~其他详细内容可以查看下面第二个参考链接~