Kann ich die in MySQL integrierte Funktion get_lock verwenden?
P粉875565683
P粉875565683 2023-09-15 21:20:11
0
1
709

Da draußen gibt es einen Batch-Job. Und es gibt mehrere Server, die diese Aufgabe übernehmen können. Ich möchte, dass der Auftrag nur zu einem bestimmten Zeitpunkt von einem der vielen Server abgeholt und bearbeitet wird.

Um diesen Zweck zu erreichen, habe ich bei der Untersuchung des globalen Sperrmechanismus die Funktion get_lock von MySQL entdeckt.

Da es bereits von MySQL abhängt, denke ich, dass diese Funktion verwendet werden kann.

Was die Leute jedoch misstrauisch macht, ist, dass die meisten von ihnen bei der Suche nach globalen Sperrmechanismen Redis usw. verwenden und es schwierig ist, Fälle mit get_lock zu finden.

Ich bezweifle also, dass get_lock von mysql irgendwelche Nachteile hat.

Meine aktuelle Situation ist, dass ich bereits MySQL verwende, aber nicht Redis.

Kann ich get_lock von MySQL für globale Sperren verwenden? Oder gibt es irgendwelche Mängel von get_lock in MySQL?

P粉875565683
P粉875565683

Antworte allen(1)
P粉156532706

已经投票关闭了这个问题,但是一些建议可能会有帮助。

据我了解,您有几台处理相同数据集的机器 - 您希望确保数据项的独占性。您似乎正在考虑一种咨询锁定机制,即数据使用者需要寻找锁定然后在使用数据之前创建它们。咨询锁定应该只作为最后的选择使用:

  • 数据客户端需要明确选择加入锁定机制 - 随着系统变得越来越复杂,越来越有可能有人编写一些代码,未能像其他所有东西一样使用锁定机制。然后就会出现问题
  • 咨询锁定导致状态被替代 - 锁定状态保存在与需要锁定的操作不同的位置。您现在处于CAP定理的领域

请尝试重新发布带有数据接收器和数据源以及可用资源的详细信息,而不是询问是否适合一个未定义的问题的解决方案。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage