Java教程

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

本文主要是介绍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 的执行计划来知道,这段代码运行是并行还是串行。

  1. 首先打开执行计划:

    或者直接在工具栏里找到,并单击选中


  2. 执行sql,然后在执行结果一栏,切换到执行计划:


  3. 查看执行计划,如果是并行运算可以找到并行度
  4. 右击聚集索引扫描,选择属性,可以打开下面这个窗口

 

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

这篇关于SQL -> 并行和并发的区别 & 查看查询中的执行计划的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!