暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

列索引粗糙索引

芬芳 2023-09-18
336

由前述列举的存储格式可以看出,IMCI中所有的Datapack都采用无序且追加写的方式,因此无法像InnoDB的普通有序索引那样,可以精准的过滤掉不符合要求的数据。在IMCI中,借助统计信息来进行数据块过滤,以此来达到降低数据访问单价的目的。

  • 在每个Active Datapack终结写入的时候,会预先进行计算,并生成Datapack所包含数据的最小值、最大值、数值的总和、空值的个数和记录总条数等信息。所有这些信息会维护在DataPacks Meta元信息区域并常驻内存。由于冻结的Datapack中还会存在数据的删除操作,因此统计信息的更新维护会放到后台完成。
  • 对于查询请求,会根据查询条件将Datapacks分为相关、不相关、可能相关三大类,从而减少实际的数据块访问。而对于一些聚合查询操作,如count和sum等,可以通过预先计算好的统计值进行简单的运算得出,这些数据块甚至都不需要进行解压。
    image.png
    采用基于统计信息的粗糙索引方案,对于一些需要精准定位部分数据的查询并不是很友好。但是在一个行列混合存储引擎中,列索引只需要辅助加速那些会涉及到大量数据扫描的查询,在这个场景下使用列存索引会具有显著的优势。而对于那些只会访问到少量数据的SQL,优化器通常会基于代价模型计算得出基于行存而得到的一个成本更低的方案。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论