Mysql存储过程并行处理

时间:2016-01-07 19:19:10

标签: mysql stored-procedures parallel-processing

我们可以并行调用存储过程来提高执行速度。例如:我有三个存储过程从三个主表中提取数据并将其加载/插入到单个源表中。目前我有三个程序:

CALL sp_1(); 
CALL sp_2(); 
CALL sp_3();

并以顺序方式运行它以插入需要更多时间的记录。有没有办法以并行方式运行所有这些程序,以缩短执行时间并加快处理速度。请帮助我解决这个问题。

2 个答案:

答案 0 :(得分:1)

问:我们可以并行调用存储过程来提高执行速度。

答:简短的回答是否定的。没有内置机制(在MySQL中)将使存储过程“并行”运行。要实现并行处理,应该需要设计应用程序,利用与MySQL的多个连接,将处理拆分为可以并行运行的块,并协调这些进程。

就“提高执行速度”而言,你真的需要首先找出造成缓慢的原因。

如果问题是存储I / O,那么并行化过程可能不会提高执行速度。

如果该过程使用游标,要处理set-by-agonizing-row(RBAR),并为每一行运行单独的INSERT语句,那么该过程必然会非常缓慢。在这种情况下,您真的需要探索如何在合理大小的集合中处理行。

该过程也可能正在执行以防止MySQL有效利用可用索引的方式编写的SQL语句。或者,可能无法使用适当的索引。

在启动并行化流程的路径之前,了解实际的瓶颈是很重要的。 “并行”运行流程不一定会提高执行速度。

答案 1 :(得分:0)

创建多个活动以同时提交作业。

唯一的问题是您无法从存储过程创建事件。