📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

ADMIN RECOVER INDEX



行データとインデックスデータに不整合がある場合、 ADMIN RECOVER INDEXステートメントを使用して、冗長インデックスに基づいて整合性を回復できます。ただし、この構文は外部キー制約まだサポートしていないことに注意してください。

概要

AdminRecoverStmt
ADMINRECOVERINDEXTableNameIndexName

何らかの理由により、データベース内のtblテーブルに一貫性のない行データとインデックスがあるとします (たとえば、災害復旧シナリオでクラスター内の一部の行データが失われるなど)。

SELECT * FROM tbl; ERROR 1105 (HY000): inconsistent index idx handle count 2 isn't equal to value count 3 ADMIN CHECK INDEX tbl idx ; ERROR 1105 (HY000): handle &kv.CommonHandle{encoded:[]uint8{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8}, colEndOffsets:[]uint16{0xa}}, index:types.Datum{k:0x5, decimal:0x0, length:0x0, i:0, collation:"utf8mb4_bin", b:[]uint8{0x0}, x:interface {}(nil)} != record:<nil>

クエリSELECTのエラーメッセージから、テーブルtblには3行のデータと2行のインデックスデータが含まれていることがわかります。これは、行データとインデックスデータに矛盾があることを意味します。同時に、少なくとも1行のデータに対応するインデックスがありません。この場合、 ADMIN RECOVER INDEXステートメントを使用して、不足しているインデックスを補うことができます。

ADMIN RECOVER INDEX tbl idx;

実行結果は以下のとおりです。

ADMIN RECOVER INDEX tbl idx; +-------------+------------+ | ADDED_COUNT | SCAN_COUNT | +-------------+------------+ | 1 | 3 | +-------------+------------+ 1 row in set (0.00 sec)

ADMIN CHECK INDEXステートメントを再度実行して、データとインデックスの一貫性をチェックし、データが通常の状態に復元されたかどうかを確認できます。

ADMIN CHECK INDEX tbl idx; Query OK, 0 rows affected (0.01 sec)

MySQLの互換性

このステートメントは、MySQL 構文に対する TiDB 拡張です。

参照

このページは役に立ちましたか?