【HBZ分享】Clickhouse高性能剖析--稀疏索引

简介

密集索引 与 稀疏索引的介绍

在这里插入图片描述
在这里插入图片描述

1. 密集索引:在密集索引中,数据库中每个键值都有一个索引记录,可以加快搜索速度,但需要更多空间来存储这些索引本身,索引记录包含键值 和 指向磁头上实际记录的指针
2. 稀疏索引:稀疏索引不会为每个关键字创建一个索引记录,而是为数据记录文件的每个存储块设置一个键-指针对。存储块意味着【块内存储单元连续】

案例

1. Mysql的MYISAM引擎里面使用的均为稀疏索引
2. Mysql的InnoDB中,如果存在主键,则主键是密集索引
3. Kafka里面的索引文件也是采用稀疏索引进行构造消息索引
4. Clickhouse的合并树MergeTree引擎使用的是稀疏索引,默认index_granularity设置8192新版本的提供了
  自适应粒度大小的特性,8192含义就是每8192为一个数据存储块,公用1个索引,如果想找具体数据,需要从
  8192个数据中进行二次寻址,找到指定数据。
  
  建表语句最后加这个,可以调整
  SETTINGS index_granularity = 8192

总结

1. Clickhouse的一级索引,就是稀疏索引,可以大幅减少索引占据的空间
   (1). 默认索引粒度是8192, 即每个存储块8192数据量公用1个索引。假如1亿行数据只需要存储12208行索引,
   占用空间小,clickhouse中一级索引的数据是【常驻内存】的,取用速度极快
2. 密集索引占用空间多,所以性能比稀疏索引块,缺点就是耗费更多空间
3. 思想依然是:时间与空间之间的抉择
4. 稀疏索引需要进行二次寻址,因为索引指向的是一个存储块,找到具体数据,需要从存储块中进行二次寻址,
   所以性能不如密集索引
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值