pgsql/mysql/clickhouse性能对比

目前公司使用的关系型数据库版本较老,有计划对关系型数据库进行一次升级。有两个方案,一是将现在的mysql5.7升级到8.0,二是将数据库替换成pgsql15,所以对这两个库的查询写入和资源损耗进行一次对比。

前置准备

服务器

两台配置相同的服务器。配置参数如下:

CPU:

内存:32GB

磁盘:

网络:千兆网络

数据库版本

MySQL 8

PostgreSQL 15

程序

使用 springboot + mybatis-plus 框架进行数据插入和查询。部分代码如下:

数据插入:

     @Testpublic void test01() {String importer = "FEHMİ EROĞLU DIŞ TİCARET ANONİM ŞİRKETİ";String exporter = "MUNDIAL IMPORTAÇAO E EXPORTAÇAO EIRELI";String hsCode = "081310000000";String countryOfDestination = "brazil";String countryOfOrigin = "turkey";double weight = 40000.0000;double sumOfUSD = 263000.0000;double weightUnitPrice = 6.58;double qty = 0.0000;String qtyUnit = "KG";List<Long> group = new ArrayList<>();for (long i = 0; i < 1000000; i += 1000) {group.add(i);}group.stream().parallel().forEach(num -> {long point = num + 1000;List<Analysis> list = new ArrayList<>();for (long i = num; i < point; i++) {Analysis analysis = Analysis.builder().date(new Date()).importer(importer + (num + i)).exporter(exporter + (num + i)).hsCode(hsCode + (num + i)).countryOfDestination(countryOfDestination + (num + i)).countryOfOrigin(countryOfOrigin + (num + i)).weight(BigDecimal.valueOf(weight + (num + i))).sumOfUSD(BigDecimal.valueOf(sumOfUSD + (num + i))).weightUnitPrice(BigDecimal.valueOf(weightUnitPrice + (num + i))).qty(BigDecimal.valueOf(qty + (num + i))).qtyUnit(qtyUnit + (num + i)).build();list.add(analysis);}analysisService.saveBatch(list);});System.out.println(analysisService.count());}

数据查询:

     
@Testpublic void test002() {Page<Analysis> page = new Page<>(1, 1000000);Page<Analysis> response = analysisService.page(page);}

性能对比

数据插入

上述程序均运行在同一台个人电脑(性能较差)上,共计插入数据 1000000 条。执行耗时如下:

MySQLPostgreSQL
第一次5m22s1m21s
第二次5m37s1m15s
第三次5m20s1m18s

结论:PostgreSQL插入性能约为MySQL的4倍

数据查询

上述程序均运行在同一台个人电脑(性能较差)上,执行耗时如下:

MySQLPostgreSQL
100w查10w2s103ms2s338ms
100w查20w3s160ms3s313ms
100w查30w3s872ms3s881ms
100w查40w5s673ms4s588ms
100w查50w6s534ms5s697ms
100w查100w14s685ms8s33ms
200w查10w2s83ms2s621ms
200w查20w3s228ms3s166ms
200w查30w4s265ms3s760ms
200w查40w5s921ms4s670ms
200w查50w6s682ms5s312ms
200w查100w13s156ms8s697ms
200w查200w35s380ms15s593ms
300w查10w2s101ms2s720ms
300w查50w6s954ms5s761ms
300w查100w12s479ms8s854ms
300w查200w34s361ms16s727ms
300w查300wOOM23s128ms

服务器上查询对比mysql/pgsql/clickhouse性能对比

mysql和pgsql单表数据500W,clickhouse单表数据3000W,单条的数据长度相同,clickhouse服务器配置略高于mysql和pgsql

mysql pgsqlclickhouse
100万3.9s3.4s1.1s
300万11.1s8.7s2.2s
500万19.7s15.7s4.3s
1千万9.2s
3千万21s

结论:大数据量单表查询场景,mysql、pgsql两个数据库的查询性能相较于clickhouse差别较大,与clickhouse不是一个级别的。

结论

单表50W以下mysql与pgsql相差较小,在10W级别甚至要优于pgsql。

超过50W数据量,mysql性能远不及pgsql。

clickhouse查询性能确实强悍,百万以下数据几乎都能在1S以内查出结果。

clickhouse对服务器配置要求较高,特别是cpu配置要求较高。 

最终决定将业务系统数据库替换成pg15。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cilium 1.11:服务网格的未来已来

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Linux Ubuntu命令行快速配置C++开发环境

本文介绍在Linux操作系统的Ubuntu版本中&#xff0c;基于命令行&#xff0c;快速配置C 编辑、编译、运行的代码开发环境的简便方法。 在之前的文章Linux操作系统Ubuntu 22.04配置Visual Studio Code与C代码开发环境的方法(https://blog.csdn.net/zhebushibiaoshifu/article/det…

星际争霸之小霸王之小蜜蜂(十三)--接着奏乐接着舞

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十二&#xff09;--猫有九条命 星际争霸之小霸王之小蜜蜂&#xff08;十一&#xff09;--杀杀杀 星际争霸之小霸王之小蜜蜂&#xff08;十&#xff09;--鼠道 星际争霸之小霸王之小蜜蜂&#xff08;九&#xff09;--狂鼠之…

什么是集成测试?集成测试方法有哪些?

1、基本概念&#xff1a; 将软件集成起来后进行测试。集成测试又叫子系统测试、组装测试、部件测试等。集成测试主要是针对软件高层设计进行测试&#xff0c;一般来说是以模块和子系统为单位进行测试。 2、集成测试包含的层次&#xff1a; 1. 模块内的集成&#xff0c;主要是…

Linux sed

1.sed介绍 sed:Stream Editor&#xff0c;流编辑器、行编辑器、逐行编辑 sed将每行内容读入到“内存”中&#xff0c;在内存中进行处理&#xff0c;将结果返回给屏幕&#xff0c;此段内存空间称为模式空间。 sed默认不编辑原文件&#xff0c;仅对模式空间的数据进行处理&…

OA 电子审批流程是什么?

公司中&#xff0c;最最最常见也是最最最多的就是——各种审批。 我当年第一次实习&#xff0c;在一家国企的行政部门&#xff0c;我们部门领导那个时候最主要的工作就是“打通流程”&#xff0c;咱也不知道他在打通什么流程&#xff0c;反正这个很重要就是了。 结果&#xf…

CSS动效合集之实现气泡发散动画

前言 &#x1f44f;CSS动效合集之实现气泡发散动画&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义一个数组bubbles&#xff0c;用来存储气泡列表的基本新&#xff0c;w表示宽高&#xff0c;x表示绝对定位…

【Python基础】P01S01 变量与字符串

P01S01 变量与字符串 变量变量的命名规则 字符串字符串的表达方法字符串的基本操作 数整数与浮点数数中下划线常量 注释 变量 变量的命名规则 变量名只能包含字母、数字和下划线&#xff1b; 变量名能以字母或下划线开头&#xff0c;但是不能以数字开头&#xff1b; 变量名不能…

130. 被围绕的区域

130. 被围绕的区域 题目-中等难度示例1. 新建boardbfs2. 哈希bfs 题目-中等难度 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 ‘X’ 和 ‘O’ &#xff0c;找到所有被 ‘X’ 围绕的区域&#xff0c;并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例 示例 1&#x…

6.SpringEL与List,Map

SpringEL与List,Map 文章目录 SpringEL与List,Map介绍Spring EL以注解的形式Spring EL以XML的形式 介绍 使用SpEL与 Map 和 List 的工作方式与Java是完全一样的 //get map whete key MapA Value("#{testBean.map[MapA]}") private String mapA;//get first value …

浅谈C++|类的继承篇

引子&#xff1a; 继承是面向对象三大特性之一、有些类与类之间存在特殊的关系&#xff0c;例如下图中: 我们发现&#xff0c;定义这些类时&#xff0c;下级别的成员除了拥有上一级的共性&#xff0c;还有自己的特性。 这个时候我们就可以考虑利用继承的技术&#xff0c;减少…

2023全新TwoNav开源网址导航系统源码 | 去授权版

2023全新TwoNav开源网址导航系统源码 已过授权 所有功能可用 测试环境&#xff1a;NginxPHP7.4MySQL5.6 一款开源的书签导航管理程序&#xff0c;界面简洁&#xff0c;安装简单&#xff0c;使用方便&#xff0c;基础功能免费。 TwoNav可帮助你将浏览器书签集中式管理&#…

线程池启动线程 submit () 和 execute () 方法有什么不同?

ThreadPoolExecutor类是Java中用于创建和管理线程池的类,它提供了多个方法来提交任务给线程池,其中包括submit()和execute()方法。这两种方法有以下不同: 返回值:submit()方法返回一个Future对象,可以使用这个对象来跟踪任务的执行状态并获取任务的结果(如果有的话)。Fu…

JWT基础

概念 JSON Web Token本质上就是一串字符串&#xff0c;一串包含了很多信息的字符串令牌拥有三个部分头部-包含加密算法和令牌类型{"alg":"算法名称","type":"JWT"}负载-包含数据和信息-七个官方默认-也可以自己定义内容{iss&#xff…

ubuntu+.net6+docker 应用部署教程

先期工作 1、本地首先安装 Docker Desktop 2、本地装linux in windows 3、生成镜像 后期工作 1、云服务器部署 生成镜像方法 1、生成Dockerfile配置文件 开发工具visual studio 2022 如果项目已经存在&#xff0c;可以选中项目&#xff0c;右键点击->选择添加Docker…

基于Java的高校竞赛管理系统设计与实现(亮点:发起比赛、报名、审核、评委打分、获奖排名,可随意更换主题如蓝桥杯、ACM、王者荣耀、吃鸡等竞赛)

高校竞赛管理系统 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述4.2 系统角色 五、系统…

基于Matlab实现图像配准技术(附上源码+图像)

图像配准是数字图像处理中的重要技术之一&#xff0c;它的目标是将多幅图像进行准确的对齐&#xff0c;使得它们在空间上保持一致。图像配准在许多领域都有广泛的应用&#xff0c;如医学影像、遥感图像、计算机视觉等。本文将介绍如何使用Matlab实现图像配准技术&#xff0c;并…

Flink相关

墨滴社区 用 Flink 取代 Spark Streaming&#xff01;知乎实时数仓架构演进_天池技术圈-阿里云天池 关于flink实时数仓的实际问题_flink datastream 按天,小时写入hdfs_一个写湿的程序猿的博客-CSDN博客 基于 Flink Hudi 的实时数仓在 Shopee 的实践 - 墨天轮

6.3 字符数组

思维导图&#xff1a; 前言&#xff1a; 主要内容&#xff1a; 前言内容整理 字符型数据和存储 字符型数据是依据字符的ASCII代码存储在内存单元中&#xff0c;通常占用一个字节的空间。ASCII代码可以被认为是整数&#xff0c;因此在C99标准中&#xff0c;字符类型被归类为整…

nodejs中的错误类型及捕获处理

nodejs中的错误类型及捕获处理 在 node 中&#xff0c;提供了 error 模块&#xff0c;并且内置了标准的 JavaScript 错误&#xff0c;本文将介绍在node中错误类型以及如何捕获。 错误类型 js错误 标准的js错误&#xff0c;跟在浏览器中运行js时提示的错误类型一样 RangeEr…