2 个回答
ClickHouse 的核心特性有:
1、列存储:列存储是指仅从存储系统中读取必要的列数据,无用列不读取,速度非常快。ClickHouse 采用列存储,这对于分析型请求非常高效。一个典型且真实的情况是,如果我们需要分析的数据有 50 列,而每次分析仅读取其中的 5 列,那么通过列存储,我们仅需读取必要的列数据。相比于普通行存,可减少 10 倍左右的读取、解压、处理等开销,对性能会有质的影响。
2、向量化执行:在支持列存的基础上,ClickHouse 实现了一套面向向量化处理的计算引擎,大量的处理操作都是向量化执行的。相比于传统火山模型中的逐行处理模式,向量化执行引擎采用批量处理模式,可以大幅减少函数调用开销,降低指令、数据的 Cache Miss,提升 CPU 利用效率。并且ClickHouse 可利用 SIMD 指令进一步加速执行效率。 这部分是ClickHouse 优于大量同类 OLAP 产品的重要因素。
3、编码压缩:由于 ClickHouse 采用列存储,相同列的数据连续存储,且底层数据在存储时是经过排序的,这样数据的局部规律性非常强,有利于获得更高的数据压缩比。此外,ClickHouse 除了支持 LZ4、ZSTD 等通用压缩算法外,还支持 Delta、DoubleDelta、Gorilla 等专用编码算法,用于进一步提高数据压缩比。
4、多索引:列存储用于裁剪不必要的字段读取,而索引则用于裁剪不必要的记录读取。ClickHouse 支持丰富的索引,从而在查询时尽可能的裁剪不必要的记录读取,提高查询性能。
5、多样化的表引擎: ClickHouse将存储部分进行了抽象,把存储引擎作为一层独立的接口。ClickHouse目前拥有合并树、内存、文件、接口和其他6大类等20多种表引擎,用户可以根据实际应用场景,选择合适的表引擎使用。
6、多主架构: ClickHouse则采用Multi-Master多主架构,集群中每个节点角色对等,客户端访问任意一个节点都能得到相同的效果。多主架构有很多优势:1、对等的角色使用系统架构变得更加简单。2、不再区分主控节点、数据节点和计算节点。3、集群中的所有节点功能相同。ClickHouse规避了单点故障的问题,非常适合用于多数据中心、异地多活的场景。
发布于:1个月前 (02-08) IP属地:四川省
7、多线程和分布式: 向量化执行是通过数据级并行的方式提升了性能,多线程处理是通过线程级并行的方式实现了性能的提升。ClickHouse在数据存取方面,既支持分区(纵向扩展,利用多线程技术),也支持分片(横向扩展,利用分布式技术)。
发布于:1个月前 (02-08) IP属地:四川省
我来回答
您需要 登录 后回答此问题!