在 ETL 中有 2 个并行作业,这 2 个作业几乎同时开始和结束。完成后,他们会将一些细节更新到同一个查找表。两个并行作业都需要相同的时间来完成。如果两个作业同时启动,则这些作业正在查找表上创建一个 mlock,并且这两个作业都失败了。尝试释放 mlock 并再次运行它们。但这仍然会再次进入 mlock。因此在第一个并行作业之前添加了 20 秒的等待时间。然后,两个并行作业都完成了任何问题,并将所需的详细信息更新到查找表。
在此用例中添加等待时间并不是一个理想的解决方案,因为稍后需要添加少量并行作业(大约 20-30 左右)。如果要在每个并行作业之前添加等待步骤,则时间会急剧增加。因为对于第 2 个作业 20 秒,第 3 个作业 40 秒,依此类推.. 到第 20 个作业时,这将是一个很大的数字。
那么寻找替代解决方案而不是在每个作业之前添加等待步骤以避免 MLock 问题?