【笔记】开发指南—DAL语句—CHECK GLOBAL INDEX

简介: 您可以使用CHECK GLOBAL INDEX语句检查主表和索引表的数据是否完全一致,并修订不一致的数据。

语法


CHECK GLOBAL INDEX gsi_name [ON tbl_name] [extra_cmd]
参数 说明
gsi_name 需要校验的全局二级索引名。
tbl_name 全局二级索引所在的主表,非必选。若您输入具体主表名称,将会检查全局二级索引表和主表间的索引关系是否正确。
extra_cmd 保留的额外指令,目前支持如下指令:
  • -:不指定任何关键字时,即表示仅检查全局二级索引。
  • SHOW:显示指定GSI表的最近一次校验或订正的结果。
  • CORRECTION_BASED_ON_PRIMARY:对全局二级索引表中的数据进行订正,以主表为基准。


说明

  • 对全局二级索引表中的数据进行校验或订正时会占用一定的系统资源,特别是订正操作会对主表或索引表内数据分批加锁并订正,建议您在业务低谷期进行操作。更多关于GSI的使用方式,请参见全局二级索引

对大表的GSI校验可能会花费较多的时间,可以使用HINT指定PURE_ASYNC_DDL_MODE,以纯异步模式执行DDL语句。

示例

  • 您可以使用如下语句进行校验:
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)

    • 说明 如果数据存在多种错误,同一行数据会报多个ERROR_TYPE值。
  • 您可以使用如下语句进行订正:
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)
  • 您可以使用如下语句查看最近一次校验或订正的报告:
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)

表 1. 列名说明

列名 说明
GSI_TABLE 全局二级索引名。
ERROR_TYPE 错误类型,取值范围如下:
  • MISSING:索引丢失
  • ORPHAN:孤儿索引
  • CONFLICT:索引数据不一致
  • ERROR_SHARD:数据分片位置错误
  • SUMMARY:结果汇总
STATUS 状态,取值范围如下:
  • FOUND:发现错误
  • REPAIRED:已修复
PRIMARY_KEY 主键。
DETAILS 错误的详细信息。
相关文章
|
JavaScript
js判断是否微信PC端打开内置浏览器
js判断是否微信PC端打开内置浏览器
|
监控 安全 网络协议
Linux监控和调优:提高系统性能的实用技巧与建议
Linux监控和调优:提高系统性能的实用技巧与建议
1305 0
|
Python
Python 格式化输出的高级技巧与应用
Python 格式化输出技术可让数据展示更加清晰易读。本文介绍了四种高级技巧:使用 `%` 占位符进行简单格式化;利用 `format()` 方法提供更灵活的参数位置控制;通过 `{:.2f}` 格式化浮点数保留两位小数;使用 `<`, `>`, `^` 对齐方式及字符填充;最后,展示了如何用特定格式代码格式化日期和时间。这些技巧能够显著提升代码的可读性和美观性。
218 6
django下载文件4-4|
django下载文件4-4|
|
XML 关系型数据库 MySQL
Pandas 2.2 中文官方教程和指南(一)(1)
Pandas 2.2 中文官方教程和指南(一)
790 0
|
缓存 前端开发 数据库
Django如何开发网页一
7月更文挑战第19天
|
安全 编译器 C语言
【C语言进阶篇】offsetof宏的介绍 及其实现
【C语言进阶篇】offsetof宏的介绍 及其实现
|
存储 安全 文件存储
私有云系统生态选型与架构整合实战
私有云系统生态选型与架构整合实战
396 0
|
JavaScript 前端开发
web学习笔记(二十三)
web学习笔记(二十三)
118 0
|
Linux
嵌入式软件实现应用层和硬件层分层管理
嵌入式软件实现应用层和硬件层分层管理
175 0