すべてのプロダクト
Search
ドキュメントセンター

PolarDB:グローバルインデックスの確認

最終更新日:Mar 28, 2026

プライマリテーブルとそのグローバルセカンダリインデックス(GSI)テーブル間のデータ整合性を検証し、検出された GSI の不整合を修復します。

仕組み

CHECK GLOBAL INDEX は、プライマリテーブルの各行をスキャンし、対応する GSI エントリと比較することで不整合を検出します。CORRECTION_BASED_ON_PRIMARY を指定して実行すると、プライマリテーブルを真実のソースとして、検出されたすべてのエラーを修復します。

大規模なテーブルの場合、検証には長い時間がかかる場合があります。パフォーマンスへの影響を回避するため、業務の少ない時間帯にチェックを実行してください。スキャン自体が非常に遅いテーブルの場合、HINT を使用して PURE_ASYNC_DDL_MODE を有効化し、操作を純粋な非同期データ定義言語(DDL)文として送信します。詳細については、「DDL 実行エンジンの制御パラメーター」をご参照ください。

修復処理では、プライマリテーブルまたはインデックステーブルのデータがロックされ、バッチ単位で修復が適用されます。同時実行ワークロードへの影響を最小限に抑えるため、修復は非ピーク時間帯に実行してください。

構文

CHECK GLOBAL INDEX gsi_name [ON tbl_name] [extra_cmd]
パラメーター必須説明
gsi_nameはい確認対象の GSI の名前です。
tbl_nameいいえGSI が存在するプライマリテーブルです。指定した場合、GSI テーブルとプライマリテーブル間のインデックス関係が正常であることも検証されます。
extra_cmdいいえ操作モードです。以下の表をご参照ください。

`extra_cmd` の値

説明
(なし)GSI のみを確認します。
SHOW指定した GSI に対する直近の確認または修復の結果を表示します。
CORRECTION_BASED_ON_PRIMARYプライマリテーブルを真実のソースとして、GSI テーブル内の不整合を修復します。

結果セットの列

すべての CHECK GLOBAL INDEX ステートメントは、以下の列を持つ結果セットを返します:

説明
GSI_TABLEGSI の名前です。
ERROR_TYPEエラーの種類です。有効な値については、以下の表をご参照ください。
STATUSエラーの状態です:FOUND(検出済み、未修復)または REPAIRED(修復完了)です。
PRIMARY_KEY該当する行のプライマリキー値です。
DETAILS該当する行の完全データペイロード(JSON 形式)です。

`ERROR_TYPE` の値

説明
MISSINGプライマリテーブルには行が存在するが、GSI に対応するエントリがない場合です。
ORPHANGSI にはエントリが存在するが、プライマリテーブルに対応する行がない場合です。
CONFLICTGSI エントリのデータが、対応するプライマリテーブルの行と異なる場合です。
ERROR_SHARDデータシャードが誤った位置に配置されている場合です。
SUMMARY各結果セットの末尾に追加されるまとめ行です。エラー項目ではありません。
1 行につき複数のエラー種別が発生する場合があります。その場合は、同一のプライマリキーに対してエラー種別ごとに 1 行ずつ結果セットに含まれます。

以下の例では、g_i_check という名前の GSI に対する確認および修復のワークフロー全体を示します。

不整合の確認

mysql> CHECK GLOBAL INDEX `g_i_check`;

不整合が検出されなかった場合:

+-------------+------------+--------+-------------+-----------------------------+
| GSI_TABLE   | ERROR_TYPE | STATUS | PRIMARY_KEY | DETAILS                     |
+-------------+------------+--------+-------------+-----------------------------+
| `g_i_check` | SUMMARY    | --     | --          | OK (7025/7025 rows checked) |
+-------------+------------+--------+-------------+-----------------------------+
1 row in set (1.40 sec)

不整合が検出された場合、該当する各行のリストの後にまとめ行が表示されます:

+-------------+------------+--------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GSI_TABLE   | ERROR_TYPE | STATUS | PRIMARY_KEY | DETAILS                                                                                                                                                                                                                                                                                                                                                                                        |
+-------------+------------+--------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| `g_i_check` | ORPHAN     | FOUND  | (100722)    | {"GSI":{"id":100722,"c_timestamp_6":"2000-01-01 00:00:00.000000","c_timestamp_3":"2000-01-01 00:00:00.000","c_timestamp_1":"2000-01-01 00:00:00.0","c_binary":"OTkAAAAAAAAAAA==","c_int_32":271}}                                                                                                                                                                                              |
| `g_i_check` | CONFLICT   | FOUND  | (108710)    | {"Primary":{"id":108710,"c_timestamp_6":"2000-01-01 00:00:00.000000","c_timestamp_3":"2000-01-01 00:00:00.000","c_timestamp_1":"2000-01-01 00:00:00.0","c_year":"2000","c_int_32":255},"GSI":{"c_int_32_un":123456,"id":108710,"c_timestamp_6":"2000-01-01 00:00:00.000000","c_timestamp_3":"2000-01-01 00:00:00.000","c_timestamp_1":"2000-01-01 00:00:00.0","c_year":"2000","c_int_32":255}} |
| `g_i_check` | MISSING    | FOUND  | (100090)    | {"Primary":{"id":100090,"c_timestamp_6":"2000-01-01 00:00:00.000000","c_timestamp_3":"2000-01-01 00:00:00.000","c_timestamp_1":"2000-01-01 00:00:00.0","c_blob_tiny":"YeS4reWbvWE=","c_int_32":280}}                                                                                                                                                                                           |
| `g_i_check` | SUMMARY    | --     | --          | 3 error found (7025/7025 rows checked)                                                                                                                                                                                                                                                                                                                                                         |
+-------------+------------+--------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4 rows in set (1.92 sec)

不整合の修復

mysql> CHECK GLOBAL INDEX g_i_check CORRECTION_BASED_ON_PRIMARY;
+-------------+------------+--------+-------------+------------------------------------------------------------------------+
| GSI_TABLE   | ERROR_TYPE | STATUS | PRIMARY_KEY | DETAILS                                                                |
+-------------+------------+--------+-------------+------------------------------------------------------------------------+
| `g_i_check` | SUMMARY    | --     | --          | Done. Use SQL: { CHECK GLOBAL INDEX `g_i_check` SHOW; } to get result. |
+-------------+------------+--------+-------------+------------------------------------------------------------------------+
1 row in set (1.40 sec)

まとめ行により、修復処理が送信されたことが確認できます。詳細な修復レポートを取得するには、SHOW を実行してください。

修復レポートの表示

mysql> CHECK GLOBAL INDEX `g_i_check` SHOW;
+-------------+------------+----------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GSI_TABLE   | ERROR_TYPE | STATUS   | PRIMARY_KEY | DETAILS                                                                                                                                                                                                                                                                                                                                                                                        |
+-------------+------------+----------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| `g_i_check` | MISSING    | REPAIRED | (100090)    | {"Primary":{"id":100090,"c_timestamp_6":"2000-01-01 00:00:00.000000","c_timestamp_3":"2000-01-01 00:00:00.000","c_timestamp_1":"2000-01-01 00:00:00.0","c_blob_tiny":"YeS4reWbvWE=","c_int_32":280}}                                                                                                                                                                                           |
| `g_i_check` | CONFLICT   | REPAIRED | (108710)    | {"Primary":{"id":108710,"c_timestamp_6":"2000-01-01 00:00:00.000000","c_timestamp_3":"2000-01-01 00:00:00.000","c_timestamp_1":"2000-01-01 00:00:00.0","c_year":"2000","c_int_32":255},"GSI":{"c_int_32_un":123456,"id":108710,"c_timestamp_6":"2000-01-01 00:00:00.000000","c_timestamp_3":"2000-01-01 00:00:00.000","c_timestamp_1":"2000-01-01 00:00:00.0","c_year":"2000","c_int_32":255}} |
| `g_i_check` | ORPHAN     | REPAIRED | (100722)    | {"GSI":{"id":100722,"c_timestamp_6":"2000-01-01 00:00:00.000000","c_timestamp_3":"2000-01-01 00:00:00.000","c_timestamp_1":"2000-01-01 00:00:00.0","c_binary":"OTkAAAAAAAAAAA==","c_int_32":271}}                                                                                                                                                                                              |
| `g_i_check` | SUMMARY    | --       | --          | 3 error found (7025/7026 rows checked.) Finish time: 2020-01-13 14:41:51.0                                                                                                                                                                                                                                                                                                                     |
+-------------+------------+----------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4 rows in set (0.02 sec)

以前 FOUND と表示されていた 3 つのエラーが、すべて REPAIRED に変更されており、修復が成功したことが確認できます。

次のステップ