首頁  >  問答  >  主體

我是否能夠使用mysql內建函數get_lock?

外面有一個批次作業。而且有多台伺服器可以處理該作業。 我只希望在特定時間內,多台伺服器中的一台伺服器會取得並處理該作業。

為了實現這個目的,在調查全域鎖定機制時,我發現了mysql的get_lock函數。

另外,由於已經依賴mysql,我認為可以使用這個函數。

然而,令人懷疑的是,在尋找全域鎖定機制時,大多數都使用redis等,很難找到使用get_lock的案例。

所以我懷疑mysql的get_lock是否有任何缺點。

我目前的狀況是已經在使用mysql,但沒有使用redis。

那麼,我可以使用mysql的get_lock進行全域鎖定嗎? 或者mysql的get_lock有什麼缺點嗎?

P粉875565683P粉875565683370 天前588

全部回覆(1)我來回復

  • P粉156532706

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

    已經投票關閉了這個問題,但是一些建議可能會有幫助。

    據我了解,您有幾台處理相同資料集的機器 - 您希望確保資料項目的獨佔性。您似乎正在考慮一種諮詢鎖定機制,即數據用戶需要尋找鎖定然後在使用數據之前創建它們。諮詢鎖定應該只作為最後的選擇:

    • 資料用戶端需要明確選擇加入鎖定機制 - 隨著系統變得越來越複雜,越來越有可能有人編寫一些程式碼,未能像其他所有東西一樣使用鎖定機制。然後就會出現問題
    • 諮詢鎖定導致狀態被替代 - 鎖定狀態保存在與需要鎖定的操作不同的位置。您現在處於CAP定理的領域

    請嘗試重新發布帶有資料接收器和資料來源以及可用資源的詳細信息,而不是詢問是否適合一個未定義的問題的解決方案。

    回覆
    0
  • 取消回覆