O comando CHECK GLOBAL INDEX verifica a consistência dos dados entre uma tabela base e sua tabela de índice secundário global (GSI) e corrige quaisquer inconsistências encontradas.
Como funciona
Esta instrução verifica se as entradas do índice estão presentes, posicionadas corretamente e correspondem aos dados da tabela base. O sistema classifica quaisquer discrepâncias em um dos quatro tipos de erro: MISSING, ORPHAN, CONFLICT ou ERROR_SHARD.
Sintaxe
CHECK GLOBAL INDEX gsi_name [ON tbl_name] [extra_cmd]
Parâmetros
|
Parâmetro |
Descrição |
|
|
Nome do GSI a verificar. |
|
|
Opcional. Nome da tabela base. Se especificado, a instrução também valida o relacionamento do índice entre a tabela GSI e a tabela base. |
|
|
Opcional. Controla o modo de operação. Consulte a tabela abaixo. |
**Opções de extra_cmd**
|
Valor |
Função |
Quando usar |
|
(nenhum) |
Verifica o GSI e retorna quaisquer inconsistências encontradas. |
Execute primeiro para identificar erros. |
|
|
Exibe o resultado da verificação ou correção mais recente do GSI especificado. |
Utilize após uma correção para revisar o relatório de reparo. |
|
|
Repara a tabela GSI com base nos dados da tabela base. |
Recomendado após identificar erros na verificação padrão. |
Observações de uso
A verificação e a correção consomem recursos do sistema. Geralmente, isso ocorre porque os dados da tabela base ou da tabela de índice ficam bloqueados e são corrigidos em lotes durante as operações de correção. Execute essas operações fora dos horários de pico.
Em tabelas grandes, a verificação pode levar muito tempo. Para executá-la sem bloqueios, use um HINT para ativar o
PURE_ASYNC_DDL_MODE, que processa a instrução DDL em modo puramente assíncrono.Se uma linha apresentar múltiplos tipos de erro, o conjunto de resultados retornará várias linhas com valores diferentes de
ERROR_TYPEpara a mesma chave primária.A última linha do conjunto de resultados é sempre uma linha
SUMMARY. Verifique essa linha primeiro para determinar se há erros.
Para obter mais informações sobre GSIs, consulte GSI.
Colunas de resultado
|
Coluna |
Descrição |
|
|
Nome do GSI. |
|
|
Tipo do erro. Valores válidos: |
|
|
Estado da entrada. |
|
|
Chave primária da linha afetada. |
|
|
Detalhes do erro. |
Exemplos
Os exemplos a seguir demonstram o fluxo completo de verificação e reparo.
Verificar inconsistências
Execute a seguinte instrução para verificar o GSI g_i_check:
CHECK GLOBAL INDEX `g_i_check`;
Se não houver erros, o resultado conterá apenas a linha 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)
Caso haja erros, o sistema retorna uma linha por erro, seguida pela linha 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)
Corrigir inconsistências
Após identificar erros, execute a seguinte instrução para reparar o GSI com base na tabela base:
CHECK GLOBAL INDEX g_i_check CORRECTION_BASED_ON_PRIMARY;
O sistema retorna o seguinte resultado:
+-------------+------------+--------+-------------+------------------------------------------------------------------------+
| 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)
Visualizar o relatório de reparo
Execute a seguinte instrução para visualizar o resultado da verificação ou correção mais recente:
CHECK GLOBAL INDEX `g_i_check` SHOW;
Cada erro reparado aparece como uma linha com STATUS definido como 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)