ClickHouse不是在所有场景下都能获得很强性能的,需要先分析ClickHouse在满足哪些前提下才能获得最强的查询性能。
ClickHouse计算引擎最精妙的地方在于向量化引擎,那么ClickHouse在有些场景下由于计算引擎使得查询速度快,是因为向量化引擎的加持;而ClickHouse在有些场景下查询速度慢则是因为计算引擎缺乏代价优化器。
基于这两个逻辑,可以分析出ClickHouse查询速度快的前提。
1、大量使用向量化运算
ClickHouse提供了很多内置函数,在使用这些内置函数时会自动进行向量化优化。建议尽可能使用ClickHouse提供的内置函数进行计算,而不是自己写SQL语句。
大家在编写SQL代码时应查阅文档,仔细了解ClickHouse提供的各种函数,心可能使用ClickHouse提供的丰富的内置函数来实现业务。
2、查询语句中没有使用Join子句,或尽可能少地使用Join操作
ClickHouse没有代价优化器,在使用Join操作时会出现内存不足的情况,导致查询失败。Join操作的性能问题其实并不是只有ClickHouse才会遇到,任何数据库在遇到大表Join操作时都有可能导致查询时间暴增。
正是由于没有实现CBO,ClickHouse在实现Join操作时选择的余地很少。尤其是使用分布式大表Join操作时,ClickHouse只实现了广播连接(Broadcast Join)算法,极大地降低了ClickHouse的Join能力。
在使用ClickHouse时,应当尽可能避免Join操作。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




