CHECK GLOBAL INDEX memverifikasi konsistensi data antara tabel dasar dan tabel global secondary index (GSI)-nya, serta memperbaiki ketidakkonsistenan yang ditemukan.
Cara kerja
Pernyataan ini memeriksa apakah entri indeks tersedia, berada di posisi yang benar, dan sesuai dengan data pada tabel dasar. Setiap ketidaksesuaian diklasifikasikan ke dalam salah satu dari empat jenis error: MISSING, ORPHAN, CONFLICT, atau ERROR_SHARD.
Sintaksis
CHECK GLOBAL INDEX gsi_name [ON tbl_name] [extra_cmd]Parameter
| Parameter | Deskripsi |
|---|---|
gsi_name | Nama GSI yang akan diperiksa. |
tbl_name | Opsional. Nama tabel dasar. Jika ditentukan, pernyataan ini juga memvalidasi hubungan indeks antara tabel GSI dan tabel dasar. |
extra_cmd | Opsional. Mengontrol mode operasi. Lihat tabel di bawah ini. |
Opsi extra_cmd
| Nilai | Fungsi | Kapan Digunakan |
|---|---|---|
| *(tidak ada)* | Memeriksa GSI dan mengembalikan ketidakkonsistenan yang ditemukan. | Jalankan terlebih dahulu untuk mengidentifikasi error. |
SHOW | Menampilkan hasil verifikasi atau perbaikan terbaru untuk GSI yang ditentukan. | Gunakan setelah perbaikan untuk meninjau laporan perbaikan. |
CORRECTION_BASED_ON_PRIMARY | Memperbaiki tabel GSI berdasarkan data pada tabel dasar. | Gunakan setelah mengidentifikasi error dengan pemeriksaan default. |
Catatan penggunaan
Verifikasi dan perbaikan mengonsumsi sumber daya sistem. Dalam sebagian besar kasus, hal ini terjadi karena data di tabel dasar atau tabel indeks dikunci dan diperbaiki secara batch selama operasi perbaikan. Jalankan operasi ini pada jam sepi.
Untuk tabel besar, verifikasi dapat memakan waktu cukup lama. Untuk menjalankannya tanpa mengganggu proses lain, gunakan HINT untuk mengaktifkan
PURE_ASYNC_DDL_MODE, yang mengeksekusi pernyataan DDL dalam mode asinkron murni.Jika suatu baris memiliki beberapa jenis error, set hasil akan mengembalikan beberapa baris dengan nilai
ERROR_TYPEberbeda untuk kunci primer yang sama.Baris terakhir dalam set hasil selalu merupakan baris
SUMMARY. Periksa baris ini terlebih dahulu untuk menentukan apakah terdapat error.
Untuk informasi lebih lanjut tentang GSI, lihat GSI.
Kolom hasil
| Kolom | Deskripsi |
|---|---|
GSI_TABLE | Nama GSI. |
ERROR_TYPE | Jenis error. Nilai yang valid: MISSING (entri indeks tidak ada), ORPHAN (entri indeks yatim tanpa baris yang sesuai di tabel dasar), CONFLICT (data indeks tidak sesuai dengan tabel dasar), ERROR_SHARD (shard data berada di posisi yang salah), SUMMARY (hasil keseluruhan). |
STATUS | Status entri. FOUND berarti error terdeteksi. REPAIRED berarti error telah diperbaiki. -- digunakan untuk baris SUMMARY. |
PRIMARY_KEY | Kunci primer dari baris yang terpengaruh. |
DETAILS | Detail error. |
Contoh
Contoh berikut menunjukkan alur kerja lengkap verifikasi dan perbaikan.
Periksa ketidakkonsistenan
Jalankan pernyataan berikut untuk memeriksa GSI g_i_check:
CHECK GLOBAL INDEX `g_i_check`;Jika tidak ditemukan error, hasil hanya berisi baris SUMMARY:
+-------------+------------+--------+-------------+-----------------------------+
| GSI_TABLE | ERROR_TYPE | STATUS | PRIMARY_KEY | DETAILS |
+-------------+------------+--------+-------------+-----------------------------+
| `g_i_check` | SUMMARY | -- | -- | OK (7025/7025 rows checked) |
+-------------+------------+--------+-------------+-----------------------------+
1 row in set (1.40 sec)Jika ditemukan error, satu baris dikembalikan untuk setiap error, diikuti oleh baris SUMMARY:
+-------------+------------+--------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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)Perbaiki ketidakkonsistenan
Setelah mengidentifikasi error, jalankan pernyataan berikut untuk memperbaiki GSI berdasarkan tabel dasar:
CHECK GLOBAL INDEX g_i_check CORRECTION_BASED_ON_PRIMARY;Hasil berikut dikembalikan:
+-------------+------------+--------+-------------+------------------------------------------------------------------------+
| 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)Lihat laporan perbaikan
Jalankan pernyataan berikut untuk melihat hasil verifikasi atau perbaikan terbaru:
CHECK GLOBAL INDEX `g_i_check` SHOW;Setiap error yang diperbaiki muncul sebagai baris dengan STATUS bernilai REPAIRED:
+-------------+------------+----------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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)