ロック機能
TiDB は、MySQL 8.0 で利用可能なユーザー レベルロック関数のほとんどをサポートしています。
サポートされている関数
MySQLの互換性
- TiDB で許可される最小タイムアウトは 1 秒、最大タイムアウトは 1 時間 (3600 秒) です。これは、0 秒と無制限 (
timeout=-1) の両方のタイムアウトが許可されている MySQL とは異なります。TiDB は範囲外の値を最も近い許容値に自動的に変換し、timeout=-1は 3600 秒に変換されます。 - TiDBは、ユーザーレベルロックによるデッドロックを自動的に検出しません。デッドロックが発生したセッションは最大1時間後にタイムアウトしますが、影響を受けたセッションのいずれかで
KILL使用することで手動で解決することもできます。また、ユーザーレベルロックを常に同じ順序で取得することで、デッドロックを防ぐこともできます。 - ロックはクラスタ内のすべてのTiDBサーバーで有効になります。これは、ロックが単一のサーバーにローカルであるMySQL クラスタやグループレプリケーションとは異なります。
IS_USED_LOCK()、別のセッションから呼び出され、ロックを保持しているプロセスの ID を返すことができない場合は1返します。