検索

ホームページ  >  に質問  >  本文

mysqlの組み込み関数get_lockを使用できますか?

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

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

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

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

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

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

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

P粉875565683P粉875565683440日前687

全員に返信(1)返信します

  • P粉156532706

    P粉1565327062023-09-16 12:58:12

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

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

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

    返事
    0
  • キャンセル返事