SHARD_ROW_ID_BITS
このドキュメントでは、暗黙的に_tidb_rowidシャーディングされた後にシャードのビット数を設定するために使用されるSHARD_ROW_ID_BITSテーブル属性を紹介します。
コンセプト
クラスター化されていない主キーまたは主キーのないテーブルの場合、TiDB は自動的に生成された_tidb_rowidを暗黙のAUTO_INCREMENT行IDとして使用します。多数のINSERT操作が実行されると、データは単一のリージョンに書き込まれるため、書き込みホットスポットが発生します。
ホットスポットの問題を軽減するには、 SHARD_ROW_ID_BITS設定できます。行 ID は分散しており、データは複数の異なるリージョンに書き込まれます。
SHARD_ROW_ID_BITS = 416個のシャードを示しますSHARD_ROW_ID_BITS = 664個のシャードを示しますSHARD_ROW_ID_BITS = 0デフォルトの1シャードを示します
SHARD_ROW_ID_BITS = S設定すると、 _tidb_rowidの構造は次のようになります。
- AUTO_INCREMENTビットの値はTiKVに格納され、順次割り当てられます。値が割り当てられるたびに、次の値は1ずつ増加します。AUTO_INCREMENTビットの値が使い果たされると(つまり、最大値に達すると)、以降の自動割り当てはエラー
Failed to read auto-increment value from storage engineで失敗します。 - 値の範囲は
_tidb_rowidです。最終的に生成される値の最大ビット数は、シャードビット + AUTO_INCREMENTビットなので、最大値は(2^63)-1です。
使用方法の詳細については、 ホットスポットの問題のトラブルシューティングガイド参照してください。
例
CREATE TABLE t (
id INT PRIMARY KEY NONCLUSTERED
) SHARD_ROW_ID_BITS = 4;
ALTER TABLE t SHARD_ROW_ID_BITS = 4;