You need to enable JavaScript to run this app.
导航
高级诊断
最近更新时间:2025.10.29 10:28:56首次发布时间:2025.10.29 10:28:56
复制全文
我的收藏
有用
有用
无用
无用

高级诊断用于收集集群中表的相关元数据,包括创建时间、存储量等信息,以便业务对表做精细化治理。ByteHouse 还提供了表索引诊断功能,通过对表的索引(存储模式、索引设置)等不同维度的元数据进行诊断,帮助您更加高效地实现表治理,以提升实例的稳定性和查询性能。该功能适用于日常表治理、查询性能优化、资源管控等场景。本文介绍了高级诊断功能概况及如何使用高级诊断。

功能概述

高级诊断功能统计了 system.optimizer_statisticssystem.optimizer_statistics_paritioned_hasystem.data_skipping_indicessystem.tables 等信息日志表中的内容,以收集集群中数据表的相关元数据,用于诊断表的数量分布、存储占用、表结构合理性、索引有效性,支持展示以下诊断项:

诊断项

说明

使用建议

每个 Database 对应的 Table 和 View 数量

按数据库维度统计包含的物理表(Table)和视图(View)数量,清晰展示实例的表结构分布。

可用于识别 “表数量过多的数据库”,避免单库元数据过载,优化数据库拆分策略。

分区表数和存储量

统计所有分区表的总数量,及分区表占用的总存储量。

可用于定位占用存储较高的分区表,结合业务场景清理历史分区,减少无效存储占用。

非分区表数和存储量

统计所有非分区表的总数量,及非分区表占用的总存储量。

可用于识别占用存储较高的非分区表,评估是否需要转为分区表(如按时间分区),提升查询时的数据过滤效率。

存储为 0 的表

统计 “数据存储量为 0” 的表(可能为新建空表、数据已过期清理的表)。

可用于清理无效空表,减少元数据冗余,降低实例元数据管理压力。

超过 300 列的表

统计字段数量超过 300 列的宽表。

可用于识别宽表。宽表易导致查询时 “不必要字段扫描”,可通过识别宽表,拆分此类表,提升查询性能。

Order by 超过 3 列的表

统计 ORDER BY 字段数量超过 3 列的表(ORDER BY 字段影响 MergeTree 表的分区合并与查询排序效率)。

可用于识别存在过多 ORDER BY 列的表。ORDER BY 列过多会降低合并速度、增加内存消耗,可通过识别此类表,保留核心排序字段,优化表结构配置。

Shard key 超过 3 列的表

统计 Shard Key 字段数量超过 3 列的分布式表。

可用于识别存在过多 Shard Key 列的表。Shard Key 列过多会增加数据分片计算复杂度,可能导致数据分布不均,可通过识别此类表,并简化 Shard Key 列为 1-2 列核心字段,优化表结构配置。

表数据 TTL 小于 7 天的表

统计数据过期时间(TTL)小于 7 天的表。

可用于识别数据过期时间较短的表,避免频繁清理影响查询稳定性,或因 TTL 过短导致数据提前丢失。

表 Skipping index

统计所有表的 Skipping Index(如 MinMax、Set、Bloom Filter 等)类型、关联字段及启用状态。

可用于查看表中已有的 skipping index,判断是否存在 “无效索引”(如索引字段未用于查询过滤)或 “缺失关键索引”(如高频过滤字段未建索引),优化索引配置以减少数据扫描量。

使用高级诊断
  1. 登录 ByteHouse 企业版控制台,单击顶部诊断优化页签,单击高级诊断,进入功能页面。
  2. 从下拉列表中选择集群,单击诊断,系统将自动分析并展示当前集群中表的元数据信息。
    Image
    ByteHouse 支持的各类诊断项可用于协助诊断集群中表元数据是否存在异常,您可结合您的业务问题及诊断项,分析问题原因,并采取相应的优化措施,高效治理表。各类诊断项的使用方法请参见功能概述
    Image