当前位置: 首页 > news >正文

Clickhouse数据库部署、Python3压测实践

Clickhouse数据库部署、Python3压测实践

一、Clickhouse数据库部署
  • 版本:yandex/clickhouse-server:latest

  • 部署方式:docker

  • 内容

    version: "3"services:clickhouse:image: yandex/clickhouse-server:latestcontainer_name: clickhouse    ports:- "8123:8123"- "9000:9000"- "9009:9009"- "9004:9004"volumes:- ./data/config:/var/lib/clickhouseulimits:nproc: 65535nofile:soft: 262144hard: 262144healthcheck:test: ["CMD", "wget", "--spider", "-q", "localhost:8123/ping"]interval: 30stimeout: 5sretries: 3deploy:resources:limits:cpus: '4'memory: 4096Mreservations:memory: 4096M
    
  • 建表语句

    CREATE TABLE test_table (id int,feild1 String, feild2 String, feild3 String, feild4 String, feild5 String, feild6 String, feild7 String, feild8 String, feild9 String, feild10 String, feild11 String, feild12 String, feild13 String, feild14 String, feild15 String, feild16 String, feild17 String, feild18 String, feild19 String, feild20 String) ENGINE = MergeTree:
    
二、Python3插入数据压测
  • 关键库:clickhouse_driver、 concurrent.futures

  • 代码:

    import random
    import time
    from clickhouse_driver import Client
    from concurrent.futures import ThreadPoolExecutor, as_completedclient = Client(host='ip')# 采用多个连接,避免单个连接被打死
    clients = [Client(host='ip'),Client(host='ip'),Client(host='ip'),Client(host='ip')
    ]# 采用批量插入,经过测试,单条并发插入支持差,每秒只能执行2-5次insert
    def task(i):sql = "INSERT INTO ck_table (id, feild1, feild2,feild3,feild4,feild5,feild6,feild7,feild8,feild9,feild10,feild11,feild12,feild13,feild14,feild15,feild16,feild17,feild18,feild19,feild20) VALUES"values = []for i in range(1000):values.append((random.randint(1,10000000),"feild1-"+str((random.randint(1,10000000))),"feild2-"+str(i),"feild3-"+str(i), "feild4-"+str(i), "feild5-"+str(i), "feild6-"+str(i), "feild7-"+str(i), "feild8-"+str(i), "feild9-"+str(i), "feild10-"+str(i), "feild11-"+str(i), "feild12-"+str(i), "feild13-"+str(i), "feild14-"+str(i), "feild15-"+str(i), "feild16-"+str(i), "feild17-"+str(i), "feild18-"+str(i), "feild19-"+str(i), "feild20-"+str(i)))clid = random.randint(1, len(clients)-1)clients[clid].execute(sql, values)return '第',clid, "插入",i, '条数据成功'if __name__ == '__main__':print ("程序开始运行")exec = ThreadPoolExecutor(max_workers=2)#ress = []start_time = time.perf_counter()for j in range(4000000):  # 总共需要执行的次数res = exec.submit(task,j)#ress.append(res)# for i in as_completed(ress):#     print("执行状态",i.result())print("执行耗时", time.perf_counter()-start_time,"s")
    
三、Python3查询数据测试
  • 关键库:clickhouse_driver、 concurrent.futures

  • 代码

    import time
    from concurrent.futures import ThreadPoolExecutor, as_completed
    from clickhouse_driver import Clientclient = Client(host='10.10.16.110')query_sql = """select * from ck_table where feild2='feild2-1009' """def new_task(i):count_sql = """ select count(*) from ck_table"""time.sleep(1)return "执行第",i,"个任务",client.execute(count_sql)if __name__ == '__main__':print ("程序开始运行")thd_ques = []exec = ThreadPoolExecutor(max_workers=1)ress = []start_time = time.perf_counter()for j in range(1000):res = exec.submit(new_task,j)ress.append(res)for i in as_completed(ress):print("执行状态",i.result())print("执行耗时", time.perf_counter()-start_time,"s")
四、测试结论

clickhouse:21个字段表插入-查询测试, CPU200w数据以内 >100,峰值:133.6, 均值: 约110

  • 1、不支持频繁插入(一般1-2次/s),否则会断联等报错,只能批插入(脚本使用2协程每次1000条没有报错,2个协程或者以上会出现断联等报错)

  • 2、不支持频发查询,QPS官方建议100以内,否则CPU占用会很高,拉高服务器负载

  • 3、查询效率:

    • 一个条件where查询(Memery):60W 0.33s

    • 5个条件where查询(Memery):80W 0.57s

    • 5个条件where查询(Memery):100W 0.54s

    • 5个条件where查询(Memery):112W 0.56s

    • 5个条件where查询(Memery):200W 0.565s

    • 5个条件where查询(Memery):500W 1.2s(停止插入的情况下)

    • 5个条件where查询(Memery):560W 1.97s(停止插入的情况下)

    • 5个条件where查询(TinyLog):7000W条 1分47秒

    • 2个条件where查询(TinyLog):1亿零460万条 89s

    • 5个条件where查询(TinyLog):1亿零460万条 84s

    • 10个条件where查询(TinyLog):1亿零460万条 87s

备注 450w条数据后,数据插入线程和查询线程只能存在一个,慢查询的内存消耗很高,16G内存不够用。5个条件where查询还能执行,在1-2s

  • (1)500w数据量服务器情况:(COPU均值在320左右,16G内存剩余在500-800M之间,停止写入/查询后,CPU恢复正常水平,内存剩余在800M左右)

    total used free shared buff/cache available

    15G 5.9G 519M 9.2M 9.1G 9.2G

    %CPU %MEM

    429.5 26.0

  • (2)1亿数据量服务器情况(1T磁盘消耗共38%,预计消耗6% )

    total used free shared buff/cache available

    15G 2.7G 181M 9.2M 12G 12G

    %CPU %MEM

    103.7 3.6

总结:

  • 1、不支持并发单条频繁插入,否则会报错,断联等造成数据丢失
  • 2、不支持高并发查询,官方建议QPS<= 100,否则会增加服务器负载,CPU,内存等消耗过高
  • 3、对服务器要求高,亿级CPU一般建议16核心以上,内存64G以上
  • 4、优点是查询快,批量插入效率高,建议低频大批量插入

相关文章:

Clickhouse数据库部署、Python3压测实践

Clickhouse数据库部署、Python3压测实践 一、Clickhouse数据库部署 版本&#xff1a;yandex/clickhouse-server:latest 部署方式&#xff1a;docker 内容 version: "3"services:clickhouse:image: yandex/clickhouse-server:latestcontainer_name: clickhouse …...

探索控制领域:从电视遥控器到自动驾驶【基础概念理解、应用实例】

当谈到控制学和控制系统时&#xff0c;你可能会联想到电视遥控器、自动驾驶汽车、飞机自动驾驶系统以及许多其他自动化系统。但控制学是一个更广泛的学科&#xff0c;它涵盖了各种领域&#xff0c;从工程到生物学&#xff0c;从经济学到环境科学。让我们深入了解控制学的基本概…...

在R中安装CmdStanR的步骤-R4.3.1-CmdStanR-0.6.1.900

报错未安装cmdstanr 安装包官网详细介绍&#xff1a; R Interface to CmdStan • cmdstanrhttps://mc-stan.org/cmdstanr/ 以下是在R中安装CmdStanR的步骤&#xff1a; 1. 首先&#xff0c;需要下载和安装C编译器 例如gcc。如果您已经安装了C编译器&#xff0c;则可以跳过此…...

安信可小安派AiPi 代码下载

安信可小安派AiPi 代码下载笔记记录 AiPi 代码下载&#xff08;直接使用命令行操作&#xff0c;仅需要Type-C接口线即可&#xff09; 在完成环境搭建&#xff0c;和代码编写前提下&#xff0c;使用Type-C接口线下载代码&#xff0c;当然可以自己使用usb-ttl串口线下载程序&am…...

程序化交易(二)level2行情数据源接入

WEBSOCKET行情接入 行情在线测试 websocket行情接口 交易在线测试 在线交易接口 官方文档地址 行情交易接口用户文档 分配服务器 注意&#xff1a;每次分配的服务器地址会发生变化&#xff0c;连接服务前&#xff0c;请务必调用该接口获取最新的服务器地址。 获取服务器:…...

4.6 static修饰符

static是一个修饰符&#xff0c;用于修饰类的成员属性和成员方法&#xff0c;还可以编写static代码块来优化程序性能。 1. static修饰属性 在Java程序中使用static修饰属性&#xff0c;则该属性称为静态属性&#xff08;也称全局属性&#xff09;&#xff0c;静态属性可以使用…...

C++头文件定义变量

1.在进行头文件学习时&#xff0c;犯了不少错误&#xff0c;记录一下&#xff0c;先贴代码. .h头文件 #ifndef MY_FIRST_H_ #define MY_FIRST_H_struct Person {std::string name;int age;char8_t gender; };//需要使用extern来声明,否则在多个文件中引入该头文件会出现重定义…...

[蓝桥杯-610]分数

题面 解答 这一题如果不知道数论结论的话&#xff0c;做这个题会有两种天壤之别的体验 此题包含以下两个数论知识 1. 2^02^12^2...2^(n-1)2^n-1 2. 较大的数如果比较小的数的两倍大1或者小1&#xff0c;则两者互质 所以答案就是2^n-1/2^(n-1) 标程1 我的初次解答 #in…...

Vue指令大全:深入探索Vue提供的强大指令功能

目录 v-bind指令 v-on指令 v-if和v-show指令 v-for指令 自定义指令 其他常用指令 总结 Vue.js是一款流行的JavaScript框架&#xff0c;具备丰富的指令系统。Vue指令允许开发者直接在模板中添加特殊属性&#xff0c;以实现DOM操作、事件绑定、样式控制等功能。在本文中&a…...

x210项目重新回顾之十七升级到linux4.19.114 +buildroot2018再讨论

代码参考https://github.com/colourfate/x210_bsp/ 他的是linux_4.10(dtb为 s5pv210-x210..dtb)我打算用linux4.19.114(dtb为 s5pv210-smdkv210.dtb) &#xff0c;所以修改build.sh ------------------------------------------------------------------------------ 5 M…...

shell_56.Linux永久重定向

永久重定向 1.脚本中有大量数据需要重定向&#xff0c;那么逐条重定向所有的 echo 语句会很烦琐。 这时可以用 exec 命令&#xff0c;它会告诉 shell 在脚本执行期间重定向某个特定文件描述符&#xff1a; $ cat test10 #!/bin/bash # redirecting all output to a file ex…...

CN考研真题知识点二轮归纳(1)

本轮开始更新真题中涉及过的知识点&#xff0c;总共不到20年的真题&#xff0c;大致会出5-10期&#xff0c;尽可能详细的讲解并罗列不重复的知识点~ 目录 1.三类IP地址网络号的取值范围 2.Socket的内容 3.邮件系统中向服务器获取邮件所用到的协议 4.RIP 5.DNS 6.CSMA/CD…...

hadoop使用简介

git clone hadoop源码地址&#xff1a;https://gitee.com/CHNnoodle/hadoop.git git clone错误&#xff1a; Filename too long错误&#xff0c;使用git config --global core.longpaths true git clone https://gitee.com/CHNnoodle/hadoop.git -b rel/release-3.2.2 拉取指定…...

WebSocketClient objects are not reuseable

好久没写东西&#xff0c;夜深了来冒个泡&#xff0c;先啰嗦几句。今天测试 Android App 的时候&#xff0c;发现推到后台不到一分钟再唤醒直接闪退&#xff0c;初次以为网络和GPS信号弱导致的&#xff08;当时是在地铁上进行的测试&#xff09;&#xff0c;之后在网络与GPS 信…...

分享54个ASP.NET源码总有一个是你想要的

分享54个ASP.NET源码总有一个是你想要的 链接&#xff1a;https://pan.baidu.com/s/1khPzxtOFP0wUHpg7TBDitg?pwd8888 提取码&#xff1a;8888 项目名称 (ASP.Net)基于三层架构的企业信息管理系统 asp .net mvc编写的房产管理系统 asp.net core mvc 病人管理后台 asp.ne…...

闭包通俗解释,Demo(Go Java Python)

闭包的概念 想象一下&#xff0c;你有一个包裹着变量的函数&#xff0c;就像是一个封闭的包裹。这个包裹里有一个变量&#xff0c;而这个函数&#xff08;或包裹&#xff09;本身就是一个完整的单元。当你把这个函数传递给其他地方&#xff0c;就像是把这个包裹传递出去。 这…...

Linux部署Redis Cluster高可用集群(附带集群节点添加删除以及槽位分配操作详解)

目录 一、前言二、下载安装Redis2.1、选择需要安装的Redis版本2.2、下载并解压Redis2.3、编译安装Redis 三、部署Redis Cluster高可用集群3.1、准备配置文件3.2、启动Redis服务3.3、创建Redis集群3.4、查看集群关系3.5、连接集群Redis进行数据读写以及重定向测试3.6、故障转移和…...

【PWN · heap | Off-By-One】Asis CTF 2016 b00ks

萌新进度太慢了&#xff0c;才真正开始heap&#xff0c;还是从简单的Off-By-One开始吧 前言 步入堆的学习。堆的知识复杂而多&#xff0c;于是想着由wiki从简单部分逐个啃。 b00ks是经典的堆上off-by-one漏洞题目。刚开始看很懵&#xff08;因为确实连堆的管理机制都没有完全…...

C++STL---Vector、List所要掌握的基本知识

绪论​ 拼着一切代价&#xff0c;奔你的前程。 ——巴尔扎克&#xff1b;本章主要围绕vector和list的使用&#xff0c;以及容器底层迭代器失效问题&#xff0c;同时会有对原码的分析和模拟实现其底层类函数。​​​​话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑…...

使用FastAPI部署Ultralytics YOLOv5模型

YOLO是You Only Look Once(你只看一次)的缩写&#xff0c;它具有识别图像中的物体的非凡能力&#xff0c;在日常应用中会经常被使用。所以在本文中&#xff0c;我们将介绍如何使用FastAPI的集成YOLOv5&#xff0c;这样我们可以将YOLOv5做为API对外提供服务。 Python有几个web框…...

显卡怎么越来越贵?聊聊GPU算力背后那些事

老实说&#xff0c;我也难以确切记起&#xff0c;究竟是自哪一日起始&#xff0c;电脑显卡的价格便如同乘坐了火箭那般。 可能就连楼下从事修电脑工作的陈师傅都未曾想到&#xff0c;在过去几年的时候&#xff0c;还能够运用“甜品卡”这个词汇去夸赞一张显卡在性价比方面较高&…...

海思HS-Ultra 7L2D边缘AI工控机:99 TOPS算力如何赋能工业视觉与医疗?

1. 项目概述&#xff1a;当AI算力下沉到边缘&#xff0c;我们需要什么样的“工业大脑”&#xff1f;在工业自动化、机器视觉、智慧医疗这些领域摸爬滚打十几年&#xff0c;我亲眼见证了计算架构从集中式云端向边缘侧迁移的浪潮。早期&#xff0c;大家习惯于把海量的传感器数据、…...

如何用Akagi麻雀助手快速提升雀魂游戏水平:3个核心技巧

如何用Akagi麻雀助手快速提升雀魂游戏水平&#xff1a;3个核心技巧 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將&#xff0c;能夠使用自定義的AI模型實時分析對局並給出建議&#xff0c;內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amat…...

硬核教程:用Gemini境像站构建端到端自动化办公工作流,告别重复操作(国内免费镜像实测)

在日常办公中&#xff0c;大量的重复性操作——数据录入、日报生成、文件归档——占据了相当比例的时间。将这些任务串联成自动化工作流&#xff0c;能显著提升效率。目前国内用户无需特殊网络环境&#xff0c;通过聚合镜像站 RskAi&#xff08;ai.jingxiang.me&#xff09; 即…...

企业内训系统集成Taotoken实现多模型AI助教与可控的交互成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业内训系统集成Taotoken实现多模型AI助教与可控的交互成本 对于现代企业而言&#xff0c;构建一个高效、智能的内训系统是提升员…...

Docker Login 报错“unauthorized”怎么办?从排查到解决的完整指南

Docker登录报错"unauthorized"全解析&#xff1a;从根因定位到企业级解决方案 当你满心欢喜地敲下docker login准备拉取镜像时&#xff0c;终端突然跳出刺眼的红色错误提示——"unauthorized: authentication required"。这种场景对开发者而言绝不陌生&…...

MAXREFDES16 Fresno:工业物联网传感器节点的全栈开发实战

1. 项目概述&#xff1a;从一颗芯片到一个完整的工业物联网节点 如果你在工业自动化、楼宇控制或者环境监测领域工作&#xff0c;一定对“传感器节点”这个概念不陌生。它就像一个前线的侦察兵&#xff0c;负责采集温度、压力、流量、振动等物理世界的信号&#xff0c;然后通过…...

3步掌握Windows字体优化:Better ClearType Tuner完整使用指南

3步掌握Windows字体优化&#xff1a;Better ClearType Tuner完整使用指南 【免费下载链接】BetterClearTypeTuner A better way to configure ClearType font smoothing on Windows 10. 项目地址: https://gitcode.com/gh_mirrors/be/BetterClearTypeTuner 你是否曾经在…...

WeChatExporter:基于Node.js的iOS微信聊天记录解析与导出方案

WeChatExporter&#xff1a;基于Node.js的iOS微信聊天记录解析与导出方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在移动应用数据管理领域&#xff0c;iOS系统的沙…...

USB Cheat Sheet:从物理层到协议栈的终极解码指南

USB Cheat Sheet&#xff1a;从物理层到协议栈的终极解码指南 USB&#xff0c;这个我们每天都在使用的接口&#xff0c;背后隐藏着远超想象的复杂技术体系。从1996年USB 1.0的1.5Mbps&#xff0c;到如今USB4 Version 2.0的80Gbps&#xff0c;传输速率提升了超过五万倍。但更让人…...