Clickhouse 索引类型明细

索引类型原理适用场景性能提升局限性每条索引大小备注
主键索引字段进行排序索引经常用于点查的唯一主键如uuId提升点查(logN)和该字段的排序性能只有一个主键索引,多套主键的设置会消耗成倍的存储主键表达式长度
min_max索引记录每个数据块的最大最小值

适用于数据入库有序的字段

保证各个part内的数据相对来说独立,交集较少,如数据时间字段

可用于过滤大量不相管的数据分区

合理配置可几十上百倍提高性能

离散分布于所有数据中的字段不适用,如省份,年龄等2 * 索引表达式长度
set记录每个数据块内索引表达式的所有唯一取值适用于每个数据块内基数较低但总体基数高的字段,在区间交集大的情况下作为 min_max 索引的补充提升点查过滤性能如果每个块包含大量惟一值,会造成性能低下,或者由于索引值个数超过max_size使索引在该块内失效。

N * 索引表达式长度

(N 为数据块内唯一值个数)

bloom_filter基本的bloom filter实现与 set 类似-函数支持少;只能进行值的完全匹配,不适用需要字符串分词的场景bloom filter 数组大小
tokenbf_v1将字符串分割成单词,并在bloom filter中记录该单词的存在性适用于简单的文本搜索场景,在长字符串中搜索单词(或其它可分割的子字符串)。例如在应用程序的日志中使用 IN 操作符搜索几个类名或行号。提升简单文本搜索场景下的子字符串匹配性能不适用中文分词场景bloom filter 数组大小
ngrambf_v1功能与tokenbf_v1相同,但是文本分割方式不一样。该索引将字符串分割成多个ngram,并在 bloom filter 中记录该ngram的存在性适用于简单的文本搜索场景,在长字符串中搜索子字符串。这个索引在对中文等没有单词分隔的语言中进行文本搜索的场景中比tokenbf_v1更有用。提升简单文本搜索场景下的子字符串匹配性能机制简单,不适用于大量文本搜索场景bloom filter 数组大小
hypothesis记录字段与字段之间、字段与值之间的比较关系如果查询条件中常常出现列与列之间的比较关系,可以适用此索引-索引表达式只能是单个简单表达式,不能是复合表达式。1 (单个布尔值)
inverted这是一个实现全文检索的倒排索引适用于在大量文本中进行关键字搜索的场景可达到一至两个数量级的性能提升

inverted 索引以 index_granularity 为最小粒度,ClickHouse 还需要对的数据块执行实际扫描,而不是直接定位所有包含该字符串的行,所以 gin 的实际性能未达到极致

不确定实验性特性

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ClickHouse中的去重可以通过使用ReplacingMergeTree引擎来实现。该引擎可以在合并分区(part)的过程中,只保留主键(即排序键)相同的记录中的一条,从而实现去重的效果。但是这种去重方式存在两个问题。首先,为了实现全局去重,需要确保主键相同的记录在同一个节点的同一个分区上。其次,ReplacingMergeTree引擎的合并操作是由后台线程不定期触发的,时机是不可控的,因此无法保证多久之后不会出现重复数据。对于对实时性要求较高的用户可能不太适用。 另一种广泛使用且性能较好的去重方案是在明细表上创建ReplacingMergeTree引擎的物化视图,并指定ORDER BY排序键作为判断重复数据的唯一键。通过选择数据的去重策略,默认保留最新的一条记录。这种方案通过创建物化视图实现了去重,并且可以提供较好的性能。 还有一种方案是在高qps环境下使用,但性能较差。该方案与方案一相似,也是通过创建ReplacingMergeTree引擎的物化视图,并在查询时加上FINAL关键字。然而,当过滤出来的数据量较大时,单个查询的CPU消耗和耗时都会增加。为了减少查询时的数据量,需要使用分布式表,并尽量让数据在后台进行去重。此外,需要注意的是,指定的去重主键并非用户后续查询的过滤条件,否则会浪费排序索引。 综上所述,ClickHouse提供了多种去重方案,可以根据实际需求选择合适的方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Clickhouse数据实时去重](https://blog.csdn.net/weixin_45626756/article/details/118180586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值