我们可以并行调用存储过程来提高执行速度。例如:我有三个存储过程从三个主表中提取数据并将其加载/插入到单个源表中。目前我有三个程序:
CALL sp_1();
CALL sp_2();
CALL sp_3();
并以顺序方式运行它以插入需要更多时间的记录。有没有办法以并行方式运行所有这些程序,以缩短执行时间并加快处理速度。请帮助我解决这个问题。
答案 0 :(得分:1)
问:我们可以并行调用存储过程来提高执行速度。
答:简短的回答是否定的。没有内置机制(在MySQL中)将使存储过程“并行”运行。要实现并行处理,应该需要设计应用程序,利用与MySQL的多个连接,将处理拆分为可以并行运行的块,并协调这些进程。
就“提高执行速度”而言,你真的需要首先找出造成缓慢的原因。
如果问题是存储I / O,那么并行化过程可能不会提高执行速度。
如果该过程使用游标,要处理set-by-agonizing-row(RBAR),并为每一行运行单独的INSERT语句,那么该过程必然会非常缓慢。在这种情况下,您真的需要探索如何在合理大小的集合中处理行。
该过程也可能正在执行以防止MySQL有效利用可用索引的方式编写的SQL语句。或者,可能无法使用适当的索引。
在启动并行化流程的路径之前,了解实际的瓶颈是很重要的。 “并行”运行流程不一定会提高执行速度。
答案 1 :(得分:0)
创建多个活动以同时提交作业。
唯一的问题是您无法从存储过程创建事件。