【比較mybatis、lazy、sqltoy、mybatis-flex、easy-query操作數據】操作批量新增、分頁查詢(三)

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.pswp.cn/news/719091.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719091.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719091.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙實戰項目開發:【短信服務】

概述 本示例展示了電話服務中發送短信的功能。 樣例展示 涉及OpenHarmony技術特性 網絡通信 難度級別 中級 基礎信息 使用ohos.telephony.sms接口展示了電話服務中發送短信的功能。 效果預覽 新建聯系人首頁短信頁 使用說明: 首頁點擊創建聯系人&am…

每日一練:LeeCode-203. 移除鏈表元素 【鏈表+虛擬頭結點】

每日一練:LeeCode-203. 移除鏈表元素 【鏈表虛擬頭結點】 思路設置虛擬頭結點 本文是力扣 每日一練:LeeCode-203. 移除鏈表元素 【鏈表虛擬頭結點】 學習與理解過程,本文僅做學習之用,對本題感興趣的小伙伴可以出門左拐LeeCode-20…

自然語言處理(NLP)中NER如何從JSON數據中提取實體詞的有效信息

專欄集錦,大佬們可以收藏以備不時之需: Spring Cloud 專欄:http://t.csdnimg.cn/WDmJ9 Python 專欄:http://t.csdnimg.cn/hMwPR Redis 專欄:http://t.csdnimg.cn/Qq0Xc TensorFlow 專欄:http://t.csdni…

Nginx 和Tomcat比較

Nginx和Tomcat是兩種不同的技術,它們在應用場景、性能、動態處理能力等方面有所區別: 應用場景 Nginx通常用作靜態內容服務器或代理服務器,可以將外部請求轉發給其他應用服務器,如Tomcat、Django等。而Tomcat則主要用作應用服…

機器學習-面經(part3)

5. 正則化 5.0 手推L1,L2 5.1 什么是正則化,如何理解 定義: 在損失函數后加上一個正則化項(懲罰項),其實就是常說的結構風險最小化策略,即損失函數 加上正則化。一般模型越復雜,正則化值越大。 正則化項是用來對模型中某些參數進行約束,正則化的一般形式如下: 第一項是…

固件和內核驅動

驅動折騰小記 很多人更新了內核,但是自己的外設依然沒有驅動,是因為僅僅更新內核是不夠的,還需要更新固件。 什么是固件? 在許多設備能夠與操作系統通信之前,它們必須首先使用設備制造商提供的“固件”進行初始化。…

實施工程師常遇技術問題

文章目錄 一、對與一個項目,你認為項目的里程碑有哪幾個?二、Tomcat服務器與Resin服務器的區別2.1、開發商和許可證:2.2、部署和配置:2.3、功能和擴展性:2.4、社區和生態系統: 三、版本控制工具SVN與Git的區…

升級openssl

openssl版本一鍵升級(需要修改tar包名稱和路徑) --- - name: Install OpenSSLhosts: openssltasks:- name: Copy OpenSSL tar.gz to /tmpcopy:src: /root/shl/soft/openssl-1.1.1v.tar.gzdest: /tmp # remote_src: yes # 如果源文件在控制主機上…

吳恩達《機器學習》學習筆記

本筆記資料來源于 http://www.ai-start.com/ml2014/,該筆記來自于https://blog.csdn.net/dadapongi6/article/details/105668394,看了忘,忘了看,再看一遍。 時間統計:2024.2.29 5個番茄鐘,從week1開始&…

【PyTorch][chapter 19][李宏毅深度學習]【無監督學習][ GAN]【理論】

前言: 生成對抗網絡(Generative Adversarial Nets,GAN)是一種基于對抗學習的深度生成模型。 2014年,蒙特利爾博士 lan Goodfellow 發表了論文《Generative Adaversarial Networks》, 一經提出便成為了學術…

Python CGI編程

文章目錄 什么是CGICGI架構Web服務器支持及配置CGI程序示例CGI環境變量GET和POST方法GET方法POST方法區別注意事項 使用POST方法傳遞數據1. 創建HTML表單2. 編寫CGI腳本3. 配置服務器4. 提交表單5. 服務器處理請求注意事項 通過CGI程序傳遞checkbox數據創建HTML表單編寫CGI腳本…

二維碼門樓牌管理系統技術服務:門牌編設規則詳解

文章目錄 前言一、門牌編設規則解讀二、區間編號與分段編號策略三、多出入口建筑物的門牌編設 前言 隨著城市化的快速推進,門樓牌管理成為城市管理中不可或缺的一環。二維碼門樓牌管理系統的引入,不僅提升了管理的效率,也為市民提供了更為便…

波奇學Liunx:信號的產生,保存,處理

信號的產生,信號的保存,信號的處理 在操作系統中進程接受到信號會保存,產生 進程必須識別和能夠處理信號,處理信號是進程的內置功能 進程收到信號時不一定會立即執行,所以進程必然有一套識別,保存&#xff…

Leetcode 3066. Minimum Operations to Exceed Threshold Value II

Leetcode 3066. Minimum Operations to Exceed Threshold Value II 1. 解題思路2. 代碼實現 題目鏈接:Leetcode 3066. Minimum Operations to Exceed Threshold Value II 1. 解題思路 這一題的話只需要排序之后按照題目條件逐一進行執行直至滿足條件即可。 唯一…

Pytorch中,dim形象化的確切意義是什么?

在Pytorch中涉及張量的操作都會涉及“dim”的設置,雖然也理解個大差不差,但是偶爾還是有點犯迷糊,究其原因還是沒有形象化的理解。 首先,張量的維度排序是有固定順序的,0,1,2,.....…

(1)預處理

我們需要的文件結構如上 main.cpp add.h add.cpp add.h 這里使用riscv的工具鏈編譯為.i文件,需要使用-E,就是只進行預處理,我們可以得到兩個.i文件即main.i和add.i main.i 這里看到main.i里頭文件全部替換,然后多了三萬多行 所以…

Leetcode 3068. Find the Maximum Sum of Node Values

Leetcode 3068. Find the Maximum Sum of Node Values 1. 解題思路2. 代碼實現 題目鏈接:3068. Find the Maximum Sum of Node Values 1. 解題思路 這一題雖然標記為一道hard的題目,但其實就是一個腦筋急轉彎的題目。 我們只需要想明白一點即可&…

4G/5G執法記錄儀、智能安全帽走國標GB28181接入海康、宇視等大平臺,也可走平臺與平臺對接,以下級平臺級聯到上級大平臺

AIoT萬物智聯,智能安全帽生產廠家,執法記錄儀生產廠家,智能安全帽、智能頭盔、頭盔記錄儀、執法記錄儀、智能視頻分析/邊緣計算AI盒子、車載DVR/NVR、布控球、智能眼鏡、智能手電、無人機4G補傳系統等統一接入大型融合通信可視指揮調度平臺VM…

Vue3和ElementPlus封裝table組件

最近學習vue3.2并自己在寫一個項目,然后發現好幾個頁面都是列表頁,重復寫table和column也是覺得累,學習的項目列表頁不算多,要是公司項目就不一樣了,所以就想著自己封裝一個table組件,免去大量重復工作和co…

滑動窗口

題目 思路 對于一個數組區間的最值,可以開辟一個隊列記錄(當然這里不能叫隊列只是和隊列相似,習慣性叫法)。 每個區間的最值等于隊首元素。掃描數組時,如果該元素大于隊尾元素(取最大值時)將該隊尾元素出隊…