重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

ロック機能

TiDBは、 MySQL 5.7で利用可能なユーザーレベルロック関数のほとんどをサポートします。

サポートされている関数

名前説明
GET_LOCK(lockName, timeout)アドバイザリーロックを取得します。 lockNameパラメーターは64文字を超えてはなりません。タイムアウトする前に最大timeout秒間待機し、障害を返します。
RELEASE_LOCK(lockName)以前に取得したロックを解放します。 lockNameパラメーターは64文字を超えてはなりません。
RELEASE_ALL_LOCKS()現在のセッションによって保持されているすべてのロックを解放します。

MySQLの互換性

  • TiDBで許可されている最小タイムアウトは1秒で、最大タイムアウトは1時間(3600秒)です。これは、0秒と無制限のタイムアウト( timeout=-1 )の両方が許可されるMySQLとは異なります。 TiDBは、範囲外の値を最も近い許容値に自動的に変換し、 timeout=-1秒から3600秒に変換します。
  • TiDBは、ユーザーレベルのロックによって引き起こされたデッドロックを自動的に検出しません。デッドロックされたセッションは、最大1時間後にタイムアウトしますが、影響を受けるセッションの1つでKILLを使用して手動で解決することもできます。常に同じ順序でユーザーレベルのロックを取得することで、デッドロックを防ぐこともできます。
  • ロックは、クラスタのすべてのTiDBサーバーで有効になります。これは、ロックが単一のサーバーに対してローカルであるMySQLクラスターおよびグループレプリケーションとは異なります。

サポートされていない関数

  • IS_FREE_LOCK()
  • IS_USED_LOCK()