doris 的编码 dict编码是什么,有大佬可以详解一下吗?
dict编码 就是字典编码。
在存储层,存储string类型的时候,如果某列的基数比较低(比如 国家,城市这种列),就会使用字典编码。字典编码就是用一个字典(可以是hashmap, trie树等数据结构) 将string映射到int。
假如某个string列的值是 “北京”, “上海”,’‘广州’’,“深圳”,基数是4, 我们可以将 “北京”, “上海”,’‘广州’’,“深圳” 映射到 1,2,3,4。 在存储层就不用存储 “北京”, “上海”,’‘广州’’,“深圳”,直接存储1,2,3,4 就行。 可以节省存储空间,而且基于字典编码可以在Filter, Agg, Join 时做更多优化。
在存储层,存储string类型的时候,如果某列的基数比较低(比如 国家,城市这种列),就会使用字典编码。
那么这个基数是多大呢,几万?几十万?
和string的长度有关,一般是几千,几万的级别。