ByteHouse 云数仓版为您提供 SQL 审计能力和界面化查看 SQL 执行日志的功能,支持查看 SQL 历史和运行中的查询,帮助您快速定位并优化慢查询、排查错误、审计用户行为以保障数据安全,适用于数据库性能调优、安全合规审计、事后故障追溯等场景。同时 ByteHouse 也提供详细 SQL 日志表,打开详细日志开关后,即可查看对应详细 SQL 日志表数据,进一步查看更细致的日志数据。本文为您介绍如何使用 ByteHouse SQL 审计功能。
ByteHouse SQL 审计功能支持查看 SQL 历史与运行中的查询,其中,SQL 历史中可查看慢 SQL 查询、错误查询、ID 或 SQL 语句内容精准检索。
该功能提供全面的审计维度,包括查询 ID、状态、用户名/ID、有效角色、计算组、开始/结束时间、时长、SQL 类型、SQL 语句、CPU 总耗时、内存最大用量(Segment)等。同时该功能也支持丰富的筛选项,便于您进行高效分析 SQL 执行情况。
此外,ByteHouse 也支持查看详细日志。启用该功能后,ByteHouse 将开始积攒数据(需重新与 ByteHouse 建立连接),并自动创建名为 bh_system 的数据库及库内 query_log 表,用于记录详细的 SQL 执行日志数据,您拥有该库和表的全部权限。该表默认数据生命周期为 7 天,如果需要保留更长周期,您可执行 SQL 命令按需删除 TTL 或修改 TTL 时间,操作详情请参见调整 query_log 表生命周期。
说明
您也可以通过使用 SQL 命令 SHOW PROCESSLIST 查看当前运行中的查询,使用方式请参见SHOW PROCESSLIST。
注意
详细日志为非公开功能,如需使用,请提交工单或联系 ByteHouse 团队获取白名单权限。
获取白名单权限后,您可以在 SQL 审计页面的右上角打开开启详细日志开关,启用后,ByteHouse 会为您在系统中创建一张 query_log 的表,用于写入详细的 SQL 执行日志数据。
bh_system 数据库,并在该数据库中创建一张 query_log 表,您拥有该库和表的全部权限。注意
由于 ByteHouse 将您执行的 SQL 日志信息持续写入到 bh_system.query_log 表中,对于该表的增删改操作将会影响日志写入。禁止对该表进行除修改 TTL 外的增删改操作。
query_log 表。您可以通过单击页面顶部的数据库或 SQL 工作表查看 query_log 表。query_log 表为例,您可以在 SQL 工作表的左侧数据对象中的 bh_system 数据库中看到该表。bh_system.query_log 表默认数据生命周期只有 7 天, 如果需要保留更长周期,请参考以下命令按需删除 TTL 或修改 TTL 时间。
# 查看 bh_system.query_log 表当前生命周期 SHOW CREATE TABLE bh_system.query_log; # 删除 TTL ALTER TABLE bh_system.query_log REMOVE TTL; # 将默认 TTL 从 7 天改为 180 天(您可以将 180 替换为您希望保留日志的天数,需管理员权限执行) ALTER TABLE bh_system.query_log MODIFY TTL event_time + INTERVAL 180 DAY;
列名 | 数据类型 | 字段描述 |
|---|---|---|
type | Enum8,枚举值包括:
| 查询事件类型:
|
event_date | Date | 事件发生的日期 |
event_time | DateTime | 事件发生的精确时间戳 |
event_time_microseconds | DateTime64(6) | 事件时间戳(微秒精度) |
query_start_time | DateTime | 查询开始时间 |
query_start_time_microseconds | DateTime64(6) | 查询开始时间(微秒精度) |
query_duration_ms | UInt64 | 查询总耗时(毫秒) |
read_rows | UInt64 | 查询的所有表和表函数读取的总行数 |
read_bytes | UInt64 | 查询的所有表和表函数读取的总字节数 |
written_rows | UInt64 | 写入的行数(仅INSERT操作) |
written_bytes | UInt64 | 写入的字节数(仅INSERT操作) |
result_rows | UInt64 | 返回结果的行数 |
result_bytes | UInt64 | 返回结果的字节数 |
memory_usage | UInt64 | 查询在每个worker,每个segment上使用的最高内存用量 |
current_database | String | 当前数据库 |
query | String | 完整的查询语句 |
normalized_query_hash | UInt64 | 规范化查询哈希值 |
query_kind | String | 查询类型(如 |
databases | Array(String) | 查询涉及到的数据库 |
tables | Array(String) | 查询涉及到的数据表 |
columns | Array(String) | 查询涉及到的数据表字段 |
partition_ids | Array(String) | 分区 |
projections | Array(String) | 查询涉及的投影(Projection)名称列表 |
materialized_views | Array(String) | 查询涉及的物化视图名称列表 |
exception_code | Int32 | 异常代码(仅当 |
exception | String | 异常信息(错误消息) |
stack_trace | String | 异常堆栈跟踪信息(需配置 |
is_initial_query | UInt8 | 是否为初始查询(0:子查询;1:用户直接发起的查询) |
user | String | 用户名 |
query_id | String | 查询ID |
interface | UInt8 | 发起查询的接口,可能的值:
|
os_user | String | 运行 TCP 客户端的操作系统用户 |
client_hostname | String | TCP 客户端主机名 |
client_name | String | TCP 客户端名称 |
client_revision | UInt32 | TCP 客户端版本 |
client_version_major | UInt32 | TCP 客户端主版本 |
client_version_minor | UInt32 | TCP 客户端次版本号 |
client_version_patch | UInt32 | TCP 客户端补丁版本 |
http_method | UInt8 | 发起查询的 HTTP 方法,可能值: |
http_user_agent | String | 客户端的User-Agent信息 |
http_referer | String | HTTP 来源信息 |
forwarded_for | String | HTTP 代理链中的客户端IP |
quota_key | String | 配额键 |
revision | UInt32 | ByteHouse 修订版 |
ProfileEvents | Map(String, UInt64) | PrunedPartitions:实际读取到的partition数量。 注意 TotalCPUTimeMs 列仅在 ByteHouse CDW 引擎 v2.3.x 及以上版本中支持,使用前请确认引擎版本。您可登录 ByteHouse 控制台,单击顶部租户管理,在基础信息页面中查看您使用的引擎版本。 |
Settings | Map(String, String) | 查询生效的配置参数(覆盖默认值的部分) |
log_comment | String | 日志注释 |
thread_ids | Array(UInt64) | 参与查询的线程ID列表 |
used_aggregate_functions | Array(String) | 使用的聚合函数 |
used_aggregate_function_combinators | Array(String) | 使用的聚合函数 |
used_database_engines | Array(String) | 使用的表引擎 |
used_data_type_families | Array(String) | 使用的数据类型 |
used_dictionaries | Array(String) | 使用的字典表 |
used_formats | Array(String) | 使用数据格式参数(如:FORMAT CSV) |
used_functions | Array(String) | 使用的函数 |
used_storages | Array(String) | 使用的存储 |
used_table_functions | Array(String) | 使用的表函数 |
virtual_warehouse | String | 查询使用的计算组 |
query_plan | String | 查询的执行计划 |