Skip to content

Commit b98f7d7

Browse files
author
github-actions
committed
update MD by dispatch event pingcap/docs i18n-ja-release-8.5
1 parent db7895e commit b98f7d7

23 files changed

+2223
-1670
lines changed

markdown-pages/ja/tidb/release-8.5/TOC.md

Lines changed: 253 additions & 252 deletions
Large diffs are not rendered by default.

markdown-pages/ja/tidb/release-8.5/clustered-indexes.md

Lines changed: 53 additions & 53 deletions
Large diffs are not rendered by default.

markdown-pages/ja/tidb/release-8.5/dr-secondary-cluster.md

Lines changed: 109 additions & 111 deletions
Large diffs are not rendered by default.

markdown-pages/ja/tidb/release-8.5/releases/release-8.5.0.md

Lines changed: 203 additions & 203 deletions
Large diffs are not rendered by default.

markdown-pages/ja/tidb/release-8.5/releases/release-8.5.5.md

Lines changed: 182 additions & 181 deletions
Large diffs are not rendered by default.

markdown-pages/ja/tidb/release-8.5/shard-row-id-bits.md

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,51 @@
11
---
22
title: SHARD_ROW_ID_BITS
3-
summary: SHARD_ROW_ID_BITS 属性について学習します
3+
summary: SHARD_ROW_ID_BITS属性について学びましょう
44
---
55

6-
# シャード行IDビット {#shard-row-id-bits}
6+
# SHARD_ROW_ID_BITS {#shard-row-id-bits}
77

8-
このドキュメントでは、暗黙の`_tidb_rowid`シャードされた後のシャードのビット数を設定するために使用される`SHARD_ROW_ID_BITS`テーブル属性を紹介します。
8+
このドキュメントでは、暗黙的に[`_tidb_rowid`](/tidb-rowid.md)シャーディングされた後にシャードのビット数を設定するために使用される`SHARD_ROW_ID_BITS`テーブル属性を紹介します。
99

1010
## コンセプト {#concept}
1111

12-
非クラスター化主キーを持つテーブル、または主キーを持たないテーブルの場合、TiDBは暗黙的な自動インクリメント行IDを使用します。大量の`INSERT`操作が実行されると、データは単一のリージョンに書き込まれ、書き込みホットスポットが発生します。
12+
クラスタ化されていないプライマリキーまたはプライマリキーのないテーブルの場合、TiDB は自動的に生成された[`_tidb_rowid`](/tidb-rowid.md)暗黙の自動インクリメント行 ID として使用します。多数の`INSERT`操作が実行されると、データは単一のリージョンに書き込まれるため、書き込みホットスポットが発生します。
1313

14-
ホットスポットの問題を軽減するには、 `SHARD_ROW_ID_BITS`設定します。行 ID が分散され、データが複数の異なるリージョンに書き込まれます
14+
ホットスポットの問題を軽減するには、 `SHARD_ROW_ID_BITS`設定できます。行 ID は分散しており、データは複数の異なるリージョンに書き込まれます
1515

16-
- `SHARD_ROW_ID_BITS = 4` 16個の破片を示す
17-
- `SHARD_ROW_ID_BITS = 6` 64個のシャードを示す
16+
- `SHARD_ROW_ID_BITS = 4` 16個のシャードを示します
17+
- `SHARD_ROW_ID_BITS = 6` 64個のシャードを示します
1818
- `SHARD_ROW_ID_BITS = 0`デフォルトの1シャードを示します
1919

2020
`SHARD_ROW_ID_BITS = S`設定すると、 `_tidb_rowid`の構造は次のようになります。
2121

22-
| 符号ビット | 破片の断片 | 自動インクリメントビット |
23-
| ----- | ------ | ------------ |
24-
| 1ビット | `S`ビット | `63-S`ビット |
22+
| サインビット | 破片の断片 | 自動インクリメントビット |
23+
| ------ | ------ | ------------ |
24+
| 1ビット | `S`ビット | `63-S`ビット |
2525

26-
- 自動インクリメントビットの値はTiKVに格納され、順次割り当てられます。値が割り当てられるたびに、次の値が1ずつ増加します。自動インクリメントビットは、列の値が`_tidb_rowid`場合、グローバルに一意であることを保証します。自動インクリメントビットの値が使い果たされると(つまり、最大値に達すると)、後続の自動割り当てはエラー`Failed to read auto-increment value from storage engine`で失敗します。
27-
- 値の範囲は`_tidb_rowid` : 最終的に生成される値の最大ビット数 = シャード ビット + 自動インクリメント ビットなので、最大値は`(2^63)-1`です。
26+
- 自動インクリメントビットの値はTiKVに格納され、順次割り当てられます。値が割り当てられるたびに、次の値は1ずつ増加します。自動インクリメントビットの値が使い果たされると(つまり、最大値に達すると)、以降の自動割り当てはエラー`Failed to read auto-increment value from storage engine`で失敗します。
27+
- 値の範囲は`_tidb_rowid`です。最終的に生成される値の最大ビット数は、シャードビット + 自動インクリメントビットなので、最大値は`(2^63)-1`です。
28+
29+
> **警告:**
30+
>
31+
> `_tidb_rowid`は TiDB によって暗黙的に割り当てられる内部行 ID です。すべての場合においてグローバルに一意であると想定しないでください。クラスタ化インデックスを使用しないパーティション テーブルの場合、 `ALTER TABLE ... EXCHANGE PARTITION`異なるパーティションに同じ`_tidb_rowid`値を残す可能性があります。詳細については、 [`_tidb_rowid`](/tidb-rowid.md)参照してください。
2832
2933
> **注記:**
3034
>
3135
> シャードビットの選択( `S` ):
3236
>
33-
> - `_tidb_rowid`の合計ビット数は 64 であるため、シャードビット数は自動インクリメントビット数に影響します。シャードビット数が増加すると、自動インクリメントビット数は減少し、逆もまた同様です。したがって、自動インクリメント値のランダム性と利用可能な自動インクリメント領域のバランスをとる必要があります
34-
> - ベストプラクティスは、シャードビットを`log(2, x)`に設定することです。ここで、 `x`クラスター内の TiKV ノードの数です。例えば、TiDB クラスターに TiKV ノードが 16 個ある場合、シャードビットを`log(2, 16)`つまり`4`に設定することをお勧めします。すべてのリージョンが各 TiKV ノードに均等にスケジュールされると、一括書き込みの負荷を異なる TiKV ノードに均等に分散し、リソース使用率を最大化できます
37+
> - `_tidb_rowid`の合計ビット数は64であるため、シャードビットの数は自動インクリメントビットの数に影響します。シャードビットの数が増えると自動インクリメントビットの数は減り、その逆もまた然りです。したがって、自動インクリメント値のランダム性と利用可能な自動インクリメント領域のバランスを取る必要があります
38+
> - ベストプラクティスは、シャードビットを`log(2, x)`に設定することです。ここで、 `x`クラスタ内のTiKVノードの数です。たとえば、TiDBクラスタに16個のTiKVノードがある場合、シャードビットを`log(2, 16)` `4`に相当)に設定することをお勧めします。すべてのリージョンが各TiKVノードに均等にスケジュールされた後、バルク書き込みの負荷をさまざまなTiKVノードに均等に分散して、リソース利用率を最大化できます
3539
3640
<CustomContent platform="tidb">
3741

38-
使用方法の詳細については[ホットスポットの問題のトラブルシューティングガイド](/troubleshoot-hot-spot-issues.md#use-shard_row_id_bits-to-process-hotspots)参照してください。
42+
使用方法の詳細については[ホットスポットの問題のトラブルシューティングガイド](/troubleshoot-hot-spot-issues.md#use-shard_row_id_bits-to-process-hotspots)参照してください。
3943

4044
</CustomContent>
4145

4246
<CustomContent platform="tidb-cloud">
4347

44-
使用方法の詳細については[ホットスポットの問題のトラブルシューティングガイド](https://docs.pingcap.com/tidb/stable/troubleshoot-hot-spot-issues#use-shard_row_id_bits-to-process-hotspots)参照してください。
48+
使用方法の詳細については[ホットスポットの問題のトラブルシューティングガイド](https://docs.pingcap.com/tidb/stable/troubleshoot-hot-spot-issues#use-shard_row_id_bits-to-process-hotspots)参照してください。
4549

4650
</CustomContent>
4751

markdown-pages/ja/tidb/release-8.5/sql-statements/sql-statement-show-table-next-rowid.md

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
---
22
title: SHOW TABLE NEXT_ROW_ID
3-
summary: TiDB での SHOW TABLE NEXT_ROW_ID` の使用方法を学びます
3+
summary: TiDBにおけるSHOW TABLE NEXT_ROW_ID`の使い方を学びましょう
44
---
55

6-
# テーブルの次の行IDを表示 {#show-table-next-row-id}
6+
# SHOW TABLE NEXT_ROW_ID {#show-table-next-row-id}
77

8-
`SHOW TABLE NEXT_ROW_ID` 、次のようなテーブルの特殊な列の詳細を表示するために使用されます
8+
`SHOW TABLE NEXT_ROW_ID`は、以下のようなテーブルの特定の列の詳細を表示するために使用されます
99

10-
- TiDB によって自動的に作成された[`AUTO_INCREMENT`](/auto-increment.md)列、つまり`_tidb_rowid`
11-
- ユーザーが作成した列は`AUTO_INCREMENT`
12-
- ユーザーが作成した列は[`AUTO_RANDOM`](/auto-random.md)
13-
- ユーザーが作成したものは[`SEQUENCE`](/sql-statements/sql-statement-create-sequence.md)
10+
- [`_tidb_rowid`](/tidb-rowid.md) 、サポートされているテーブルの場合、TiDB によって自動的に管理される非表示の行 ID 列です
11+
- ユーザーによって作成された列は`AUTO_INCREMENT`
12+
- ユーザーによって作成された列は[`AUTO_RANDOM`](/auto-random.md)
13+
- ユーザーによって作成されたファイル数は[`SEQUENCE`](/sql-statements/sql-statement-create-sequence.md)
1414

15-
## 概要 {#synopsis}
15+
## あらすじ {#synopsis}
1616

1717
```ebnf+diagram
1818
ShowTableNextRowIDStmt ::=
@@ -21,7 +21,7 @@ ShowTableNextRowIDStmt ::=
2121

2222
## 例 {#examples}
2323

24-
新しく作成されたテーブルの場合、行 ID が割り当てられていないため`NEXT_GLOBAL_ROW_ID` `1`なります
24+
新しく作成されたテーブルの場合、行IDが割り当てられないため`NEXT_GLOBAL_ROW_ID``1`になります
2525

2626
```sql
2727
CREATE TABLE t(a int);
@@ -38,7 +38,7 @@ SHOW TABLE t NEXT_ROW_ID;
3838
1 row in set (0.00 sec)
3939
```
4040

41-
テーブルにデータが書き込まれました。データを挿入するTiDBサーバーは、一度に30000個のIDを割り当ててキャッシュします。そのため、NEXT_GLOBAL_ROW_IDは現在30001です。IDの数は[`AUTO_ID_CACHE`](/auto-increment.md#auto_id_cache)で制御されます。
41+
データがテーブルに書き込まれました。データを挿入する TiDBサーバーは、一度に 30000 個の ID を割り当ててキャッシュします。したがって、NEXT_GLOBAL_ROW_ID は現在 30001 です。ID の数は[`AUTO_ID_CACHE`](/auto-increment.md#auto_id_cache)で制御されます。
4242

4343
```sql
4444
INSERT INTO t VALUES (), (), ();
@@ -56,12 +56,13 @@ SHOW TABLE t NEXT_ROW_ID;
5656
1 row in set (0.00 sec)
5757
```
5858

59-
## MySQLの互換性 {#mysql-compatibility}
59+
## MySQLとの互換性 {#mysql-compatibility}
6060

61-
このステートメントは、MySQL 構文に対する TiDB 拡張です
61+
このステートメントは、MySQL構文に対するTiDBの拡張機能です
6262

63-
## 参照 {#see-also}
63+
## 関連項目 {#see-also}
6464

65-
- [テーブルの作成](/sql-statements/sql-statement-create-table.md)
66-
- [自動ランダム](/auto-random.md)
67-
- [シーケンスの作成](/sql-statements/sql-statement-create-sequence.md)
65+
- [テーブルを作成する](/sql-statements/sql-statement-create-table.md)
66+
- [自動乱数](/auto-random.md)
67+
- [CREATE_SEQUENCE](/sql-statements/sql-statement-create-sequence.md)
68+
- [_tidb_rowid](/tidb-rowid.md)
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
---
2+
title: _tidb_rowid
3+
summary: _tidb_rowid`とは何か、いつ利用できるのか、そして安全に使用する方法について学びましょう。
4+
---
5+
6+
# <code>_tidb_rowid</code> {#code-tidb-rowid-code}
7+
8+
`_tidb_rowid`はTiDBによって自動的に生成される非表示のシステム列です。クラスタ化インデックスを使用しないテーブルの場合、この列はテーブルの内部行IDとして機能します。テーブルスキーマでこの列を宣言または変更することはできませんが、テーブルが内部行IDとして`_tidb_rowid`使用している場合は、SQLで参照できます。
9+
10+
現在の実装では、 `_tidb_rowid`はTiDBによって自動的に管理される追加の`BIGINT NOT NULL`列です。
11+
12+
> **警告:**
13+
>
14+
> - `_tidb_rowid`常にグローバルに一意であるとは限らないことに注意してください。クラスタ化インデックスを使用しないパーティションテーブルの場合、 `ALTER TABLE ... EXCHANGE PARTITION`実行すると、異なるパーティション間で`_tidb_rowid`値が重複する可能性があります。
15+
> - 安定した一意の識別子が必要な場合は、 `_tidb_rowid`に依存するのではなく、明示的な主キーを定義して使用してください。
16+
17+
## <code>_tidb_rowid</code>が利用可能な場合 {#when-code-tidb-rowid-code-is-available}
18+
19+
TiDBでは、テーブルが一意の行識別子としてクラスタ化された主キーを使用しない場合、各行を識別するために`_tidb_rowid`使用します。実際には、これは次のタイプのテーブルが`_tidb_rowid`使用することを意味します。
20+
21+
- 主キーのないテーブル
22+
- 主キーが明示的に`NONCLUSTERED`と定義されているテーブル
23+
24+
`_tidb_rowid`は、クラスター化インデックスを使用するテーブル (つまり、主キーが`CLUSTERED`として定義されているテーブル。主キーが単一列か複合主キーかは関係ありません) では使用できません。
25+
26+
以下の例は、その違いを示しています。
27+
28+
```sql
29+
CREATE TABLE t1 (a INT, b VARCHAR(20));
30+
CREATE TABLE t2 (id BIGINT PRIMARY KEY NONCLUSTERED, a INT);
31+
CREATE TABLE t3 (id BIGINT PRIMARY KEY CLUSTERED, a INT);
32+
```
33+
34+
`t1``t2`については、これらのテーブルは行識別子としてクラスタ化インデックスを使用していないため、 `_tidb_rowid`に対してクエリを実行できます。
35+
36+
```sql
37+
SELECT _tidb_rowid, a, b FROM t1;
38+
SELECT _tidb_rowid, id, a FROM t2;
39+
```
40+
41+
`t3`の場合、クラスタ化された主キーが既に行識別子になっているため、 `_tidb_rowid`利用できません。
42+
43+
```sql
44+
SELECT _tidb_rowid, id, a FROM t3;
45+
```
46+
47+
```sql
48+
ERROR 1054 (42S22): Unknown column '_tidb_rowid' in 'field list'
49+
```
50+
51+
## <code>_tidb_rowid</code>を読み込む {#read-code-tidb-rowid-code}
52+
53+
`_tidb_rowid`使用するテーブルの場合、 `SELECT`ステートメントで`_tidb_rowid`クエリできます。これは、ページネーション、トラブルシューティング、バッチ処理などのタスクに役立ちます。
54+
55+
例:
56+
57+
```sql
58+
CREATE TABLE t (a INT, b VARCHAR(20));
59+
INSERT INTO t VALUES (1, 'x'), (2, 'y');
60+
61+
SELECT _tidb_rowid, a, b FROM t ORDER BY _tidb_rowid;
62+
```
63+
64+
```sql
65+
+-------------+---+---+
66+
| _tidb_rowid | a | b |
67+
+-------------+---+---+
68+
| 1 | 1 | x |
69+
| 2 | 2 | y |
70+
+-------------+---+---+
71+
```
72+
73+
TiDB が行 ID に割り当てる次の値を表示するには、 `SHOW TABLE ... NEXT_ROW_ID`使用します。
74+
75+
```sql
76+
SHOW TABLE t NEXT_ROW_ID;
77+
```
78+
79+
```sql
80+
+-----------------------+------------+-------------+--------------------+-------------+
81+
| DB_NAME | TABLE_NAME | COLUMN_NAME | NEXT_GLOBAL_ROW_ID | ID_TYPE |
82+
+-----------------------+------------+-------------+--------------------+-------------+
83+
| update_doc_rowid_test | t | _tidb_rowid | 30001 | _TIDB_ROWID |
84+
+-----------------------+------------+-------------+--------------------+-------------+
85+
```
86+
87+
## <code>_tidb_rowid</code>を書き込む {#write-code-tidb-rowid-code}
88+
89+
デフォルトでは、TiDB は`INSERT` 、または`REPLACE`ステートメント`UPDATE` `_tidb_rowid`直接書き込むことを許可しません。
90+
91+
```sql
92+
INSERT INTO t(_tidb_rowid, a, b) VALUES (101, 4, 'w');
93+
```
94+
95+
```sql
96+
ERROR 1105 (HY000): insert, update and replace statements for _tidb_rowid are not supported
97+
```
98+
99+
データインポートまたは移行中に元の行IDを保持する必要がある場合は、まずシステム変数[`tidb_opt_write_row_id`](/system-variables.md#tidb_opt_write_row_id)有効にしてください。
100+
101+
```sql
102+
SET @@tidb_opt_write_row_id = ON;
103+
INSERT INTO t(_tidb_rowid, a, b) VALUES (100, 3, 'z');
104+
SET @@tidb_opt_write_row_id = OFF;
105+
106+
SELECT _tidb_rowid, a, b FROM t WHERE _tidb_rowid = 100;
107+
```
108+
109+
```sql
110+
+-------------+---+---+
111+
| _tidb_rowid | a | b |
112+
+-------------+---+---+
113+
| 100 | 3 | z |
114+
+-------------+---+---+
115+
```
116+
117+
> **警告:**
118+
>
119+
> `tidb_opt_write_row_id`はインポートおよび移行シナリオを想定しています。通常のアプリケーション書き込みには推奨されません。
120+
121+
## 制限 {#restrictions}
122+
123+
- `_tidb_rowid`という名前のユーザー列を作成することはできません。
124+
- 既存のユーザー列の名前を`_tidb_rowid`に変更することはできません。
125+
- `_tidb_rowid`はTiDBの内部列です。ビジネス上の主キーや長期的な識別子として扱わないでください。
126+
- パーティション化された非クラスタ化テーブルでは、 `_tidb_rowid`値はパーティション間で一意であることが保証されません。3 `EXCHANGE PARTITION`実行した後、異なるパーティションに同じ`_tidb_rowid`値を持つ行が含まれる可能性があります。
127+
- `_tidb_rowid`存在するかどうかは、テーブルのスキーマによって異なります。クラスタ化インデックスを持つテーブルの場合は、行識別子として主キーを使用してください。
128+
129+
## ホットスポットの問題に対処する {#address-hotspot-issues}
130+
131+
`_tidb_rowid`使用するテーブルの場合、TiDB はデフォルトで行 ID を昇順で割り当てます。書き込み負荷の高いワークロードでは、これにより書き込みホットスポットが発生する可能性があります。
132+
133+
この問題を軽減するために(行IDとして`_tidb_rowid`を使用するテーブルの場合)、行IDをより均等に分配するために[`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)使用し、必要に応じてリージョンを事前に分割するために[`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions)使用することを検討してください。
134+
135+
例:
136+
137+
```sql
138+
CREATE TABLE t (
139+
id BIGINT PRIMARY KEY NONCLUSTERED,
140+
c INT
141+
) SHARD_ROW_ID_BITS = 4;
142+
```
143+
144+
`SHARD_ROW_ID_BITS` `_tidb_rowid`使用するテーブルにのみ適用され、クラスター化インデックスを持つテーブルには適用されません。
145+
146+
## 関連する記述と変数 {#related-statements-and-variables}
147+
148+
- [`SHOW TABLE NEXT_ROW_ID`](/sql-statements/sql-statement-show-table-next-rowid.md) :TiDBが次に割り当てる行IDを示します
149+
- [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md) :ホットスポットを減らすために暗黙の行IDをシャーディングする
150+
- [`Clustered Indexes`](/clustered-indexes.md) : テーブルが主キーを使用する理由を説明します`_tidb_rowid`
151+
- [`tidb_opt_write_row_id`](/system-variables.md#tidb_opt_write_row_id)`_tidb_rowid`への書き込みを許可するかどうかを制御します
152+
153+
## 関連項目 {#see-also}
154+
155+
- [`CREATE TABLE`](/sql-statements/sql-statement-create-table.md)
156+
- [`AUTO_INCREMENT`](/auto-increment.md)
157+
- [非トランザクションDML](/non-transactional-dml.md)

0 commit comments

Comments
 (0)