clickhouse使用经验总结

ClickHouse概述 ClickHouse是俄罗斯的Yandex于2016年开源的一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(DBMS:Database Management System) , 主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 ClickHouse是一个完全的列式分布式数据库管理系统,允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器,支持线性扩展,简单方便,高可靠性,容错。它在大数据领域 阅读详情
AI摘要

本文围绕ClickHouse展开,介绍了Java连接时避免循环查询以防超时,高并发查询需优化配置。还提及数据去重、同步方法,如使用近似算法函数和remote()函数等。同时给出内存限制、索引创建、物化视图使用等优化建议,以及列空值转换规则。

1、java连接clickhouse中,尽量不用使用循环查,容易造成超时异常;
2、高并发查询clickhouse造成超时。
3、clickhouse适合大数据量,单查询。
4、高并发需要优化clickhouse的配置,具体包含 
        max_concurrent_queries    100个并发   1000个
        uncompressed_cache_size   8G     总内存*2/3
5、对于数据去重,除了使用distinct函数外,还有uniq()、uniqCombined()、uniqHLL12()、uniqExact()近似算法函数。
6、对于数据同步,直接在命令行,使用remote()函数从远程其他数据库同步,此外还有clickhouse-copyier工具
7、可以直接将mysql数据同步至clickhouse中;(clickhouse-client --host xx.xx.xx.xx --port 8123)
        CREATE DATAASE IF NOT EXISTS tt_test ENGINE=MySQL('172.11.11.11:3306', 'tt_test ', 'root', 'xxxxx');
        INSERT INTO default.tt_test (c1, xxxx) SELECT c1,xxx FROM mysql('172.11.11.11:3306', 'tt_test', 'root', 'xxxxx') ;
        INSERT INTO default.tt_test SELECT * FROM remote('172.11.11.11:8123', tt.test, '', '');
8、ck配置内存不能设置过大,否则,在进行一些需要申请超过操作系统限制的查询时,会出现OOM,导致ck被系统kill掉。
   需要对ck的查询使用内存进行限制,通常需要使用ck所在服务器的百分之八九十即可。(users.xml---<max_memory_usage>)10737418240(10G)
9、针对常查询的字段,使用ORDER BY(c1, c2, xxx) 创建索引;
10、有Nullable的字段,不能创建索引,一些查询字段不要设置Nullable();
11、针对多个基础表,使用物化视图(MATERIALIZED),可以提高连表查询速度。
        CREATE MATERIALIZED VIEW default.tt_test(
            `c1` String,
            `c2` Float64,
            `c3` Float64,
            `c4_date` Date
        )ENGINE = SummingMergeTree() PARTITION BY c4_dateORDER BY c1
12、使用TTL,设置表数据过期自动删除的时间(TTL只有暂停功能、没有取消功能)
        CREATE TABLE default.tt_test(
            ……
        ) ENGINE = MergeTree() PARTITION BY toYYYYMMDD(xx_date) 
        ORDER BY(c1, c2, c3, c4, c5, c6) 
        TTL c1+ toIntervalDay(30)
13、ck默认索引粒度(ck为clickhouse简称)
    8192 = 1024 * 8
14、ck列设置空值转换
    (1)空表,Nullable与非空类型可以互转;
    (2)Nullable字段,如果记录不带有Null值,可以从Nullable转成非空类型;
    (3)含有null值的字段不允许转成非空类型;
    (4)Nullable字段不允许用于order by;

15、java连接ck时,运算尽量交给ck去处理(即sql可以写的复杂),不要并发或过于频繁访问ck(避免频繁查询小批量数据)。

ClickHouse使用介绍和部署指南 ClickHouse 是一种用于在线分析处理 (OLAP) 的高性能、面向列的 SQL 数据库管理系统 (DBMS)。它以其快速的查询性能和高效的数据压缩而闻名,并且能够处理 PB 级别的数据。1. 阅读详情

相关推荐

ClickHouse的安装与使用

1.什么是ClickHouse ClickHouse是一个高性能,面向列的SQL数据库管理系统(DBMS),用于在线分析处理(OLAP)。 2.rpm安装,设置官方存储库 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo 3.安装ClickHouse服务器和客户端 sudo yum install -y clickhouse

qq_40145043的博客 4125

ClickHouse高性能查询/写入和常见注意事项(五)

数据写入默认是异步的(可以开启同步写但性能会影响),先在分布式表所在的机器进行落盘, 然后异步的发送到本地表所在机器进行存储,中间没有一致性的校验,短时间内可能造成不一致,且如果分布式表所在机器时如果机器出现down机, 会存在数据丢失风险。批量写入数据时,控制每个批次的数据中涉及到的分区的数量,无序的数据导致涉及的分区太多,建议写入之前最好对需要导入的数据进行排序。首先是内存的 C0 层,保存了所有最近写入的 (k,v),这个内存结构是有序的,且可以随时原地更新,同时支持随时查询。

xwnxwn的专栏 2513

在K8S上使用Clickhouse

clickhouse是一款开源的分析型数据库,性能强大。本文介绍如何在K8S环境中部署和使用clickhouse。我们使用开源的clickhouse operator:相关依赖:k8s 1.15+。我们使用了k8s 1.20。8C16G 3节点。存储CSI。我们使用了nfs。nfs仅用作测试,生产环境不建议使用nfs作为数据库存储。

2063

ClickHouse数据库性能测试报告

测试日期: 20223年3月15日至2023年3月20日。项目名称: ClickHouse数据库性能测试。

swpmvp的专栏 1136

【ClickHouse系列】使用clickhouse-operator搭建clickhouse集群

clickhouse-operator特性 根据提供的自定义资源规范创建ClickHouse群集 自定义存储资源调配(VolumeClaim模板) 自定义pod模板 自定义service模板 ClickHouse配置和设置(包括Zookeeper集成) 柔性模板 ClickHouse集群自动扩展 ClickHouse版本升级 ClickHouse指标导出Prometheus 要求:Kubern...

一只努力的微服务 5301

clickhouse 安装和使用

clickhouse 安装和使用 离线安装 参考官网 本人的服务器系统版本是centos类型,因此在官网上下载了rpm包在本地安装。rpm地址 下载内容包含三个部分: clickhouse-client-20.9.7.11-2.noarch.rpm clickhouse-server-20.9.7.11-2.noarch.rpm clickhouse-common-static-20.9.7.11-2.x86_64.rpm 以上内容上传至服务器的clickhoust文件夹下,在该文件夹下执行如下命令即安

sun%moon 2065

ClickHouse原理及使用

一、ClickHouse 概述 1.1 什么是ClickHouse ClickHouse 是俄罗斯的 Yandex 于2016年开源的列式存储数据库(DBMS),主要用于在线分析处理查询(OLAP),能够使用SQL 查询实时生成分析数据报告。 1.2 什么是列式存储 以下面的表为例: Id Name Age 1 张三 18 2 李四 22 3 王五 34 采用行式存储时,数据在磁盘上的组织结构为: 好处是想查某个人所有的属性时,

认知 行动 坚持 5万+

ClickHouse 教程

ClickHouse 是一个开源的列式数据库管理系统(DBMS),专门用于在线分析处理(OLAP)。它能够以极高的速度处理大量数据,适用于实时分析和大数据场景。以下是一个简单的 ClickHouse 教程,帮助你快速入门。

flying0916的博客 1587

ClickHouse系列之ClickHouse使用

  ClickHouse用String表示可变长度的字符串,长度可被认为是没有限制的。   ClickHouse的String统一了关系型数据库中的Varchar、Text、Clob和Blob类型。   ClickHouse的String没有编码的概念(因为同时支持存储文本和二进制),但是建议在存储文本时用UTF-8编码。Date只精确到天,不能指定时区​ DateTime精确到秒,可以指定时区。  包括TinyLog引擎、StripeLog引擎和Log引擎。TinyLog引擎将数据存储在磁盘上,没有索引,

冬济的博客 1364

ClickHouse使用分析

每个列字段都独立存储,有一个对应的.bin文件,按列独立存储的好处可以更好的数据压缩,还能缩小数据的扫描范围数据经过压缩按照order by(类似主键)的顺序排列,按照压缩数据块的形式写入.bin文件中,每个压缩块的大小控制在64KB-1MB,虽然数据被压缩后能够有效减少数据大小,降低存储空间并加速数据传输效率,但数据的压缩和解压动作,其本身也会带来额外的性能损耗,所以要控制被压缩数据的大小,在性能损耗和压缩率之间寻求一种平衡,而且通过数据块读取,可以不用读取整个.bin文件,缩小数据读取范围。

InfiniteCreator 1103

ClickHouse的高性能查询技巧

1.背景介绍 1. 背景介绍 ClickHouse 是一个高性能的列式数据库,主要用于实时数据处理和分析。它的设计目标是提供快速、高效的查询性能,支持大量数据的实时处理。ClickHouse 的高性能查询技巧可以帮助用户更好地利用 ClickHouse 的优势,提高查询性能和效率。

AI天才研究院 1275

[ClickHouse] 使用 Pandas 读写 ClickHouse

由于 Pandas 本身不支持 ClickHouse 相关操作, 所以自己封装了一些读写操作 一. Pandas 读取 ClickHouse GitHub 上面有几个 Python 操作 ClickHouse 的开源项目, 不过收藏数量都不多(几百个 star), 经过试用, 发现 clickhouse_driver 这个项目相对靠谱一点, 先使用 pip 安装, 读取数据的代码如下: from clickhouse_driver import Client import pandas as pd impo

weixin_42902669的博客 1万+

ClickHouse高并发查询优化:应对大数据流量挑战

在数据驱动决策的时代,ClickHouse作为一款高性能列式存储数据库,已成为实时分析领域的佼佼者。然而,当面临数千甚至数万QPS的高并发查询场景时,许多团队都会遭遇性能瓶颈。本文将带你深入探索ClickHouse在高并发环境下的行为特性,从硬件配置到软件调优,从数据模型设计到查询语句优化,提供一套系统化的优化方法论。通过真实案例和具体代码示例,我们将展示如何将ClickHouse的并发处理能力从每秒百级提升至万级,同时保持亚秒级响应时间,为企业级大数据实时分析平台构建坚实的技术基础。

大数据洞察的博客 519

ClickHouse系列之ClickHouse安装

如下图,在编辑连接属性时,对驱动进行设置,增加:use_time_zone=Asia/Shanghai、use_server_time_zone_for_dates=true,此时再进行查询测试,发现时间就保持一致了。通过命令添加的用户,默认配置在docker容器内的/etc/clickhouse-server/users.d 文件中,当忘记免密时候,可以进入该文件中进行修改。在linux下创建目录,/app/docker/clickhouse 目录,作为后续clickhouse安装的路径。

冬济的博客 1612

GD32F450以太网(2-2): PHY芯片IP101GR介绍

IP101是台湾省九阳电子公司生产制造的,符合IEEE 802.3/802.3u标准单端口快速以太网收发器100Mbps和10Mbps操作,它支持自动MDI/MDIX功能,简化网络安装和减少系统维护成本。支持Auto MDI/MDIX已内置4个49.9欧的精密电阻支持中断功能支持 MII/RMII 接口超低功耗

Zhichao_Zhang的博客 1万+

避坑指南:Win10安装Docker Desktop时Hyper-V报错的7种解决方案(2024最新版)

本文提供了2024年最新、最全面的Windows 10系统下Docker Desktop安装时Hyper-V报错的解决方案指南。文章深入剖析了Hyper-V与Docker的共生关系,并系统性地给出了从BIOS/UEFI设置、Windows功能启用、bcdedit命令修复到处理多虚拟化环境共存等7种核心解决方案,帮助开发者彻底解决安装困局,顺利部署容器化开发环境。

weixin_28840143的博客 530

安装ClickHouse

本文详细介绍如何使用Docker快速部署ClickHouse列式数据库,并进行基本测试。主要内容包括: Docker部署:通过docker-compose一键部署ClickHouse 25.4.2.31版本,配置数据库、用户名/密码(123456)、端口映射(8123/9000)和数据持久化。 连接验证: 通过curl命令验证服务可用性 使用浏览器访问http://ip:18123/play进入交互式控制台 使用DBeaver工具成功连接 基础测试: 用户管理(创建/查询/授权) 数据库操作(创建/

liuhm的博客 1297

Unity游戏开发实战:用柏林噪声打造3D随机地形(附完整C#代码)

本文详细介绍了如何在Unity游戏开发中使用柏林噪声算法生成3D随机地形,包含完整的C#代码实现。从基础柏林噪声原理到高级参数控制,再到性能优化和常见问题解决,帮助开发者掌握程序化地形生成技术,打造丰富多变的游戏世界。

weixin_29281941的博客 101

clickhouse-server使用,以及DBeaver连接docker镜像问题

你可以通过 `clickhouse-client`、HTTP 接口或 TCP 接口与 ClickHouse 交互,并且可以通过挂载数据目录来持久化数据。- `-p 8123:8123`:将容器的 8123 端口映射到主机的 8123 端口(HTTP 接口)。- `-p 9000:9000`:将容器的 9000 端口映射到主机的 9000 端口(TCP 接口)。- `--name clickhouse-server`:为容器指定一个名称。#### 使用 `clickhouse-client`

m0_53972481的博客 1347

SUMO从入门到精通:手把手教你用开源工具完成智能网联车仿真(附Python接口教程)

本文提供了一份SUMO开源交通仿真工具的完整实战指南,从环境搭建、基础仿真到Python接口TraCI的深度应用。重点讲解了如何利用SUMO的高度可定制性进行智能网联车仿真,包括实现动态信号优先等核心算法,并介绍了与网络仿真器集成以构建高保真车联网通信环境的方法。

weixin_28327051的博客 540

Python爬虫实战:基于Playwright与异步技术的专利数据抓取系统

专利数据是企业技术创新、市场竞争分析和行业趋势预测的关键情报来源。然而,专利数据通常分散在各个国家的专利局网站,数据结构复杂,反爬机制严格,使得高效抓取成为技术挑战。本文将详细介绍如何构建一个基于最新Python技术的专利数据抓取系统,涵盖Selenium的现代化替代方案Playwright、异步编程、智能代理轮换等高级技术。

2201_76125261的博客 1563

【clickhouse】 使用 SQLAlchemy 连接 ClickHouse 数据库的完整指南

创建 ORM 基类# 定义一个 User 类,对应数据库中的 users 表# 创建数据库中的表通过 clickhouse-sqlalchemy 和 SQLAlchemy 的结合,Python 开发者可以非常方便地连接并操作 ClickHouse 数据库。无论是通过 SQLAlchemy 的核心查询功能,还是 ORM 模式,SQLAlchemy 都能为你的 ClickHouse 项目提供强大的数据库抽象层。

哈哈哈哈哈哈哈 2580

学Simulink--基于风力发电系统的场景实例:海上风电场在复杂海况下的动态响应仿真

本实例将创建一个针对海上风电场在复杂海况下的动态响应模型。该模型不仅考虑了不同风速条件的影响,还引入了波浪和水流对风机塔架及基础结构的影响。通过仿真验证系统的有效性,并探索最佳控制参数设置以提高整体性能和稳定性。本教程展示了如何在Simulink中实现一个海上风电场在复杂海况下的动态响应仿真模型,并分析其性能。通过这种方式,我们不仅可以验证所提出的技术手段在提高海上风电场稳定性和效率方面的有效性,还能进一步探索优化参数以适应特定的应用场景。

xiaoheshang_123的博客 168

Clickhouse

与mysql类似,表引擎决定其特征,clickhouse不同引擎之间区别很大,分为六类20多种MergeTree系列引擎外部存储类型文件类型内存类型接口类型其它类型其中MergeTree系列引擎性能强大、使用场景广,也只有MergeTree系列引擎才支持主键索引、数据分区、数据副本和数据采样这些特性MergeTree。

qq_51384368的博客 2808

使用 Simulink + Simscape Electrical 对锂电池储能系统的充放电管理策略进行建模与仿真

摘要:本文详细介绍了基于Simulink的锂电池储能系统充放电管理策略建模与仿真方法。重点阐述了系统结构设计、建模过程(包括锂电池模型、充放电控制器、热管理系统等模块搭建)以及仿真设置。通过分析荷电状态管理、温度控制和功率限制等核心要素,展示了如何实现安全高效的充放电策略。仿真结果可验证系统性能,为优化管理策略提供依据。该方法为新能源存储和智能电网应用提供了实用的仿真分析工具。

amy_mhd的博客 159

YOLOv8改进 | 卷积模块 | 用DWConv卷积替换Conv【轻量化网络】

YOLOv8改进,yolov8,yolov8创新,yolov8涨点

kay_545 7159
上一篇: 阿里云3D架构图绘制工具寻找分析结果
下一篇: MySQL数据库自动备份脚本
dkgee
博客等级 码龄14年 43粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值