mysqlの組み込み関数get_lockを使用できますか?
P粉875565683
P粉875565683 2023-09-15 21:20:11
0
1
702

外部にバッチ ジョブがあります。そして、そのジョブを処理できるサーバーが複数あります。 ジョブは、特定の時間内に多数のサーバーのうちの 1 つによって取得され、処理されるようにしたいだけです。

この目的を達成するために、グローバルロックの仕組みを調べていたところ、mysqlのget_lock関数を発見しました。

また、すでにmysqlに依存しているので、この機能が使えると思います。

ただ、怪しいのは、グローバルロックの仕組みを探す場合、redisなどを使っているケースが多く、get_lockを使っているケースがなかなか見つからないことです。

ということで、mysql の get_lock に何か欠点があるのか​​どうかは疑問です。

私の現在の状況は、すでに mysql を使用していますが、redis は使用していません。

それでは、mysql の get_lock をグローバル ロックに使用できますか? それともmysqlのget_lockに何か欠点があるのでしょうか?

P粉875565683
P粉875565683

全員に返信(1)
P粉156532706

この質問は投票で終了しましたが、いくつかの提案が役に立つかもしれません。

私の理解では、同じデータセットを処理する複数のマシンがあるとします。データ項目の排他性を確保したいと考えています。データ利用者がデータを使用する前にロックを探して作成する必要がある、勧告的なロック メカニズムを検討しているようです。アドバイザリー ロックは最後の手段としてのみ使用してください:

  • データ クライアントは、ロック メカニズムを明示的にオプトインする必要があります。システムがより複雑になるにつれて、誰かが他のものと同様にロック メカニズムを使用できないコードを作成した可能性が高くなります。そうなると問題が発生します
  • アドバイザリー ロックにより状態が置き換えられます。ロック状態は、ロックを必要とした操作とは異なる場所に保存されます。あなたは今、CAP 定理の領域に入りました。
未定義の問題に対する適切な解決策かどうかを尋ねるのではなく、データ シンクとデータ ソース、および利用可能なリソースの詳細を記載して再投稿してください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート