精华内容
下载资源
问答
  • 并行执行

    2014-07-20 18:14:18
    1、显示并行设置参数 show parameter parallel; 2、创建表 create table t parallel 4 as ...3、查看并行执行计划 alter session enable parallel dml;  explain plan for delete /*+ parallel(t 2) */ from
    1、显示并行设置参数
    show parameter parallel;
    2、创建表
    create table t parallel 4 as select * from dba_objects;
    3、查看并行执行计划
    alter session enable parallel dml;
     explain plan for delete /*+ parallel(t 2) */ from t;
    select * from table(dbms_xplan.display); 
    4、并行执行inset into
    insert /*+parallel(t1,4) */into t select /* paraller(t,4) */ id,name from t1
    5、PCWP和PCWC 
    parallel combined with parent (child)
    展开全文
  • 并行执行计划

    2019-01-03 16:19:00
    在这一期的性能调优培训里,我想详细讲解下SQL Server里的并行执行计划(Parallel Execution Plans)。执行一个有并行执行计划的查询,意味着SQL Server从执行计划里进行必须的运算符需要使用多线程。首先我会介绍下...

    在这一期的性能调优培训里,我想详细讲解下SQL Server里的并行执行计划(Parallel Execution Plans) 。执行一个有并行执行计划的查询,意味着SQL Server从执行计划里进行必须的运算符需要使用多线程。首先我会介绍下并行执行计划里最常用的运算符,然后我们来分析下SQL Server是如何决定是否要使用并行执行计划。

    并行运算符(Parallel Operators)

    对于并行执行计划最常见的误解就是多线程只用于整个执行计划。这是错误的,因为SQL Server可以分配多个工作线程给所有可并行(parallelism-aware)运算符。这就意味者一个大型的并行计划可以消耗大量的线程。SQL Server在并行计划里区分2类运算符:可并行(parallelism-aware)运算符,和称为交换运算符(Exchange Operators)

    • 很多传统的运算符可以使用多线程来进行它们的工作,它们是可并行(parallelism-aware)运算符:索引扫描(Index Scan),索引查找(Index Seek),嵌套循环(Nested Loop),哈希连接(Hash Join),排序(Sort)等。
    • 交换运算符(Exchange Operators)是在并行执行计划里,用来分发和合并多线程之间的行。

    SQL Server使用下列3个交换运算符:

    • Distribute Streams: 在并行计划中,从一个单线程里区域转变为多线程区域(接收记录的单个输入流,并生成多个输出流。)。
    • Repartition Streams: 在线程间重新分配行(例如,当前一个运算符是并行哈希连接)(处理多个流并生成多个记录流。)。
    • Gather Streams:在并行计划中,从多线程区域转变为单线程区域(处理几个输入流并通过组合这几个输入流生成单个记录输出流。)。

    当你阅读并行执行计划时,你总会看到2种运算符的结合。每个执行计划必须生成一个单线程的结果,因此在并行执行计划的结尾,你总能看到Gather Streams运算符。

    查询优化器是否生成一个并行执行计划也取决于你使用的查询结构是否会阻止并行计划,例如:

    • T-SQL 语句和SQL公共语言运行库的自定义函数(SQLCLR UDFs);
    • 内建函数,像OBJECT_ID(), ERROR_NUMBER(), @@TRANCOUNT等;

    在并行计划里,也有很多查询结构会强制串行区域(这部分操作会使用并行计划):

    • 系统表扫描(System Table Scans)
    • 序列函数(Sequence Functions)
    • 向后扫描(Backward Scans)
    • 递归查询(Recursive Queries)
    • 表值函数(TVFs)
    • TOP

    在你的并行计划里,串行区域越少,你的查询越快。当你下次写你的查询时,好好考虑这点。

    什么时候使用并行(When to go parallel?)

    每个执行计划都会被SQL Server分配一个成本因素(Cost Factor) 。成本因素就是用来告诉SQL Server这个执行计划有多贵的简单数字。这个数字越大,执行计划运行的关联成本就越高。

    SQL Server有一个称为并行开销阀值(cost threshold for parallelism)的配置选项,用来定义成本因素,在哪个点查询优化会考虑使用并行计划。默认这个配置选项是5,也就说查询高于这个成本值,只要并行计划可行,就会使用并行计划。

    当并行计划被查询优化器编译好后,最大并行度(Max Degree of parallelism(MAXDOP))选项定义对执行计划中的每个并行运算符可用线程数。我刚才提过,并行执行计划里的每个运算符都可以用多线程运行,而不是整个执行计划。当然在并行执行计划里,线程可以被前一个运算符共享和重用。可以通过服务器属性->高级->并行配置这些属性:

    默认最大并行度(MAXDOP)选项值是0,因此SQL Server会默认将并行查询穿过所有分配给SQL Server的CPU内核。当你使用NUMA(Non Uniform Memory Access)系统时,这个会导致性能问题。最佳实践是限制MAXDOP选项值,在NUMA节点里的核心数(包括超线程的核心数)范围内。这样就可以保证SQL Server的并行计划呆在NUMA节点内

    小结

    这一期的性能调优培训里我讲解了SQL Server里的并行执行计划,你学到了在并行执行计划里涉及到的各种运算符,还有在SQL Server里你如何配置并行度。如果你想对并行计划有更深入的了解,可以看下…………(此次内容待完善)。

    看完这篇文章,性能调优培训的第3个月就已经结束了,在下一个月我会讲解下SQL Server里的统计信息。请继续关注!

    围观PPT:

    0812_12_并行执行计划.rar

    注:此文章为WoodyTu学习MS SQL技术,收集整理相关文档撰写,欢迎转载,请在文章页面明显位置给出此文链接!
    若您觉得这篇文章还不错请点击下右下角的推荐,有了您的支持才能激发作者更大的写作热情,非常感谢!

    转载于:https://www.cnblogs.com/UUUz/p/10214872.html

    展开全文
  • Hive 并行执行

    2019-11-28 21:40:20
    Hive 并行执行 Hive会将一个查询转化成一个或者多个阶段。 这样的阶段可以是MapReduce阶段、抽样阶段、合并阶段、limit阶段。或者Hive执行过程中可能需要的其他阶段。默认情况下,Hive一次只会执行一个阶段。 不过,...

    Hive 并行执行

    Hive会将一个查询转化成一个或者多个阶段。

    这样的阶段可以是MapReduce阶段、抽样阶段、合并阶段、limit阶段。或者Hive执行过程中可能需要的其他阶段。默认情况下,Hive一次只会执行一个阶段。

    不过,某个特定的job可能包含众多的阶段,而这些阶段可能并非完全互相依赖的,也就是说有些阶段是可以并行执行的,这样可能使得整个job的执行时间缩短。

    不过,如果有更多的阶段可以并行执行,那么job可能就越快完成。

    通过设置参数hive.exec.parallel值为true,就可以开启并发执行。

    不过,在共享集群中,需要注意下,如果job中并行阶段增多,那么集群利用率就会增加。

    set hive.exec.parallel=true;              //打开任务并行执行
    set hive.exec.parallel.thread.number=16;  //同一个sql允许最大并行度,默认为8。
    

    当然,得是在系统资源比较空闲的时候才有优势,否则,没资源,并行也起不来。

    展开全文
  • shell脚本调用并行执行为什么要并行工作?(Why Do Work In Parallel?) In big ????, fast ????‍♂️, and complicated ⁉️ codebases, there is a substantial amount of processing that needs to be done. Doing...

    shell脚本调用并行执行

    为什么要并行工作?(Why Do Work In Parallel?)

    In big 💪, fast 🏃‍♂️, and complicated ⁉️ codebases, there is a substantial amount of processing that needs to be done. Doing all of that processing synchronously (one after another) will increase the time 🕐 the code needs to execute.

    在大型💪,快速🏃️和复杂的⁉️代码库中,需要进行大量处理。 同步执行所有这些处理(一个接一个)将增加代码执行的时间。

    A good way to get around this problem is to do some of these processes asynchronously when they do not depend on each other.

    解决此问题的一个好方法是当其中一些进程彼此不依赖时异步进行。

    Best practice Involves using a Thread Pool and wrapping your tasks in a Runnable (does not return anything) or a Callable (does return something).

    最佳实践包括使用线程池并将任务包装在Runnable(不返回任何内容)或Callable(确实返回一些内容)中。

    In this tutorial, we will see how we can speed up our program by creating a few dummy service calls and running them in parallel to make our code fly like a rocket.

    在本教程中,我们将看到如何通过创建一些虚拟服务调用并并行运行它们以使我们的代码像火箭一样飞行来加速程序。

    Image for post
    Bill Jelen on Bill unsplashJelen摄

    实施可运行(Implementing Runnable)

    Below, we will implement the Runnable interface I was talking about, we will not need to return anything in this example so we don’t need to use a Callable.

    在下面,我们将实现我正在谈论的Runnable接口,在此示例中,我们无需返回任何内容,因此我们无需使用Callable。

    In our run() we will print the start time of the task as well as the task name and thread name.

    在我们的run()中,我们将打印任务的开始时间以及任务名称线程名称

    Then we will wait for the right amount of time, and print out our “done” ✅ message.

    然后,我们将等待适当的时间,然后打印出“完成”✅消息。

    We need to wrap this code in a try catch since it will be executing on a parallel thread. Anytime we have code that runs on a parallel thread, we have a chance to throw the InterruptedException so we will just add a quick catch for that.

    我们需要将此代码包装在try catch中,因为它将在并行线程上执行。 每当我们有在并行线程上运行的代码时,就有机会抛出InterruptedException,因此我们将为此添加一个快速捕获。

    我们的模拟应用 (Our Mock App)

    Imagine we have a website that needs to load some assets before working properly

    想象一下,我们有一个网站需要加载一些资产才能正常工作

    • Get Customer DB, 5000ms

      获取客户数据库,5000ms
    • Get Products DB, 7500ms

      获取产品数据库,7500ms
    • Load Front End Resources 1000ms

      加载前端资源1000ms
    • Verify Security 4000ms

      验证安全性4000毫秒

    Doing this Sequentially, this would take 17500ms 🙀. However, we can speed up this process using parallelization 🤓.

    依次执行此操作将花费17500毫秒。 但是,我们可以使用并行化speed加快此过程。

    Below is a picture of how executing these tasks will run using 2 threads.

    下面是如何使用2个线程执行这些任务的图片。

    Image for post

    The time to finish in parallel (with 2 threads) is 10000ms 😃 which is almost 2x faster than the synchronized time.

    并行完成(带有2个线程)的时间为10000ms😃,这几乎比同步时间快2倍。

    Below is the expected output.

    以下是预期的输出。

    Task started: Get Products DB on thread pool-1-thread-2
    Task started: Get Customer DB on thread pool-1-thread-1
    Task done: Get Customer DB after 5004ms on thread pool-1-thread-1
    Task started: Load Front End Resources on thread pool-1-thread-1
    Task done: Load Front End Resources after 1002ms on thread pool-1-thread-1
    Task started: Verify Security on thread pool-1-thread-1
    Task done: Get Products DB after 7504ms on thread pool-1-thread-2
    Task done: Verify Security after 4004ms on thread pool-1-thread-1

    ⚠️阿姆达尔定律⚠️ (⚠️Amdahl’s Law⚠️)

    Now there is a limit to HOW MUCH this can speed up your code and the principle for this is called Amdahl’s Law. The formula is

    现在,如何加快代码执行速度是有限制的,其原理称为阿姆达尔定律。 公式是

    (Total work)/(Largest work that must be done in sequence)

    In our example, that would be (17,500)/(7,500) = 2.333.

    在我们的示例中,这将是(17,500)/(7,500)= 2.333。

    Therefore, we can achieve a 2.333X speedup by using parallelization. (To achieve this speed up, we would need to add more threads).

    因此,通过使用并行化,我们可以实现2.333倍的加速。 (要实现此速度,我们需要添加更多线程)。

    翻译自: https://levelup.gitconnected.com/make-your-code-lightning-quick-by-executing-calls-in-parallel-5ddde9965d50

    shell脚本调用并行执行

    展开全文
  • 并行执行:& 串行执行:&& 出现错误退出 什么都不加,出现错误会继续执行
  • TestNG系列教程:并行执行测试 目录 1. 并行执行测试的优势 2. 如何并行地执行测试方法 3. 如何并行地执行测试类 4. 如何并行地执行同一测试套件内的各个测试组件 5. 如何配置需要在多线程环境中执行的测试方法
  • 并行执行是指一组程序按照独立的,不同步的速度执行,时间上不重叠; 串行就是指令一个一个的执行。并行是指令同时并行执行。总结: 并发是指多个线程轮流执行(单核CPU); 并行是指多个线程同时执行(多核CPU)...
  • Oracle并行执行

    千次阅读 2015-02-13 10:49:18
    Oracle并行执行是一种分而治之的方法。执行一个sql 时,分配多个并行进程同时执行数据扫描,连接以及聚合等操作,使用更多的资源,得到更快的sql 响应时间。并行执行是充分利用硬件资源,处理大量数据时的核心技术。...
  • 并发可能顺序执行也可能并行执行,这取决于CPU的核数,如果CPU是单核的,那么并发处理就会顺序执行,如果CPU是多核的,那么并发处理就可能会并行执行
  • 1.Promise.all 并行执行promise getA和getB并行执行,然后输出结果。如果有一个错误,就抛出错误 /** * 每一个promise都必须返回resolve结果才正确 * 每一个promise都不处理错误 */ const getA = new Promise...
  • 并行执行npm脚本

    2019-11-12 17:46:03
    有些时候我们想要好几个npm 脚本一起执行,如果用&&...npm包npm-run-all 可以帮助达到并行执行npm语句的作用,用法是npm-run-all -p 脚本1 脚本2 脚本n,其中p是parallel(并行)的意思 ...
  • @Scheduled并行执行

    2020-06-30 14:19:31
    设置定时任务并行执行 @Configuration public class ScheduleConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { Task...
  • pyspark脚本并行执行

    2020-06-05 13:43:11
    pyspark脚本并行执行 最近一个模型在预测数据时因为数据量太大而速度很慢,想要做成并行,结果不知道怎么动态命名变量。 最后选择动态传入驱动程序名称得以解决 代码如下: #导入所需模块 from pyspark import ...
  • 需求:并行执行完这三个脚本之后,输出helloworld。 并行执行命令,通过&后台运行来实现,之后是等待并行执行完毕,输出helloworld。 sh a.sh & sh b.sh & sh c.sh & wait echo ...
  • 并行执行就是用系统资源去换取执行时间。 并行执行会占用大量系统资源来加速SQL任务的执行,如果系统资源本身不多的话就不要用这个配置。 -- 开启并行执行 set hive.exec.parallel=true; -- 设置并行度,默认是8 ...
  • oracle 并行执行sql

    千次阅读 2018-12-06 21:43:24
    并行执行执行sql alter session enable parallel dml; update /*+ parallel(t,100)*/ People t set t.handle_flag='0' where t.handle_flag is null ; commit; alter session disable parallel dml 如果数据量大 ...
  • shell 并行执行

    千次阅读 2015-09-23 17:01:44
    {sh a.sh }& {sh b.sh}& {sh c.sh}& wait sh d.sh exit 这样就可以让 a.sh b.sh c.sh并行执行
  • 在 PowerShell 中可以轻松的执行后台任务并且让多个后台任务并行执行。本文介绍 PowerShell 中 Job 相关的一些命令,并通过 demo 演示如何在后台同时执行多个任务。 PowerShell 中执行后台任务的模式 下图描述了在 ...
  • Linux命令并行执行,顺序执行

    千次阅读 2019-08-08 09:33:07
    1、Linux并行执行命令 在命令之间采用&进行连接 示例: run1.sh&run2.sh&run3.sh&run4.sh&run5.sh 如果不是脚本而是一个程序块,那么可以采用如下形式来进行: {程序块内容1}&{程序块...
  • 这篇文章会带着大家学习到如何在不同设备中并行执行测试。 并行执行测试能够带来的好处: 提升测试效率,我们可以将测试用例分发给不同的设备执行,从而可以减少整体测试所花费的时间 同时我们可以将相同的...
  • 《 Quartz 线程处理之——并行执行与串行执行 》 Quartz定时任务默认都是并发执行的,不会等待上一次任务执行完毕,只要间隔时间到就会执行, 如果定时任执行太长,会长时间占用资源,导致其它任务堵塞...
  • Shell-使用&和wait让你的脚本并行执行

    万次阅读 多人点赞 2019-02-19 21:57:56
    假定业务上多个业务逻辑没有先后关系,每个脚本的执行时间也很长 ,推荐并行执行。 一般情况下,我们会把每个业务逻辑写到一个单独的脚本里,在服务器上逐一调用,每次都要手工去敲命令。 如果我们把这些脚本放到一个...
  • 通过RxJava 1.1.1中引入的Completable抽象,如何并行执行阻止“仅副作用”(也称为void)任务的并行执行变得更加容易。 “ 正如您可能已经注意到,阅读我的博客时,我主要专注于软件Craft.io和自动代码测试。 ...
  • 当测试用例都是独立的,用例之间不存在依赖时,我们可以进行并行设置,并行执行测试用例。 并行用例执行的维度有哪些? 本文将介绍通过TestNG并行执行case的相关知识点 正文 1、创建两个测试类 TestNGParallel1....
  • Jenkins pipeline 并行执行任务流

    千次阅读 2018-10-04 18:07:00
    笔者在《Jenkins 在声明式 pipeline 中并行执行任务》一文中介绍了如何在声明式 pipeline 中执行并行的任务。前一段时间,Jenkins 发布了 1.3 版的声明式 pipeline(declarative pipeline),这个版本继续增强了并行...
  • 本期目标:理解Thread Groups的顺序执行与并行执行 控制因子:Run Thread Groups consecutively(i.e.one at time) 预期结论: 1、勾选 Run Thread Groups consecutively(i.e.one at time),则表示顺序执行。顺序...
  • 谈Spark下并行执行多个Job的问题

    万次阅读 多人点赞 2019-03-20 19:08:03
    本文结合笔者的实践场景,探讨了Spark下并行执行多个Job的问题。梳理了Spark任务调度的机制,并总结了实践中需要考虑的问题。
  • hive并行执行job

    2014-05-07 17:46:25
    并行执行的确可以大的加快任务的执行速率,但不会减少其占用的资源。 在hive中也有并行执行的选项。     set hive.exec.parallel=true; //打开任务并行执行   set hive.exec.parallel.thread....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,392
精华内容 12,156
关键字:

并行执行