利志分享
fast_forward
view_headline
开发工具箱
go教程
clickhouse教程
kafka教程
python教程
shell教程
原创杂文
打赏
开发工具箱
go教程
clickhouse教程
kafka教程
python教程
shell教程
原创杂文
打赏
clickhouse入门
clickhouse概述
clickhouse安装和部署
clickhouse数据类型
clickhouse表引擎学习
clickhouse表引擎学习2
clickhouse的sql语法功能1-创建库,创建表等
clickhouse的sql语法2之select功能
clickhouse的sql语法3之alter和show功能
clickhouse的sql语法4之system的了解-查看当前实时连接数
clickhouse的sql语法5之账号授权功能
浅析Clickhouse的向量化执行
clickhouse时间日期函数详解-toDate,toDateTime,formatDateTime
clickhouse常用字符串函数-empty,length,lower,upper,substring,splitByString
clickhouse常用数组函数-arrayJoin,arraySort,arrayReverseSort,arrayReduce,arrayDistinct
clickhouse常用hash函数和类型转换函数,随机函数
clickhouse实战
clickhouse实现漏斗功能
clickhouse实现留存数和留存率计算
你想要的-提高统计clickhouse的查询效率,clickhouse物化视图的应用
剖析-clickhouse的复制表引擎重复数据无法写入问题
clickhouse分布式查询报错剖析-Double-distributed IN/JOIN subqueries is denied (distributed_product_mode = 'deny'
有料-clickhouse单机的增删查询实现方案和clickhouse分布式部署的增删查改实现方案
clickhouse的go客户端实现插入分布式clickhouse集群方式
分布式物化视图在clickhouse如何实现?
助你成为数据分析达人-带你透彻的了解clickhouse实现同比环比分析
如何在clickhouse中实现连续的时间,比如连续的天
第二篇:如何在clickhouse中实现连续的时间,比如连续的天
clickhouse中toDate和toDateTime不能处理1970年之前时间问题
分享clickhouse分布式集群CPU突然暴涨接近100%的问题查证和分析
clickhouse一个特殊的Inf类型数据引发的数据问题
clickhouse的MergeTree系列引擎ReplacingMergeTree和SummingMergeTree的深入理解
sql中多表组合笛卡尔积引发数据动态变化的问题
clickhouse之删除数据或更新数据无效的解决思路-mutations相关
clickhouse(20.3.10.75版本) Sql报错总结
clickhouse网络架构问题引发的:All connection tries failed,Attempt to read after eof,While executing Remote报错
clickhouse深入
深入了解clickhouse的索引查询过程
详解clickhouse的MergeTree引擎存储结构
Clickhouse如何分析sql查询计划完整指南
详解clickhouse分区目录的合并过程
目录
clickhouse入门
clickhouse概述
clickhouse安装和部署
clickhouse数据类型
clickhouse表引擎学习
clickhouse表引擎学习2
clickhouse的sql语法功能1-创建库,创建表等
clickhouse的sql语法2之select功能
clickhouse的sql语法3之alter和show功能
clickhouse的sql语法4之system的了解-查看当前实时连接数
clickhouse的sql语法5之账号授权功能
浅析Clickhouse的向量化执行
clickhouse时间日期函数详解-toDate,toDateTime,formatDateTime
clickhouse常用字符串函数-empty,length,lower,upper,substring,splitByString
clickhouse常用数组函数-arrayJoin,arraySort,arrayReverseSort,arrayReduce,arrayDistinct
clickhouse常用hash函数和类型转换函数,随机函数
clickhouse实战
clickhouse实现漏斗功能
clickhouse实现留存数和留存率计算
你想要的-提高统计clickhouse的查询效率,clickhouse物化视图的应用
剖析-clickhouse的复制表引擎重复数据无法写入问题
clickhouse分布式查询报错剖析-Double-distributed IN/JOIN subqueries is denied (distributed_product_mode = 'deny'
有料-clickhouse单机的增删查询实现方案和clickhouse分布式部署的增删查改实现方案
clickhouse的go客户端实现插入分布式clickhouse集群方式
分布式物化视图在clickhouse如何实现?
助你成为数据分析达人-带你透彻的了解clickhouse实现同比环比分析
如何在clickhouse中实现连续的时间,比如连续的天
第二篇:如何在clickhouse中实现连续的时间,比如连续的天
clickhouse中toDate和toDateTime不能处理1970年之前时间问题
分享clickhouse分布式集群CPU突然暴涨接近100%的问题查证和分析
clickhouse一个特殊的Inf类型数据引发的数据问题
clickhouse的MergeTree系列引擎ReplacingMergeTree和SummingMergeTree的深入理解
sql中多表组合笛卡尔积引发数据动态变化的问题
clickhouse之删除数据或更新数据无效的解决思路-mutations相关
clickhouse(20.3.10.75版本) Sql报错总结
clickhouse网络架构问题引发的:All connection tries failed,Attempt to read after eof,While executing Remote报错
clickhouse深入
深入了解clickhouse的索引查询过程
详解clickhouse的MergeTree引擎存储结构
Clickhouse如何分析sql查询计划完整指南
详解clickhouse分区目录的合并过程
深入了解clickhouse的索引查询过程
阅读:158
分享次数:0
关于Clickhouse的索引的查询过程,我们先手来了解几个概念,MarkRange:在ClickHouse中是用于定义标记区间的对象。index_granularity:标记多个小的区间数据组成的粒度。MergeTree按照index_granularity的间隔粒度,将一段完整的数据划分成了多个小的间隔数据段,一个具体的数据段即是一个MarkRange。MarkRange与索引编号对应,使用start和end两个属性表示其区间范围。通过与start及end对应的索引编号的取值,即能够得到它所对应的数值区间。而数值区间表示了此MarkRange包含的数据范围。 举个例子: 假如现在有一份测试数据,共192行记录。其中,主键ID为String类型,ID的取值从A000开始,后面依次为A001、A002……直至A192为止。MergeTree的索引粒度index_granularity=3,根据索引的生成规则,primary.idx文件内的索引数据会如图:  根据索引数据,MergeTree会将此数据片段划分成192/3=64个小的MarkRange,两个相邻MarkRange相距的步长为1。其中,所有MarkRange(整个数据片段)的最大数值区间为[A000,+inf),其如下图:  在引出了数值区间的概念之后,对于索引的查询过程就很好解释了。索引查询其实就是两个数值区间的交集判断。其中,一个区间是由基于主键的查询条件转换而来的条件区间;而另一个区间是刚才所讲述的与MarkRange对应的数值区间。 整个索引查询过程可以大致分为3个步骤。 1:生成查询条件区间:首先,将查询条件转换为条件区间。即便是单个值的查询条件,也会被转换成区间的形式。 2:递归交集判断:以递归的形式,依次对MarkRange的数值区间与条件区间做交集判断。从最大的区间[A000,+inf)开始: 1. ·如果不存在交集,则直接通过剪枝算法优化此整段MarkRange。 1. ·如果存在交集,且MarkRange步长大于8(end-start),则将此区间进一步拆分成8个子区间(由merge_tree_coarse_index_granularity指定,默认值为8),并重复此规则,继续做递归交集判断。 1. ·如果存在交集,且MarkRange不可再分解(步长小于8),则记录MarkRange并返回。 3:合并MarkRange区间:将最终匹配的MarkRange聚在一起,合并它们的范围。 最后我们看一下完整的逻辑示意图: 
感觉本站内容不错,读后有收获?
attach_money
我要小额打赏,鼓励作者写出更好的教程
扫码关注公众号:talk_lizhi