cassandra主键索引介绍

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Tair(兼容Redis),内存型 2GB
简介: 主键索引格式如下: summery.db:index文件的索引,对partition做sampling索引,加快查找。 index.db:索引文件,data文件中每个partition都会有一个索引项,指向该partition在data文件中的偏移,还有对clustering的采样(sampling)索引,可直接指向具体clustering数据偏移。

主键索引格式如下:

image

  • summary.db:
    index文件的索引,对partition做sampling索引,加快查找。
  • index.db:
    索引文件,data文件中每个partition都会有一个索引项,指向该partition在data文件中的偏移,还有对clustering的采样(sampling)索引,可直接指向具体clustering数据偏移。
  • data.db:
    数据文件,完整格式

查找过程

summary是一个sstable概述,header中记录了最大partition,最小partition,这样我们指定key查找时,可以很方便判断是否要跳过这个这个sstable。当memtable flush本地文件时,不断写data及index文件,同时也会对index.db文件取样,index.db索引项每写入128个,会在summary中记录一下当前采样项目,同时会记录index.db的文件偏移,summary文件目前就是为了加快查找。index.db文件中的rowIndexEntry其实就是索引data文件中的PartitionKey数据的,一一对应,dataFilePostion记录了该partition在data文件中的偏移。在cassandra中一个partition允许上G大小,所以势必会有很多cluster,如果一次主键查找需要扫描整个上G数据段,效率可想而知。所以cassandra 在rowIndexEntry会写入很多indexInfo,indexInfo是clustering的索引,也是128行clustring数据采样一次,产生一个indexInfo,所以这个indexInfo会包括这段范围内的clustering信息,起始/结束时clustering,还有对应数据文件的偏移。rowIndexEntry数据结构尾部是一串offset,指向前面的一个个indexInfo,因为clustering是变长的,indexInfo也是变长的,使用offset记录偏移加速访问。正因为上述索引体系结构,对于partitionKey+clustering的查找,可以先找到indexInfo,再去读数据文件。

钉钉群

lALPDgQ9ql0mM3XMp8yo_168_167_png_620x10000q90g

钉钉群入群链接:https://c.tb.cn/F3.ZRTY0o

相关文章
|
7月前
|
SQL 关系型数据库 MySQL
关系型数据库选择唯一性索引
【5月更文挑战第19天】
110 2
|
2月前
|
存储 SQL 关系型数据库
mysql中主键索引和联合索引的原理与区别
本文详细介绍了MySQL中的主键索引和联合索引原理及其区别。主键索引按主键值排序,叶节点仅存储数据区,而索引页则存储索引和指向数据域的指针。联合索引由多个字段组成,遵循最左前缀原则,可提高查询效率。文章还探讨了索引扫描原理、索引失效情况及设计原则,并对比了InnoDB与MyISAM存储引擎中聚簇索引和非聚簇索引的特点。对于优化MySQL性能具有参考价值。
|
关系型数据库 PostgreSQL 索引
PostgreSQL 11 新特性解读:分区表支持创建主键、外键、索引
PostgreSQL 10 版本虽然支持创建范围分区表和列表分区表,但创建过程依然比较繁琐,需要手工定义子表索引、主键,详见 PostgreSQL10:重量级新特性-支持分区表,PostgreSQL 11 版本得到增强,在父表上创建索引、主键、外键后,子表上将自动创建,本文演示这三种场景。
7112 0
|
7月前
|
存储 关系型数据库 MySQL
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
978 0
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
|
7月前
|
NoSQL MongoDB 数据库
MongoDB的索引与索引字段的顺序
MongoDB的索引与索引字段的顺序
137 2
|
存储 SQL 关系型数据库
MySQL学习笔记-主键索引和二级索引
MySQL学习笔记-主键索引和二级索引
94 0
|
SQL 关系型数据库 MySQL
MySQL复合索引和单列索引的单表查询分析
MySQL复合索引和单列索引的单表查询分析
|
关系型数据库 数据库 索引
主键和唯一索引的区别
主键和唯一索引的区别
170 0
|
存储 关系型数据库 MySQL
MySQL InnoDB表和索引之聚簇索引与第二索引
MySQL InnoDB表和索引之聚簇索引与第二索引
95 0