LowCardinality
clickhouse中的字段是一种优化,其中的值是字典编码的,以实现更快的查找和更小的存储。根据文件:
使用低密度数据类型的效率取决于数据的多样性。如果一个字典包含少于10000个不同的值,那么clickhouse通常显示出更高的数据读取和存储效率。如果字典包含超过100000个不同的值,那么与使用普通数据类型相比,clickhouse的性能会更差。
作为布尔值使用的uint8值呢?基数是2,但是占用空间这么小(8),使用它在查询中真的会有好处吗?
LowCardinality
clickhouse中的字段是一种优化,其中的值是字典编码的,以实现更快的查找和更小的存储。根据文件:
使用低密度数据类型的效率取决于数据的多样性。如果一个字典包含少于10000个不同的值,那么clickhouse通常显示出更高的数据读取和存储效率。如果字典包含超过100000个不同的值,那么与使用普通数据类型相比,clickhouse的性能会更差。
作为布尔值使用的uint8值呢?基数是2,但是占用空间这么小(8),使用它在查询中真的会有好处吗?
1条答案
按热度按时间d7v8vwbk1#
lowcardinality主要对字符串类型有意义。
低基数(uint8)总是比uint8差。
很少有低基数对数字类型有意义的情况。但我甚至不会测试它,因为它浪费时间。指向lc字典的指针将(int8-int32)放在.bin文件中,因此将数值本身存储在.bin文件中在磁盘空间和cpu方面更便宜。