【比较mybatis、lazy、sqltoy、mybatis-flex、easy-query操作数据】操作批量新增、分页查询(三)

news2024/11/24 11:54:10

orm框架使用性能比较

比较mybatis、lazy、sqltoy、mybatis-flex、easy-query操作数据
环境:
idea 
jdk17
spring boot 3.0.7
mysql 8.0

测试条件常规对象

orm 框架是否支持xml是否支持 Lambda对比版本
mybatis☑️☑️3.5.4
sqltoy☑️☑️5.2.98
lazy✖️☑️1.2.4-JDK17-SNAPSHOT
mybatis-flex☑️☑️1.8.0
easy-query✖️☑️1.10.31

数据库表(含有唯一性索引s_u)

CREATE TABLE `sys_user`
(
    `column_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '额外字段',
    `create_time` datetime                                DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
    `id`          bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
    `is_deleted`  tinyint(1) DEFAULT NULL COMMENT 'null',
    `password`    varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '密码',
    `scope`       varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'null',
    `status`      tinyint(1) DEFAULT NULL COMMENT '状态',
    `update_time` datetime                                DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `username`    varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户名',
    PRIMARY KEY (`id`) USING BTREE,
    UNIQUE KEY `s_u` (`scope`,`username`)
) ENGINE=InnoDB AUTO_INCREMENT=9223371632070323791 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

比较方法:增加、修改、删除、分页查询(当前项目暂时只比较批量新增和分页)

项目设计
  • 声明 ORMRepository 接口提供对应增删改查方法
    在这里插入图片描述

  • 声明 ORMComparisonRepository接口 继承 ORMRepository 下游由不同ORM实现

  • 声明 SysUserRepository 接口 继承 ORMRepository 用于循环调用不同orm实现方法执行方法测试产生测试结果

  • 声明抽象类 SysUserRepositoryAbstractRecord 继承 ORMComparisonRepository 并且提供对应的框架执行结果存储
    在这里插入图片描述

  • 不同ORM框架mybatis、sqltoy、Lazy、easy-query 创建 ORMComparisonRepository 的实现

在这里插入图片描述

  • 不同 ORM 操作数据的实现在
    在这里插入图片描述

测试条件 批量插入数据 10、100、1000、10000、100000 ,分页查询数据 10、100、1000、10000、100000

项目启动后使用浏览器打开 http://localhost:1003/sys/user/run-compare

测试条件(细节比较) 批量插入数据 1~10000,分页查询数据 1~10000

项目启动后使用浏览器打开 http://localhost:1003/sys/user/run-particulars-compare

测试执行过程

清空需要插入表中所有数据
通过三种ORM框架进行数据批量新增、而后进行分页查询,记录消耗时间,输出md文档

查看结果曲线图

测试结果(结果只提供参考)

MYBATIS_FLEX(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:3毫秒11毫秒61毫秒633毫秒6985毫秒
MYBATIS(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:6毫秒8毫秒59毫秒733毫秒7136毫秒
LAZY(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:8毫秒9毫秒39毫秒385毫秒3987毫秒
EASY_QUERY(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:31毫秒57毫秒311毫秒1956毫秒20898毫秒
SQLTOY(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:8毫秒26毫秒183毫秒1610毫秒18832毫秒
MYBATIS_FLEX(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:10毫秒19毫秒30毫秒100毫秒668毫秒
MYBATIS(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:1231毫秒888毫秒1114毫秒819毫秒838毫秒
LAZY(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:8毫秒7毫秒17毫秒196毫秒675毫秒
EASY_QUERY(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:15毫秒5毫秒18毫秒96毫秒638毫秒
SQLTOY(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:36毫秒35毫秒37毫秒86毫秒229毫秒
写在最后
细节数据对比(一万以内基本相差不大)

在这里插入图片描述

在这里插入图片描述

批量保存:
  • 一万条数据以内 性能由高到低 mybatis-flex 、mybatis、lazy 性能趋于一致 sqltoy、easy-query 耗时出现明显起伏
  • 十万数据时,处理时间由快到慢依次是: lazy、mybatis、mybatis-flex、easy-query、sqltoy
分页查询:
  • 一万条数据以内 性能由高到低 lazy、mybatis-flex 、sqltoy、easy-query、mybatis
  • 十万数据时,处理时间由快到慢依次是: sqltoy、lazy、mybatis-flex、easy-query、mybatis

快速数据对比

在这里插入图片描述

在这里插入图片描述

当前项目地址
lazy-orm地址
mybatis地址
sqltoy地址
mybatis-flex地址
easy-query地址

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

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

相关文章

CodeFlying 和 aixcoder两大免费软开平台,孰强孰弱?

今天为大家带来码上飞CodeFlying和aixcoder两款免费的软件开发平台效果的测评 一、产品介绍 首先简单介绍一下这两个平台 码上飞CodeFlying:码上飞 CodeFlying | AI 智能软件开发平台! 是一款革命性的软件开发平台,它通过将软件工程和大模…

分库分表如何管理不同实例中几万张分片表?

在进行分库分表设计时,确认好了数据节点数量和分片策略以后,接下来要做的就是管理大量的分片表。实际实施过程中可能存在上百个分片数据库实例,每个实例中都可能有成千上万个分片表,如果仅依靠人力来完成这些任务显然是不现实的。…

spring自定义事件监听器

1. 创建自定义事件 import org.springframework.context.ApplicationEvent; import java.util.List;public class CollectionCreateEvent extends ApplicationEvent {private List<String> fileList;public CollectionCreateEvent(Object source,List<String> file…

【CSP试题回顾】201312-2-ISBN号码

CSP-201312-2-ISBN号码 解题思路 输入ISBN码&#xff1a;从用户接收一个ISBN字符串。 初始化变量&#xff1a;创建一个向量verifyArray来存储ISBN的前9位数字&#xff0c;和两个整数identificationCode和checkSum分别用于存储ISBN的校验位和计算出的校验和。 处理ISBN字符串…

道路积水监测站——确保道路畅通和行车安全

TH-JS1道路积水监测站是一种专门用于监测城市道路积水情况的设备&#xff0c;旨在保障城市道路安全和防止水患对交通造成的不利影响。这些监测站通过实时检测和记录道路积水数据&#xff0c;为城市管理部门提供重要信息&#xff0c;以便及时采取应对措施&#xff0c;确保道路畅…

【CSP试题回顾】201409-2-画图

CSP-201409-2-画图 解题思路 定义picture的二维数组&#xff0c;用于记录每个单元是否被涂色。数组的大小被设置为105x105&#xff0c;这是为了确保能够覆盖题目中可能出现的所有坐标。 输入变量n&#xff0c;表示将要绘制的矩形数量。 对于每个矩形&#xff0c;读取其左下角…

Ruoyi框架上传文件

axios资料&#xff1a;axios中文文档|axios中文网 | axios axiosjson 默认情况下&#xff0c;axios将JavaScript对象序列化为JSON。 submit(data) {if (data && this.definitionId) {// 启动流程并将表单数据加入流程变量startProcess(this.definitionId, JSON.string…

MySQL--优化(SQL语句执行慢,如何分析)

MySQL–优化&#xff08;SQL语句执行慢&#xff0c;如何分析&#xff09; 定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 一、如何分析 聚合查询&#xff1a; 对于涉及大量数据的聚合操作&#xff0c;如果可能的…

【GIS技术】GIS在地质灾害易损性评价、危险性评估与灾后重建中的实践技术应用

地质灾害是指全球地壳自然地质演化过程中&#xff0c;由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下&#xff0c;地质灾害在世界范围内频繁发生。我国除滑坡灾害外&#xff0c;还包括崩塌、泥石流、地面沉…

python并发 map函数的妙用

1.map是什么&#xff1f; map函数是Python中的一个内置函数&#xff0c;用于将一个函数应用到一个或多个可迭代对象的每个元素上&#xff0c;生成一个新的可迭代对象。它的一般形式是&#xff1a; map(function, iterable1, iterable2, ...)其中&#xff0c;function是一个函…

linux安装mysql5.7

linux安装mysql5.7 一、下载mysql5.7二、解压包介绍三、上传包到linux四、卸载mariadb五、安装mysql六、修改权限七、启动mysql八、使用过navicat创作不易&#xff0c;笔记不易&#xff0c;如觉不错&#xff0c;请三连&#xff0c;谢谢~~ 一、下载mysql5.7 去mysql官方下载&am…

Python解释器及PyCharm安装教程

PyCharm官方下载地址☞https://www.jetbrains.com/pycharm/download/?sectionwindows Python解释器官方下载地址☞ https://www.python.org/downloads/windows/

pytorch续写tensorboard

模型训练到一半有 bug 停了&#xff0c;可以 resume 继续炼&#xff0c;本篇给出 pytorch 在 resume 训练时续写 tensorboard 的简例&#xff0c;参考 [1-3]&#xff0c;只要保证 writer 接收的 global step 是连着的就行。 Code import numpy as np from torch.utils.tensor…

UE5 UE4 关闭/开启引擎开启插件(UE4 MDL资源删除)

问题&#xff1a; 最近遇到了个情况&#xff0c;我安装在UE4.26中的一个NVIDA Omniverse插件&#xff0c;这个插件导致每次生成新的项目时&#xff0c;都会自动开启并在工程中生成一个MDL的文件夹和资源&#xff0c;比较烦。 而且是空工程&#xff0c;也依然自动生成。删除、…

石头里的传奇故事—沉积岩

“ 沉积岩者&#xff0c;地质历史之积淀者也。” 野外发现层状延伸的岩石出露&#xff0c;发现的岩石呈现灰白色&#xff0c;主要矿物为磨圆度好的石英颗粒&#xff0c;石英粒径为1-2mm。岩石质地坚硬。石英颗粒间填充物黏土物质&#xff0c;滴加盐酸未见气泡&#xff0c;斜层…

pytest多重断言插件-pytest-assume

最近准备废弃之前用metersphere做的接口自动化&#xff0c;转战pytest了&#xff0c;先来分享下最近接触到的一个插件&#xff1a;pytest-assume。 在使用这个插件之前&#xff0c;如果一个用例里面有多个断言的话&#xff0c;前面的断言失败了&#xff0c;就不会去执行后面的断…

黑马瑞吉外卖练习笔记

day2 员工管理 完善登录 问题&#xff1a;用户不登录&#xff0c;直接访问系统首页&#xff0c;照样可以正常访问。我们希望&#xff0c;只有登录成功后才可以访问系统中的页面&#xff0c;如果没有登录则跳转到登录页面 怎么实现&#xff1f; 用过滤器或拦截器&#xff0c;在…

3d模型合并后一片漆黑是什么原因,怎么解决---模大狮模型网

当合并多个3D模型后&#xff0c;发现整个合并后的模型显示为一片漆黑通常是由以下几个可能的原因导致的&#xff1a; 材质设置问题&#xff1a;合并后的模型可能存在材质设置错误&#xff0c;导致模型无法正确显示。检查每个模型的材质属性&#xff0c;确保其正确设置&#xff…

仿生蝴蝶制作——前期材料准备

1.扑翼机控制板 PCB免费&#xff0c;元器件大概50元 2.舵机1906B两个GDW DS1906AB 3.2KG扭力金属齿滑翔机扑翼固定翼8g9g高速数字舵机 3.风筝布p31n追风者风筝544软伞布 仿生蝴蝶P31N DIY面料 210格子布 硅胶伞布 4.遥控器富斯i6X&#xff0c;接收机A8S。 5.碳…

【好书推荐-第七期】《RTC程序设计:实时音视频权威指南》(音视频开发必看!)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;洲与AI。 &#x1f388; 本文专栏&#xff1a;本文收录…