表Meta诊断

当Hologres数据库中的元数据管理器(Storage Master)和FE节点保存的表元数据不一致时,会导致DDL操作报错或影响费用等。Hologres提供了表Meta诊断功能,以检测当前实例中表元数据的一致性,并每周更新一次诊断结果,您可以根据对应元数据问题的解决方案进行修复,以提高实例的可用性和稳定性。

操作步骤

您可以通过HoloWeb可视化查看表Meta诊断。

  1. 进入HoloWeb开发页面,详情请参见连接HoloWeb并执行查询

  2. 单击顶部导航栏的诊断与优化

  3. 在左侧导航栏,选择实例诊断>表Meta诊断,进行查询。

诊断列表

诊断时效性为每周更新一次诊断内容。诊断问题、影响和修复方案如下表。

问题

影响

修复方案

注意事项

分区子表的Distribution Key与父表不一致

若不修复,当查询命中对应分区子表时会报错。

重新建分区父表和所有子表。

建议在业务低峰期执行。

表设置的Distribution Key与元数据不一致

若不修复,查询时会报错。

重新建表。

建议在业务低峰期执行。

分区子表的Clustering Key与父表不一致

若不修复,当查询命中对应分区子表时会报错。

重新建分区父表和所有子表。

建议在业务低峰期执行。

表设置的Clustering Key与元数据不一致

若不修复,查询时会报错。

重新建表。

建议在业务低峰期执行。

分区子表的Segment Key与父表不一致

若不修复,当查询命中对应子表时会报错。

重新建立分区父表和所有子表。

建议在业务低峰期执行。

表设置的Segment Key与元数据不一致

若不修复,查询时会报错。

重新建表。

建议在业务低峰期执行。

表设置的Encryption属性与元数据不一致

若不修复,查询时会报错。

重新建表。

建议在业务低峰期执行。

表设置的Storage Mode与元数据不一致

若不修复,查询时会报错。

执行call set_table_property('<schema_name>.<table_name>', 'table_storage_mode', 'hot/cold');修复此问题,可根据业务需求将表设置为热存或冷存。

建议在业务低峰期执行,在冷热数据搬迁过程中,可能会使用一定的系统资源。

表设置的Storage Format与元数据不一致

若不修复,查询时会报错。

执行call set_table_property('<schema_name>.<table_name>', 'storage_format', 'orc');修复,将表转为ORC格式。

建议在业务低峰期执行,在ORC格式转换过程中,可能会使用一定的系统资源。

表设置的Proxima Vectors与元数据不一致

若不修复,查询时会报错。

重新建表。

建议在业务低峰期执行。

表设置的Proxima Vectors存在非法值

若不修复,查询时会报错。

重新建表。

建议在业务低峰期执行。

表设置的TTL与元数据不一致

若不修复,可能会影响数据的生命周期,导致数据被意外删除。

修复SQL如下:call set_table_property('<schema_name>.<table_name>', 'time_to_live_in_seconds', '<target_value>');建议设置一个较长的值。

建议在业务低峰期执行。

表设置的Binlog TTL与元数据不一致

若不修复,可能会影响Binlog的生命周期,导致Binlog被意外删除。

修复SQL如下:call set_table_property('<schema_name>.<table_name>', 'binlog.ttl', '<target_value>');建议设置一个较长的值。

建议在业务低峰期执行。

表设置的Binlog属性与元数据不一致

可能表未开启Binlog功能,但在元数据中启用了Binlog,则可能导致表的存储空间增加。

修改一次Binlog的属性,可以先关闭。修复SQL如下:call set_table_property('<parent_schema_name>.<parent_table_name>', 'binlog.level','none');也可以根据业务情况开启Binlog。

请根据业务情况选择Binlog的开关,否则会影响相关Binlog任务。

分区子表设置的Binlog属性与父表不一致

父表可能未开启Binlog,而子表开启了Binlog,导致分区表的Binlog属性不一致。这种情况下,如果查询命中子表,可能会报错,同时还可能导致表的存储空间增加。

修改一次Binlog的属性,可以先关闭。修复SQL如下:call set_table_property('<parent_schema_name>.<parent_table_name>', 'binlog.level', 'none');也可以根据业务情况开启Binlog。

请根据业务情况选择Binlog的开关,否则会影响相关Binlog任务。

表设置的Index数量与元数据不一致

若不修复,查询时会报错。

需要重新建表。

建议在业务低峰期执行。

表设置的index属性与元数据不一致

若不修复,查询时会报错。

需要重新建表。

建议在业务低峰期执行。

表设置的Readonly属性与元数据不一致

若不修复,查询时会报错。

执行call set_table_property('<schema_name>.<table_name>', 'readonly', 'false');修复,关闭表的ReadOnly属性。

建议在业务低峰期执行。

表的字段数量与元数据不一致

若不修复,查询时会报错。

需要重新建表。

建议在业务低峰期执行。

表名与元数据不一致

若不修复,查询时会报错。

需要重新建表。

建议在业务低峰期执行。

表字段的Nullable属性与元数据不一致

若不修复,查询时会报错。

需要重新建表。

建议在业务低峰期执行。

表字段名存在不支持的异常字符

若不修复,查询时会报错。

需要重新建表。

建议在业务低峰期执行。

表没有字段

不合法的表,建议删除,否则会占用元数据内存。

删除表。

建议在业务低峰期执行。

表设置的Clustering Key包含不支持的数据类型

若不修复,查询时会报错。

需要重新建表。

建议在业务低峰期执行。

表设置的Segment Key包含不支持的数据类型

若不修复,查询时会报错。

需要重新建表。

建议在业务低峰期执行。

表元数据有严重异常,无法访问

表的元数据问题较为严重,且自动诊断难以识别更多具体原因。如果不进行修复,查询将会报错。

需要重新建表。

建议在业务低峰期执行。