首页 > 数据库 >mysql 一次插入多少数据性能最佳

mysql 一次插入多少数据性能最佳

时间:2024-10-30 23:42:48浏览次数:8  
标签:字节 最佳 数据库 写入 插入 mysql 磁盘 数据

mysql 一次插入多少条是最佳性能

  • 我们经常会浏览,分享,点赞,都会产生数据,这些数可能会被存储到不同的地方,其中最常见的存储载体就是--数据库。

  • 根据场景和数据特性,可以有关系型数据库mysql,也有非关系数据库,例如:Redis,比如说:当你在网站点赞的时候,为了快速响应,可能是一个基于内存的数据库如Redis首先记录这个动作,后台在周期性能的同步这些动作到持久化的存储系统中。

问题:当巨大数据流入时,如何高效稳定的把数据存储到数据库中,每次多少条,

  1. 很多时候,我们只知道批量插入可以提高性能,我们要知道为什么?

问题:如何快速插入,并保证有效性,

答案:
1.写入缓存与磁盘同步。
2.事务日志与数据持久化

1.写入缓存与磁盘同步:

当数据被写入数据库时,它首先应该被写入缓存中,而不是缓慢的磁盘中,然后后台线程在适当的时间点将数据同步到磁盘上。
这样做的原因:

1.速度差异:RAM(随机取存储器)的速度远远快于磁盘,RAM读数据的读取几乎是瞬间,而磁盘,无论传统的机械硬盘,还是现代的固态硬盘,读写速度都低于RAM。
2。磁盘I/O的成本:每次进行磁盘的I/O操作都有一定的开销,如果数据库频繁的进行小批量的磁盘写入,会导致I/O开销,得不偿失。
首先将数据写入RAM,在数据库可以把数据同步到磁盘之前,累积多个写入操作,最后一次大量的数据写入磁盘,从而减少I/O的次数和开销。
结论:先写入缓存,在同步到磁盘,这种不仅仅加速了写入操作,有效的减少了I/O,提高数据库性能

问题:如果数据库还不及到磁盘,结果宕机了。

InnoDB在进行更新操作时候,采用了,writeAhead Log 策略,这就是意味着:数据被写入磁盘之前,相关的操作会首先记录到redo log日志里面,这种策略赋予了mysql在系统崩溃后的恢复能力。

2.事务日志与数据持久化:

为了确保数据的完整性,数据库首先将插入操作写入事务,只有当数据安全的写入日志,才会移动到实际的数据库表中。

单条插入和批量数据插入的差异:

单条插入1000次,就是1000次的事务开销,批量插入,可以将这些数据在一个事务中插入,大大减少了总的事务开销。

批量插入对数据库性能的影响:

批量插入可以减少磁盘I/O的次数,从而提高性能,但是如果一次批量数据量过大,它可能会暂时阻塞其他的操作,影响数据的响应时间。

为了达到最佳的性能可能需要根据实际的情况调整插入的数据量,过少的数据导致数据库性能优化不足,过多的数据导致响应时间增加。

如何决定合适的数据插入量

1.磁盘I/O:
磁盘I/O是插入数据的瓶颈之一:过多的插入操作,会导致磁盘I/O的饱和,降低系统的响应时间。
确保在高插入时候:不能超过其峰值。

2.大量插入时候可能会增加RAM的使用量,定期检查内存,确保有足够的资源来处理大量的插入操作。

3.事务的大小:
较大的事务:可能导致长时间的锁定,从而影响其他查询的性能。
太小的事务:增加事务的数量,性能优化没有太大意义。

估值的计算:

  1. 比如一条记录:字段Int,4字节varchar,最小50字节最大255字节,date,3字节,float 4字节。

这条记录的大小:4+50+3+4=61字节;
最大记录大小:4+255+3+4=266字节;
2. 内存分析:
假如:8G内存,预留20%,可使用是:80.8=6.4G
so:我们可以插入的最大记录是:
最大记录数(平均大小):6.4
10的9次方字节 / 61字节
最大记录数(最大大小):6.4*10的9次方字节 / 266字节

  1. 硬盘分析:
    假如是:512G硬盘,可以存储的最大记录数为:

最大记录数(平均大小):51210的9次方字节 / 61字节
最大记录数(最大大小):512
10的9次方字节 / 266字节

避免频繁的会话提交

在批量插入期间,频繁的会话可能会导致,性能下降,一般在插入完所有的数据后再进行一次会话提交。

标签:字节,最佳,数据库,写入,插入,mysql,磁盘,数据
From: https://www.cnblogs.com/surewing/p/18516838

相关文章

  • 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现九
    一、前言介绍:1.1项目摘要随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势。古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力。然而,在现代社会中,由于生活节奏的加快和信息获取方式的多样化,古诗词的传播和阅读面临着一定的挑......
  • 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现十
    一、前言介绍:1.1项目摘要随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势。古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力。然而,在现代社会中,由于生活节奏的加快和信息获取方式的多样化,古诗词的传播和阅读面临着一定的挑......
  • 免费送源码:Java+ssm+MySQL+Ajax ssm第二课堂管理系统 计算机毕业设计原创定制
    摘要随着互联网的高速发展,教育进入了信息化时代,促使了多种混合式教学模式的出现。第二课堂管理系统是这一时期新型混合式教学模式的代表,它的出现改变了传统教学模式,将知识传递置于课前,将学习知识的主动性交给学生,促使学生的素质全面发展。第二课堂管理系统以“以学生为......
  • 【信奥赛·算法基础】插入排序:算法解析与C++实现
    序言插入排序(InsertionSort)是一种简单的排序算法,就像是我们在打扑克牌时,整理手中牌的过程。一、基本原理插入排序的基本思想是:将待排序的元素插入到已经有序的部分序列中合适的位置,直到所有元素都插入完毕,整个序列就变为有序序列。二、算法步骤从第二个元素开始(假设第......
  • MySQL索引
    索引概述介绍索引(index)是帮助MySQL高效获取数据的数据结构(且有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。优缺点索引结构MySQL的索引是在存储引......
  • MySQL存储引擎——针对实习面试
    目录MySQL支持哪些存储引擎?MySQL存储引擎架构了解嘛?MyISAM和InnoDB有什么区别?MyISAM和InnoDB如何选择?如何查看表的存储引擎?如何修改表的存储引擎?MySQL支持哪些存储引擎?MySQL支持多种存储引擎,包括InnoDB、MyISAM、MEMORY、ARCHIVE、BLACKHOLE、FEDERATED、NDBCluste......
  • Ubuntu22 mysql8 MHA高可用
    mha-manager地址:https://github.com/yoshinorim/mha4mysql-managermha-node地址:https://github.com/yoshinorim/mha4mysql-node mha有mha-manager和mha-node2个组件由于主节点有可能会被切换成从节点,而每一个从节点也有可能会被切换成主节点所以MHA对Mysql复制环境有特......
  • Mysql梳理11——聚合函数
    Mysql梳理11——聚合函数Mysql梳理11——聚合函数11.1引言11.2聚合函数介绍11.2.1什么是聚合函数11.2.2聚合函数类型11.2.3聚合函数语法11.3具体聚合函数11.3.1AVG和SUM函数11.3.2MIN和MAX函数11.3.3COUNT函数11.4GROUPBY11.4.1基本使用11.4.2使用多个列......
  • MySQL敏感数据进行加密的几种方法
    使用MySQL内置的加密函数AES_ENCRYPT和AES_DECRYPT函数方法介绍:AES(AdvancedEncryptionStandard)是一种对称加密算法。在MySQL中,可以使用AES_ENCRYPT函数对数据进行加密,使用AES_DECRYPT函数进行解密。这种加密方式的特点是加密和解密使用相同的密钥。示例:......
  • MySQL如何输出自己的AWR分析报告
    一、启用慢查询日志配置慢查询日志参数编辑MySQL配置文件(通常是my.cnf或my.ini),找到以下参数并进行设置。slow_query_log:将其设置为1以启用慢查询日志。例如:slow_query_log=1。long_query_time:定义查询执行时间的阈值,超过这个时间的查询会被记录到慢查询日志中。单......