范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

大数据ClickHouse进阶(四)ClickHouse的索引深入了解

  #头条创作挑战赛#ClickHouse的索引深入了解
  一、一级索引
  在MergeTree中PRIMARY KEY 主键并不用于去重,而是用于索引,加快查询速度,MergeTree会根据index_granularity间隔(默认8192行),为数据表生成一级索引并保存至primary.idx文件内,索引数据按照PRIMARY KEY 排序,相对于使用PRIMARY KEY 更常见的方式是通过ORDER BY 方式指定主键。
  稀疏索引
  primary.idx文件内的一级索引采用稀疏索引实现。有稀疏索引就有稠密索引,二者区别如下:
  在稠密索引中每一行索引标记都会对应到一行具体的数据记录。而在稀疏索引中每一行索引标记对应的是一段数据,而不是一行。
  稀疏索引的优势显而易见,仅需要使用少量的索引标记就能够记录大量的数据区间位置信息,而且数据量越大优势越明显。在MergeTree系列引擎表中对应的primary.idx文件就是稀疏索引,由于稀疏索引占用空间小,所以primary.idx内的索引数据常驻内存。
  索引粒度
  在ClickHouse MergeTree引擎中默认的索引粒度是8192,参数为index_granularity,一般我们不会修改此值,按照默认8192即可。我们可以通过以下sql语句查看每个MergeTree引擎表对应的index_granulariry的值:
  node1 :) show create table t_mt;
  索引粒度对于MergeTree表引擎非常重要,可以根据整个数据的长度,按照索引粒度对数据进行标注,然后抽取对应的数据形成索引。
  索引形成过程
  表数据以index_granularity的粒度(默认8192)被标记成多个小区间,其中每个区间最多8192行数据,每个区间标记后形成一个MarkRange,通过start和end表示MarkRange的具体范围,数据文件也会按照index_granularity的间隔粒度生成压缩数据块。由于是稀疏索引,MergeTree需要间隔index_granularity行数据生成一条索引,同时对应一个索引编号,每个MarRange与一个索引编号对应,通过与start及end对应的索引编号的取值,可以得到对应的数值区间;索引编号对应的索引值会依据声明的主键字段获取,最终索引编号和索引值被写入primary.idx文件中保存。
  假设现在有一份测试数据,共192行记录,其中主键ID为String类型,ID值从A000开始,后面依次为A001、A002...直到A192为止,假设我们设置MergeTree的索引粒度index_granularity=3,根据索引的生成规则,primary.idx文件内的索引数据如下:
  根据索引数据,MergeTree将此数据片段划分成192/3=64个小的MarkRange,其中所有MarkRange的最大数值区间为[A000,+inf),划分的MarkRange如下:
  索引查询过程
  使用索引查询其实就是两个数值区间的交集判断,其中一个区间是有基于主键的查询条件转换而来的条件区间,而另一个区间是上图中MarkRange对应的数值区间。
  整个索引查询的过程大致分为3个步骤:
  1、生成查询条件区间
  查询时首先将查询条件转换为条件区间,即便是单个值的查询条件也会转换成区间的形式,例如:
  WHERE ID="A003" ["A003","A003"]  WHERE ID>"A000" ["A000",+inf]  WHERE ID<"A188" (-inf,"A188"]  WHERE ID like "A006%" ("A006","A007"]
  2、递归交集判断
  以递归的方式依次对MarkRange的数值区间与条件区间做交集判断,从最大的区间[A000,+inf)开:
  如果不存在交集,则直接忽略掉整段MarkRange如果存在交集,且MarkRange步长大于8(end-start),则将此区间进一步拆分成8个区间(由merge_tree_coarse_index_granularity指定,默认值为8),并重复此规则,继续做递归交集判断。如果存在交集,且MarkRange不可再分解(步长小于8),则记录MarkRange并返回。
  3、合并MarkRange区间
  将最终匹配的MarkRange聚在一起,合并他们的范围。
  当查询条件WHERE ID ="A003"的时候,最终读取[A000,A003)和[A003,A006]两个区间的数据即可,他们对应的MarkRange(start:0,end:2)范围,而无其他无用的区间都被裁剪过滤掉,因为MarkRange转换的数值区间是闭区间,所以会额外匹配到临近的一个区间,完整的逻辑图如下图所示:
  二、二级索引(跳数索引)
  除了一级索引之外,MergeTree同样支持二级索引,二级索引又称为跳数索引,由数据的聚合信息构建而成,根据索引类型的不同,其聚合信息的内容也不同,跳数索引的目的与一级索引一样,也是帮助查询时减少数据扫描的范围。
  跳数索引需要在Create语句内定义,完整语法如下:
  INDEX index_name expr TYPE index_type(...) GRANULARITY granularity
  对以上参数的解释如下:
  index_name:定义的二级索引名称index_type:跳数索引类型,最常用就是minmax索引类型。minmax索引记录了一段数据内的最小和最大极值,其索引的作用类似分区目录,能够快速跳过无用的数据区间。granularity:定义聚合信息汇总的粒度。与一级索引一样,如果在建表语句中声明了跳数索引,则会在路径"/var/lib/ClickHouse/data/DATABASE/TABLE/PARTITION/"目录下生成索引与标记文件(skp_idx.idx与skp_idx.mrk)。在接触跳数索引时,很容易将index_granularity与granularity概念混淆,对于跳数索引而言,index_granularity定义了数据的粒度,而granularity定义了聚合信息汇总的粒度,也就是说,granularity定义了一行跳数索引能够跳过多少个index_granularity区间的数据。
  minmax跳数索引的生成规则
  minmax跳数索引聚合信息是在一个index_granularity区间内数据的最小和最大极值。首先,数据按照index_granularity粒度间隔将数据划分成n段,总共有[0~n-1]个区间(n=total_rows/index_granularity,向上取整),接着根据跳数索引从0区间开始,依次按index_granularity粒度从数据中获取聚合信息,每次向前移动1步,聚合信息逐步累加,最后当移动granularity次区间时,则汇总并生成一行跳数索引数据。
  以下图为例:假设index_granularity=8192且granularity=3,则数据会按照index_granularity划分成n等份,MergeTree从第0段分区开始,依次获取聚合信息,当获取到第3个分区时(granularity=3),则汇总并生成第一行minmax索引(前3段minmax极值汇总后取值为[1,9])。
  minmax跳数索引案例:
  #删除表 t_mt node1 :) drop table t_mt;  #重新创建t_mt表,包含二级索引 node1 :)CREATE TABLE t_mt (    id UInt8,    name String,    age UInt8,    birthday Date,    location String,    INDEX a id TYPE minmax GRANULARITY 5 ) ENGINE = MergeTree PARTITION BY toYYYYMM(birthday) ORDER BY (id, age) PRIMARY KEY id  #插入数据 insert into t_mt values (1,"张三",18,"2021-06-01","上海"), (2,"李四",19,"2021-02-10","北京"), (3,"王五",12,"2021-06-01","天津"), (1,"马六",10,"2021-06-18","上海"), (5,"田七",22,"2021-02-09","广州");  #查看数据分区路径

阿拉伯史研读导致莱赫米王朝逐渐衰落的内外部原因有哪些?一王朝政治的衰落(一)国王政治风格的不稳定性莱赫米王朝国王努尔曼。本孟迪尔易怒多疑的理政风格是莱赫米王朝衰落时期的主要政治表现。诗人大艾阿沙曾在诗歌中这样描述莱赫米王朝国王努尔曼本外骨骼机器人穿戴实验志愿者期待未来像钢铁侠一样行走志愿者林寒正熟练地操控外骨骼机器人。王利文摄中新网成都3月23日电(王利文)23日,在四川成都的电子科技大学机器人研究中心,志愿者林寒正熟练地操控外骨骼机器人。在设备辅助下,他独立揭秘陈姓足协官员案件巨额贿赂管理漏洞与文化建设!近日,足球圈再次掀起一波风波,陈姓足协官员被曝涉嫌违纪违法。据媒体人苗原透露,陈涉及的案子中,有一个案值高达5000万,并贿赂了两个人。这样的情节不仅让人震惊,更引发人们对足球行业另一个宇宙的证据?科学家发现重力正在逃逸到其他维度宇宙是否只有一个,一直是人类存在的最大谜团之一。然而,这个谜团可能终于有了解决的办法,科学家们认为他们可能找到了一种革命性的方法,可以帮助他们探测隐藏的维度。关键要点科学家们认为他高透视高开叉,迪丽热巴就要死磕裸色内衬布大家好,这里是这一年想好好更新的种草君。我相信关注或者喜欢迪丽热巴的人,最近都有看到她参加轩尼诗活动的那套活动图吧,寒风凛冽中,她在楚楚动人。虽然我一直认可热巴的美貌,但是不得不承泉州清源山700米石板路改造升级预计今年五一前完工最近,细心的市民前往泉州清源山游玩时,会发现老君售票点前的道路正封闭施工,现场一片忙碌景象。据悉,这是景区势至路正在升级改造,预计今年五一前可完工。据介绍,清源山势至路(双拥路)路记住了局长,没记住景点文旅局长频繁出圈如何脱虚向实?文旅局长卷上天,每天都有一个挂在热搜上。近两年,各地文旅局局长纷纷从幕后到台前,在短视频里秀才艺,使出浑身解数为当地旅游业代言有的在20气温下身着民族长裙唱rap介绍当地风情有的化新疆克拉玛依鹅喉羚组团漫步觅食来源人民网新疆频道在克拉玛依市郊,鹅喉羚在戈壁滩上觅食。闵勇摄在克拉玛依市郊,鹅喉羚在戈壁滩上觅食。闵勇摄鹅喉羚漫步觅食。闵勇摄一群鹅喉羚在克拉玛依市郊活动。赵兰生摄鹅喉羚成为戈壁灌阳水车桃花似锦美如画阳春三月,风和日丽,广西灌阳县水车镇千亩桃园桃花争相竞开,游客在画一样的花中诗一样的景里品味春光。千亩桃园桃花争相竞开。近年来,水车镇在灌阳县委县政府的领导下,以发展特色产业为主要以礼河大峡谷猕猴增多生态好本报特约记者刘光信刘坚文图在会泽县老厂乡以礼河大峡谷两侧陡峭的岩壁上居住着一群野生猕猴。据当地林业部门的工作人员介绍,这里的野生猕猴呈增长趋势,已经增至120余只。老厂乡老厂村王家四川副省长女儿孟军下嫁任正非,生下孟晚舟,离婚后淡泊名利华为从人生的低谷,一路走出困境,成为中国少有的技术性的高科技企业。华为5G技术世界领先,5G技术方面的专利高达3247项,占据全球专利数量总和的24,这个数值依然处于不断增长的时期
中超最新动态上海海港后卫租借加盟亚泰,国安新主帅年薪曝光距离中超二次转会窗口关闭只剩下几天时间,虽然大部分球队财政状况不太好,但是结合球队的实际需要,二次转会窗口还是有不少球员流动。1。上海海港后卫贺惯租借加盟亚泰过去几个赛季在上海海港下载速度高达30M!这款极简版迅雷免费下载不限速,PC端必备要说国内下载器最出名的是哪个,小雷第一个想到的就是迅雷!在小雷小时候,迅雷可以说是必备的一款下载器,不管是下载电影还是下载文件,迅雷都是一把好手。但对铁公鸡小雷来说,迅雷有个不足非曼联回暖了吗英超进行了四轮比赛,曼联是进4球丢7球两胜两负,积六分,暂排第7名。曼联是积分前十队伍里,进球最少,丢球最多的。说明了什么,说明进攻无效,防守无能。攻与守都存在太多问题。现在存在的欧洲第一黑店再营业,再创转会纪录是好心帮曼联崛起?红魔曼联即将花费1亿欧元,从欧洲著名黑店贾府签下前锋安东尼,这个价格,将超越2019年巴萨以8600欧元,签下同样是贾府出身的德容,创下荷甲球员新的转会费记录。要知道,红魔和巴萨围国安又换帅斯坦利回归,换刀如换帅,堪比曼联管理层,接着争第一北京国安俱乐部宣布荷兰籍教练斯坦利出任球队主教练。终于在经历土帅谢峰的失败之后,又想起来洋帅的好,问题是兜兜转转教练换了几个了,有点起色就猛夸续约,成绩掉队就炒教练!怪不得成绩这么曼联1亿新援接受体检!周五有望首秀遭荷兰传奇质疑不值这个价北京时间8月30日,安东尼已经抵达卡林顿基地,接受曼联的体检,即将官宣,而周五凌晨,他有望在对阵莱斯特城的比赛中上演首秀!曼联和阿贾克斯已经就安东尼的转会谈妥,他的转会费最高可以达经过三年的发展,如今一鸣惊人这款武侠游戏的来历是什么?春秋的月亮是什么时候?你对过去了解多少?伴随着轻柔委婉的唱腔,画面缓缓展开,空寂的宫阙与江南烟雨的场景交替上演。毒酒入喉,火势蔓延,群美影像四散,瞬间引起了观众的好奇。这是什么游戏60!梅西大爆发,完胜C罗,刷爆4大纪录,剑指4冠王世界杯从欧冠回来,梅西又有上佳表现,打进全场唯一进球,帮助巴黎圣日耳曼客场10击败里昂,重返法甲榜首位置。本场比赛,梅西刷爆4大纪录,也是超越C罗,第一,实现俱乐部生涯第700球,比C罗梅西可能在中国踢欧冠?媒体报道,大巴黎主席有这个想法头条创作挑战赛原创中国虽然足球不行,但足球市场特别庞大,所以吸引过一些俱乐部来中国举办友谊赛,甚至正赛。比如大巴黎跟摩纳哥在深圳踢过杯赛,国米和AC米兰在北京也踢过杯赛。皇马跟广州韦德力挺,15岁儿子变性成功,进模特圈,和白人男友交往NBA联盟充满天才,联盟的球员个个天赋异禀,不仅能飞擅扣,还浑身肌肉,赛场上对抗也非常激烈,所以联盟巨星,基本都是男人味十足的。韦德作为一个功成名就的球员,他的实力毋庸置疑,巅峰时郭艾伦被耍了?老牛再爆辽篮猛料李洪庆离职谎言遭揭穿套路太多众所周知,郭艾伦和辽篮压哨续约了。但是和郭艾伦关系甚密的牛洪波却在视频中说,郭艾伦实际上是被李洪庆给耍了。老牛为什么这么说呢?李洪庆早在今年七月份就通过辽宁台体育频道节目主持人小马