You need to enable JavaScript to run this app.
导航
SQL 诊断
最近更新时间:2025.09.05 10:34:36首次发布时间:2025.08.01 10:10:40
复制全文
我的收藏
有用
有用
无用
无用

ByteHouse 企业版支持 SQL 诊断,通过收集慢 Query 日志,提供多维度的性能指标、趋势和明细分析,帮助您洞察集群与实例的性能表现,精准定位低效查询,从而实现针对性的 SQL 优化。该功能适用于数据库性能瓶颈排查、周期性系统健康巡检、或特定业务模块 SQL 效率分析等场景。本文介绍了如何使用 SQL 诊断功能。

功能概述

SQL 诊断是 ByteHouse 提供的查询优化诊断工具,其主要功能包括:

  • 慢 Query 采集:采集所有 Query,获取集群 Top 耗时的 Query,形成详细的慢 Query 日志。
  • 诊断分析能力:基于慢 Query 日志的数据,ByteHouse 通过对不同维度的趋势、明细分析,帮助您识别低效查询模式,优化资源分配,并实现针对性的 SQL 调优。

当前 ByteHouse 支持的诊断项包括:

诊断项

说明

洞察明细

Query 总数

所选时间段的 Query 总数。

Query 成功数

所选时间段成功的 Query 总数。

Query 失败数

所选时间段失败的 Query 总数。

失败Query明细

展示了 Query 错误类型、数量,便于您治理 Query 错误。同时,ByteHouse 也展示了 Query ID、Query 内容、错误日志、CPU 使用率、内存使用率、Query 耗时、提交 Query 的用户等详细信息,方便您进一步了解失败 Query 的详情。

成功/失败Query趋势

展示所选时间段的成功和失败的 Query 次数比例,方便了解当前实例的 Query 整体运行情况。

Query 耗时占比趋势

展示所选时间段的 Query 耗时占比趋势,默认仅分析 SELECT、INSERT 这两类 Query 的耗时占比情况。

DML 分析

DML 趋势

展示 DML Query 的执行次数趋势,默认仅分析 ALTER、INSERT 这两类Query。

DDL 趋势

展示 DDL Query 的执行次数趋势。

Query 分析

Query应用来源的占比情况&按Query应用来源的Query趋势

展示 application_name( Query 来自的客户端名称)维度的 Query 占比情况或趋势。

用户维度的Query占比情况&按用户维度的Query趋势

展示 usename(执行 Query 的用户名)维度的 Query 占比情况或趋势。

损耗 Top5

耗时 Top5 Query

展示执行耗时最长的前 5 条 Query。

消耗CPU Top5 Query

展示 CPU 资源消耗最多的前 5 条 Query。

消耗内存 Top5 Query

展示内存资源消耗最多的前 5 条 Query。

SQL指纹分析

对 SELECT、INSERT 类型的 Query,ByteHouse 会计算一个 MD5 哈希值作为该 Query 的 SQL 指纹,您可通过该参数分析全局性地识别出资源消耗显著的查询模式。
SQL 指纹分析诊断项中展示了 CPU 总消耗量排名 Top5 的 Query。

  • 工作原理:仅在字面量值(如具体数字、字符串)存在差异但查询结构(模板)相同的查询,其哈希值(即 SQL 指纹)是相同的。ByteHouse 将这些查询日志的哈希值聚合在一起,通过计算出它们的总条数(count)和总的CPU、内存、用量从全局角度发现一类显著影响系统性能的查询。
  • 采集和计算规则:
    • 默认仅采集 SELECT、INSERT 两种类型 Query 的指纹;
    • 展示指标包括:SQL 指纹哈希值、抽样 SQL 语句数量、CPU 消耗总量、总磁盘读取 IO(输入 / 输出)量、总磁盘写入 IO 量、内存消耗总量、总网络接收 IO 量、总网络发送 IO 量。

注意事项

使用前,请确保您拥有 Cluster Admin 或 System Admin 权限。如果您尚未获取此权限,请联系管理员授权,详情请参考管理用户的角色权限

使用 SQL 诊断

登录 ByteHouse 企业版控制台,单击顶部诊断优化页签,单击SQL 诊断,进入功能页面。选择集群及时间范围,单击诊断,系统将自动分析并展示当前集群中在指定时间范围内执行的 SQL 情况。各类诊断项可用于协助诊断查询情况,您可结合您的业务问题及诊断项,分析问题原因,并采取相应的优化措施。
Image

洞察明细

洞察明细展示了当前集群整体 Query 执行情况,您可通过此类诊断项快速发现异常时段,例如,

  • 如果出现 Query 总量过高,可能存在异常流量或业务高峰,需检查是否超出集群负载能力。
  • 如果在失败 Query 趋势中发现某个时段中失败率骤升,您可结合失败 Query 明细中的内容,批量优化问题 SQL 或调整集群资源配置。
  • 如果发现某个时间段内 Query 存在长时间执行情况,可结合耗时 Top5 Query 统计信息,定位潜在的慢查询瓶颈。
  • ByteHouse 也列出了失败 Query 明细,您可单击 Query ID 跳转至查询 Query 洞察页面,查看查询概览及错误详情;同时可参考常见 SQL 错误类型对照表获取完整错误信息,综合分析以优化 Query。

Image

DML 分析

DML 分析展示了当前集群中 DDL 和 DML 的执行趋势,您可监控操作频率、识别异常波动,辅助评估元数据变更及数据读写对集群的影响。

  • 监控 DML 趋势,了解 ALTER/INSERT 的请求压力波动。
  • 您可关注 DDL 操作趋势识别高频元数据变更(如短时间内大量建表 / 改表),辅助判断锁争用风险。

Image

Query 分析

Query 分析展示了当前集群中 Query 的来源分布和执行 Query 的用户,您可根据趋势图及失败 Query 趋势共同分析 Query 失败来源。

  • 通过应用来源分布可识别高负载查询的发起端(如某类连接驱动程序),判断是否与业务预期一致。您可结合失败 Query 趋势分析特定来源的失败集中性问题。
  • 如果观察到某用户有过多查询且不符合业务实际情况,可排查是否存在资源滥用或按需调整资源配额限制。
  • 如果出现非预期来源的查询,可确认是否为配置错误或异常请求。

Image

损耗 Top5

损耗分析提供了执行耗时、消耗 CPU 及内存资源最多的 Query 及明细,并支持 SQL 指纹分析,帮助您识别影响系统性能的查询。

  • 单条 Query 诊断:耗时、消耗 CPU、消耗内存等诊断项列出了消耗最高的单条 Query 明细,您可单击 Query ID 查看 Query 洞察详情,结合 Query 洞察,优化该 Query。
  • 同类查询聚合分析:SQL 指纹分析统计了同类查询的总消耗,可发现全局性问题。您可单击 Query ID 查看 Query 洞察详情,结合 SQL 指纹分析的指标和 Query 洞察,分析此类查询的行为特征,并根据您的业务情况针对性分析问题,定位原因,进行针对性优化。

Image

常见 SQL 错误类型对照表

错误类型

错误代码

常见的完整报错

ATTEMPT_TO_READ_AFTER_EOF

32

Attempt to read after eof

CANNOT_READ_ALL_DATA

33

Cannot read all data. Bytes read: 0. Bytes expected: 3

CANNOT_PARSE_DATETIME

41

Cannot parse datetime

ILLEGAL_COLUMN

44

Cannot create table with column 'info' which type is 'Object('json')' because experimental Object type is not allowed. Set setting allow_experimental_object_type = 1 in order to allow it

LOGICAL_ERROR

49

Unexpected application state. CREATE query is missing either its storage or engine.

UNKNOWN_TABLE

60

Table system.errors_logs doesn't exist

SYNTAX_ERROR

62

Empty query

UNKNOWN_DATABASE

81

Database test doesn't exist

FILE_DOESNT_EXIST

107

Cannot open file /data00/clickhouse/data/store/xxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxx/errors.sql, errno: 2, strerror: No such file or directory

NO_ELEMENTS_IN_CONFIG

139

Certificate file is not set.

UNKNOWN_USER

192

There is no user in users.xml

WRONG_PASSWORD

193

Invalid credentials

NETWORK_ERROR

210

Broken pipe, while writing to socket

READONLY_SETTING

472

Setting 'index_granularity' is readonly for storage 'HaUniqueMergeTree'

PATH_ACCESS_DENIED

481

Cannot check modification time for file: /data00/clickhouse/data/store/xxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxx/tmp_insert_202502_521568_521568_0/, errno: 2, strerror: No such file or directory

UNKNOWN_ACCESS_TYPE

508

Unknown access type: ID

UNKNOWN_ROLE

511

There is no role in user directories.

AUTHENTICATION_FAILED

516

Authentication failed: password is incorrect or there is no user with such name.