`
maosheng
  • 浏览: 565495 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ClickHouse 数据库 优缺点

 
阅读更多
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。由号称“俄罗斯 Google”的Yandex开发而来,在2016年开源,在计算引擎里算是一个后起之秀,在内存数据库领域号称是最快的。由于它有几倍于GreenPlum等引擎的性能优势,所以不少人都选择将其安装云服务器中使用。

ClickHouse是一个列导向数据库,是原生的向量化执行引擎。它在大数据领域没有走Hadoop生态,而是采用Local attached storage作为存储,这样整个IO可能就没有Hadoop那一套的局限。它的系统在生产环境中可以应用到比较大的规模,因为它的线性扩展能力和可靠性保障能够原生支持shard+replication这种解决方案。它还提供了一些SQL直接接口,有比较丰富的原生client。

1.优点
数据按列存储,非常适合聚合计算。
为了高效的使用CPU,数据不只仅按列存储,同时还按向量进行处理;
数据压缩空间大,减少IO传输,但数据的解压缩需要消耗CPU,处理查询高吞吐量,每台服务器秒级数十亿行。
索引是类似跳表结构,并不是mysql的B树结构,不需要满足最左原则。
写入速度非常快,50-200 M/S ,建议写本地表而不是all表,对于大量的数据更新非常实用。
查询快,比Vertica快5倍以上,比GP快10倍以上,比HIVE快200倍以上,比MYSQL快800倍以上。
高效实用CPU,并行处理单个查询,充分利用多核,在多个服务器山分布式处理。
开源的列存储,支持线性扩展,简单方便,高可用容错。

2.缺点
不支持事务,所以不存在隔离级别,所以定位是分析性数据库。
不支持高并发,官方建议QPS为100,可以通过修改config.xml的max_concurrent_queries配置。
采用了并行处理机制,即使一个查询,也会用服务器一半的CPU去执行,所以不能支持高并发场景,默认单查询也会使用CPU核数为服务器核数的一半。
建议1000条以上批量的写入,不建议单条记录修改和删除。
尽可能作1000条以上批量的写入,避免逐行insert或小批量的insert,update,delete操做,由于ClickHouse底层会不断的作异步的数据合并,会影响查询性能,这个在作实时数据写入的时候要尽可能避开
SQL满足平常使用80%以上的语法,join写法比较特殊;最新版已支持相似SQL的join,但性能很差;
不支持BIOB DOCUMENT 类型数据,聚合结果必须小于一台机器的内存大小。

相关优化:

1,关闭虚拟内存,物理内存和虚拟内存的数据交换,会致使查询变慢。

2,为每个帐户添加join_use_nulls配置,左表中的一条记录在右表中不存在,右表的相应字段会返回该字段相应数据类型的默认值,而不是标准SQL中的Null值。

3,JOIN操做时必定要把数据量小的表放在右边,ClickHouse中不管是Left Join 、Right Join仍是Inner Join永远都是拿着右表中的每一条记录到左表中查找该记录是否存在,因此右表必须是小表。

4,批量写入数据时,必须控制每一个批次的数据中涉及到的分区的数量,在写入以前最好对须要导入的数据进行排序。无序的数据或者涉及的分区太多,会致使ClickHouse没法及时对新导入的数据进行合并,从而影响查询性能。

5,尽可能减小JOIN时的左右表的数据量,必要时能够提早对某张表进行聚合操做,减小数据条数。有些时候,先GROUP BY再JOIN比先JOIN再GROUP BY查询时间更短。

6,ClickHouse的分布式表性能性价比不如物理表高,建表分区字段值不宜过多,防止数据导入过程磁盘可能会被打满。

7,CPU通常在50%左右会出现查询波动,达到70%会出现大范围的查询超时,CPU是最关键的指标,要很是关注。

性能状况:

1,单个查询吞吐量:若是数据被放置在page cache中,则一个不太复杂的查询在单个服务器上大约可以以2-10GB/s(未压缩)的速度进行处理(对于简单的查询,速度能够达到30GB/s)。若是数据没有在page cache中的话,那么速度将取决于你的磁盘系统和数据的压缩率。例如,若是一个磁盘容许以400MB/s的速度读取数据,而且数据压缩率是3,则数据的处理速度为1.2GB/s。这意味着,若是你是在提取一个10字节的列,那么它的处理速度大约是1-2亿行每秒。对于分布式处理,处理速度几乎是线性扩展的,但这受限于聚合或排序的结果不是那么大的状况下。

2,处理短查询的延时时间:数据被page cache缓存的状况下,它的延迟应该小于50毫秒(最佳状况下应该小于10毫秒)。 不然,延迟取决于数据的查找次数。延迟能够经过如下公式计算得知: 查找时间(10 ms) * 查询的列的数量 * 查询的数据块的数量。

3,处理大量短查询:ClickHouse能够在单个服务器上每秒处理数百个查询(在最佳的状况下最多能够处理数千个)。可是因为这不适用于分析型场景。建议每秒最多查询100次。

4,数据写入性能:建议每次写入很多于1000行的批量写入,或每秒不超过一个写入请求。当使用tab-separated格式将一份数据写入到MergeTree表中时,写入速度大约为50到200MB/s。若是您写入的数据每行为1Kb,那么写入的速度为50,000到200,000行每秒。若是您的行更小,那么写入速度将更高。为了提升写入性能,您可使用多个INSERT进行并行写入,这将带来线性的性能提高。

count: 千万级别,500毫秒,1亿 800毫秒  2亿 900毫秒 3亿 1.1秒
group: 百万级别 200毫米,千万 1秒,1亿 10秒,2亿 20秒,3亿 30秒
join:千万-10万 600 毫秒, 千万 -百万:10秒,千万-千万 150秒

ClickHouse并不是无所不能,查询语句须要不断的调优,可能与查询条件有关,不一样的查询条件表是左join仍是右join也是颇有讲究的。

其余补充:

1,MySQL单条SQL是单线程的,只能跑满一个core,ClickHouse相反,有多少CPU,吃多少资源,因此飞快;

2,ClickHouse不支持事务,不存在隔离级别。ClickHouse的定位是分析性数据库,而不是严格的关系型数据库。

3,IO方面,MySQL是行存储,ClickHouse是列存储,后者在count()这类操做自然有优点,同时,在IO方面,MySQL须要大量随机IO,ClickHouse基本是顺序IO。

4,有人可能以为上面的数据导入的时候,数据确定缓存在内存里了,这个的确,可是ClickHouse基本上是顺序IO。对IO基本没有过高要求,固然,磁盘越快,上层处理越快,可是99%的状况是,CPU先跑满了(数据库里太少见了,大多数都是IO不够用)。











分享到:
评论

相关推荐

    JDBC-ODBC桥连接sql_server数据库

    但它的缺点也很明显,如性能较低,因为需要通过两次转换(JDBC到ODBC再到数据库API),增加了额外的开销。此外,它依赖于系统级别的ODBC配置,可能造成部署上的复杂性。随着JDBC驱动的不断发展,现在许多数据库都...

    Datax支持clickhouse

    在标题提到的"Datax支持clickhouse",意味着Datax已经扩展了对ClickHouse数据库的兼容性,使得我们可以利用Datax将数据从其他数据源导入到ClickHouse中。 ClickHouse是一款高性能的列式存储数据库管理系统(MPP),...

    块式读取与流式读取对比demo

    它的缺点是由于频繁的I/O操作,可能会比块式读取慢一些。 在实际应用中,我们通常会根据需求选择合适的读取方式。例如,如果我们需要快速处理大量小文件,块式读取可能更合适;而在处理大文件或网络流时,流式读取...

    Clickhouse调研说明文档

    四、Clickhouse的优缺点 优点: - 高性能:对于OLAP场景,Clickhouse的查询速度非常快。 - 易于部署和使用:提供了丰富的客户端工具,且支持SQL,降低了学习成本。 - 扩展性强:通过增加节点,可以轻松应对数据量的...

    ClickHouse中文文档(642页).pdf

    ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。在传统的行式数据库系统中,数据按如下顺序存储:每行中的数据总是被物理的存储在一起。常见的行式数据库系统有: MySQL、Postgres和MS SQL Server...

    ClickHouse笔记.pdf

    ### ClickHouse优缺点 #### 优点 - **快速读写性能**:列式存储特别适合OLAP场景,能够实现快速的数据分析和查询。 - **高可用性**:通过配置集群模式,可以实现自动复制和数据冗余。 - **易于管理**:虽然列式...

    ClickHouse--day01--架构原理和表引擎详解.pdf

    ClickHouse 的缺点: 1. 复杂的安装和配置:ClickHouse 的安装和配置过程较为复杂,需要专业的技术人员来进行安装和配置。 2. 高度的技术门槛:ClickHouse 需要专业的技术人员来进行维护和优化,否则可能会出现性能...

    Clickhouse基础知识

    ClickHouse 的缺点: 1. 不支持事务,不适合做业务数据库,即实时的删除、更新 2. 不支持高并发,查询快是充分利用 CPU 资源(即使一个查询也会占用服务器的 50% CPU 去执行) 3. 缺少高频率的删除与更新,具有延迟性...

    7-3+ClickHouse在腾讯游戏营销效果分析中的应用实践.pdf

    然而,ClickHouse也存在缺点,如扩容时的数据迁移问题、单机性能瓶颈以及较低的写入并发能力,这些都需要在实际应用中进行优化。 在系统架构上,ClickHouse作为分析引擎,连接营销日志统一调度系统,通过ETL(提取...

    大数据项目之实时数仓(clickhouse)

    ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C++语言编写,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。下面是 ClickHouse 的一些关键特征和知识点...

    ClickHouse 常问面试题,ClickHouse 的特性、表引擎等

    ClickHouse的缺点: 1. 不⽀持事务。 2. 不⽀持真正的删除/更新。 3. 不⽀持⼆级索引。 4. 不⽀持窗⼝功能。 5. 元数据管理需要⼈为⼲预。 ClickHouse的架构: ClickHouse 采⽤典型的分组式的分布式架构,其中: ...

    怎么用ClickHouse建数据平台撑起百亿级数据量

    **ClickHouse的优缺点** **优点:** 1. 高数据压缩率,降低硬件需求。 2. 支持SQL,简化数据操作。 3. 快速处理大量数据。 4. 列式存储利于分析任务。 **缺点:** 1. 不支持事务,无法进行复杂的数据更新操作。 2. ...

    MyBatis面试题 37道1

    MyBatis的优缺点** 优点: - 减少了JDBC代码量,简化了数据库操作,降低了系统的维护难度。 - SQL语句可以在XML中独立编写,便于管理和优化,支持动态SQL,增强了查询的灵活性。 - 提供对象关系映射标签,简化了...

    druid和clickhouse调研.docx

    ClickHouse是一个列式数据库管理系统,专为高速数据分析而设计。其核心优势在于: 1. **高性能**:由于采用列式存储,数据压缩率高,配合稀疏索引,能实现快速的查询响应。 2. **实时性**:支持从Kafka等消息队列...

    MySQL数据库迁移快速导出导入大量数据

    这种方法的优点在于兼容性好,可以灵活处理各种需求,但缺点是操作耗时较长,尤其是面对大量数据时。 其次,利用第三方迁移工具,如MySQL Workbench或Navicat,可以实现自动化迁移,减少人工干预,但设置过程较为...

    sql行列转换扩展

    SQL 行列转换扩展是指将数据库表中的行数据转换为列数据,或者将列数据转换为行数据的操作。这种操作在数据分析和报表生成中非常常见。在本文中,我们将介绍两种类型的行列转换扩展方法:行转列结构和行列转换...

    自定义JDBC连接池及常用连接池介绍

    这些连接池各有优缺点,选择时应考虑项目的具体需求,如性能、稳定性、易用性、功能特性等。了解和熟悉这些连接池的工作原理,可以帮助我们更好地优化数据库访问,提升系统的稳定性和效率。在实际开发中,可以结合...

    实时数仓|你需要的是一款强大的OLAP引擎

    在开源盛世的今天,实时数仓的建设业界已经有了成熟的方案。技术选型上实时计算、消息队列都有最优解,唯独在 ...我们就各个常用开源OLAP引擎的优缺点和使用场景做出详细对比,让开发者进行技术选型时做到心中有

    3-9+impala打造交互查询系统.pdf

    这些系统各有优缺点,例如,Hive适合批处理但响应时间较长,Spark则在内存计算方面表现出色,而Impala以其交互式查询能力著称。Presto和GreenPlum同样适用于分布式查询,但在特定场景下,如实时分析和OLAP操作,它们...

Global site tag (gtag.js) - Google Analytics