ByteHouse 企业版支持 SQL 诊断,通过收集慢 Query 日志,提供多维度的性能指标、趋势和明细分析,帮助您洞察集群与实例的性能表现,精准定位低效查询,从而实现针对性的 SQL 优化。该功能适用于数据库性能瓶颈排查、周期性系统健康巡检、或特定业务模块 SQL 效率分析等场景。本文介绍了如何使用 SQL 诊断功能。
SQL 诊断是 ByteHouse 提供的查询优化诊断工具,其主要功能包括:
当前 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趋势 | 展示 |
用户维度的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 指纹,您可通过该参数分析全局性地识别出资源消耗显著的查询模式。
|
使用前,请确保您拥有 Cluster Admin 或 System Admin 权限。如果您尚未获取此权限,请联系管理员授权,详情请参考管理用户的角色权限。
登录 ByteHouse 企业版控制台,单击顶部诊断优化页签,单击SQL 诊断,进入功能页面。选择集群及时间范围,单击诊断,系统将自动分析并展示当前集群中在指定时间范围内执行的 SQL 情况。各类诊断项可用于协助诊断查询情况,您可结合您的业务问题及诊断项,分析问题原因,并采取相应的优化措施。
洞察明细展示了当前集群整体 Query 执行情况,您可通过此类诊断项快速发现异常时段,例如,
DML 分析展示了当前集群中 DDL 和 DML 的执行趋势,您可监控操作频率、识别异常波动,辅助评估元数据变更及数据读写对集群的影响。
Query 分析展示了当前集群中 Query 的来源分布和执行 Query 的用户,您可根据趋势图及失败 Query 趋势共同分析 Query 失败来源。
损耗分析提供了执行耗时、消耗 CPU 及内存资源最多的 Query 及明细,并支持 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. |