百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

MySQL 10w+数据 insert 优化

connygpt 2024-09-06 19:41 11 浏览

由于业务原因,遇到了如题所述的业务问题,事务执行时间在30s~50s 不等,效果非常不理想

方案1. jdbc批处理

5w+ 数据测试,分别使用了mybatis insert()()(拼接xml), mybatis的批处理和 jdbc的批处理。

可以看到在jdbc执行时间方面是差不多的,但是在方法执行时间上,批处理要稍微快了一些,但是还是不理想





方案2. 优化MySQL 参数

修改 my.ini

innodb_buffer_pool_size :

InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and

row data. The bigger you set this the less disk I/O is needed to

access data in tables. On a dedicated database server you may set this

parameter up to 80% of the machine physical memory size. Do not set it

too large, though, because competition of the physical memory may

cause paging in the operating system. Note that on 32bit systems you

might be limited to 2-3.5G of user level memory per process, so do not

set it too high.

Innodb的缓冲池会缓存数据和索引,设置的越大访问表中的数据所需的磁盘I/O就越少。

修改innodb_buffer_pool_size = 512M测试一下效率,这速度简直感人!



10w+数据测试1

innodb_log_buffer_size :

The size of the buffer InnoDB uses for buffering log data. As soon as

it is full, InnoDB will have to flush it to disk. As it is flushed once per second anyway, it does not make sense to have it very large

(even with long transactions).

表示InnoDB写入到磁盘上的日志文件时使用的缓冲区的字节数,默认值为8M。当缓冲区充满时,InnoDB将刷新数据到磁盘。由于它每秒刷新一次,所以将它设置得非常大是没有意义的 (即使是长事务)。

innodb_log_file_size :

Size of each log file in a log group. You should set the combined size

of log files to about 25%-100% of your buffer pool size to avoid

unneeded buffer pool flush activity on log file overwrite. However,

note that a larger logfile size will increase the time needed for the

recovery process.

该值越大,缓冲池中必要的检查点刷新活动就会越少,节省磁盘I/ O。但是越大的日志文件,mysql的崩溃恢复就越慢

设置上述两个参数innodb_log_file_size=64M innodb_log_buffer_size=16M,效率提升的并不明显。



总结

数据量大时,批处理在方法执行时间上要比 mybatis xml拼接快一点 (批处理只编译一条SQL,而拼接的方式SQL会很长)

性能瓶颈优化还是要从数据库下手,目前来看MySQL 大数据量时很依赖 innodb_buffer_pool_size (缓冲池)

链接:jianshu.com/p/09689e6cc2d6

回复“资源”,领取 练手源码,视频教程,微服务、并发,数据可调优等,搜索【Java知音】

相关推荐

3分钟让你的项目支持AI问答模块,完全开源!

hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...

干货|程序员的副业挂,12个平台分享

1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...

Github标星超200K,这10个可视化面板你知道几个

在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...

开箱即用的炫酷中后台前端开源框架第二篇

#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...

搭建React+AntDeign的开发环境和框架

搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...

基于.NET 5实现的开源通用权限管理平台

??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...

StreamPark - 大数据流计算引擎

使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...

教你使用UmiJS框架开发React

1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...

简单在线流程图工具在用例设计中的运用

敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...

【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单

这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...

聊聊规则引擎的调研及实现全过程

摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...

【开源推荐】Diboot 2.0.5 发布,自动化开发助理

一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...

微软推出Copilot Actions,使用人工智能自动执行重复性任务

IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...

Electron 使用Selenium和WebDriver

本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...

Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具

一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...