首页 > 数据库 >[OLAP/MPP/数据库] Clickhouse 性能优化篇

[OLAP/MPP/数据库] Clickhouse 性能优化篇

时间:2024-11-14 11:19:23浏览次数:1  
标签:log -- 查询 OLAP MPP query type event Clickhouse

性能分析

system.query_log

简介

  • 此表包含已执行查询的相关信息,例如:开始时间、处理持续时间、错误消息。

  • 您可以更改query_log的设置,在服务器配置的 query_log 部分。

  • 您可以通过设置 log_queries=0来禁用query_log. 我们不建议关闭此日志,因为此表中的信息对于解决问题很重要。

  • 数据刷新的周期可通过 flush_interval_milliseconds 参数来设置 query_log 。 要强制刷新,请使用 SYSTEM FLUSH LOGS。

  • ClickHouse不会自动从表中删除数据。更多详情请看 introduction 。

  • system.query_log 表注册两种查询:

  • 客户端直接运行的初始查询。
  • 由其他查询启动的子查询(用于分布式查询执行)。 对于这些类型的查询,有关父查询的信息显示在 initial_* 列。
  • 每个查询在query_log 表中创建一或两行记录,这取决于查询的状态(见 type 列):

如果查询执行成功,会创建type分别为QueryStart 和 QueryFinish 的两行记录。
如果在查询处理过程中发生错误,会创建type分别为QueryStart 和 ExceptionWhileProcessing 的两行记录。
如果在启动查询之前发生错误,则创建一行type为ExceptionBeforeStart 的记录。

最佳实践: 性能分析SQL

select 
	-- *
	type, query_kind, event_time , event_date  , query_duration_ms
	-- read_rows : 从参与了查询的所有表和表函数读取的总行数
	-- result_rows : SELECT 查询结果的行数,或INSERT 的行数
	, query, is_initial_query, http_method, query_id, read_rows, result_rows, memory_usage
    , databases , tables , columns 
from system.query_log -- select * from system.query_log
where 1=1
	and event_date = '2024-11-14'
	-- and query_start_time >= '2024-11-06 00:00:00'
	and arrayExists(x -> coalesce(x, '') = 'bdp_test.dwd_vehicle_status_record_ri_d', `tables`) > 0
	and is_initial_query in ( 1 ) -- 1:客户端发起的查询 / 0 : 由另一个查询发起的,作为分布式查询的一部分
	and http_method in (0 , 1, 2) -- 发起查询的HTTP方法 | 0:TCP / 1:GET / 2:POST
	
	-- 执行查询时的事件类型
	-- QueryStart = 1 : 查询成功启动 / 'QueryFinish' = 2 : 查询成功完成 / 'ExceptionBeforeStart' = 3 : 查询执行前有异常 / 'ExceptionWhileProcessing' = 4 — 查询执行期间有异常
	-- and type = 2
	
	-- and query_kind  in ( 'Insert', 'Select', 'Alter' )
order by event_date desc, query_duration_ms desc 
-- limit 50

X 参考文献

标签:log,--,查询,OLAP,MPP,query,type,event,Clickhouse
From: https://www.cnblogs.com/johnnyzen/p/18545632

相关文章