MySQL删除和插入数据很慢的问题解决

 更新时间:2021年06月03日 09:59:56   作者:店伙计  
公司开发人员在测试环境中执行一条 insert 语句时,需要花费 10 几秒才可以执行成功。所以本文就来解决一下这个问题,感兴趣的小伙伴们可以参考一下

公司开发人员在测试环境中执行一条 insert 语句时,需要花费 10 几秒才可以执行成功。查看测试环境数据库性能、数据量、死锁等信息,均为发现异常。最后通过修改日志写入方式解决此问题。

1. 修改办法

修改/etc/my.cnf文件,将 innodb_flush_log_at_trx_commit = 1改为0, 但这样就要承担数据库Crash后,1秒内未存储到数据库数据丢失可能的风险。MySQL文档中对该参数的描述如下:

If the value of innodb_flush_log_at_trx_commit is 0, the log buffer is written out to the log file once per second and the flush to disk operation is performed on the log file, but nothing is done at a transaction commit. When the value is 1 (the default), the log buffer is written out to the log file at each transaction commit and the flush to disk operation is performed on the log file. When the value is 2, the log buffer is written out to the file at each commit, but the flush to disk operation is not performed on it. However, the flushing on the log file takes place once per second also when the value is 2. Note that the once-per-second flushing is not 100% guaranteed to happen every second, due to process scheduling issues.

2. 参数说明

  • 0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作
  • 1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认
  • 2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作

3. 注意事项

当设置为0时,该模式速度最快,但不太安全,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。

当设置为1时,该模式是最安全的,但也是最慢的一种方式。在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。

当设置为2时,该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。

innodb_flush_log_at_trx_commit和sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数,当两个参数都设置为1的时候写入性能最差,推荐做法是innodb_flush_log_at_trx_commit=2,sync_binlog=500 或1000。

到此这篇关于MySQL删除和插入数据很慢的问题解决的文章就介绍到这了,更多相关MySQL删除和插入数据很慢内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql 实现向上递归查找父节点并返回树结构的示例代码

    Mysql 实现向上递归查找父节点并返回树结构的示例代码

    通过mysql 8.0以下版本实现,一个人多角色id,一个角色对应某个节点menu_id,根节点的父节点存储为NULL, 向上递归查找父节点并返回树结构,今天通过本文给大家介绍Mysql递归查找父节点并返回树结构,感兴趣的朋友一起看看吧
    2022-09-09
  • MySQL存储结构用法案例分析

    MySQL存储结构用法案例分析

    这篇文章主要介绍了MySQL存储结构用法,结合具体案例形式分析了mysql存储结构相关使用方法与操作注意事项,需要的朋友可以参考下
    2018-07-07
  • Navicat中新建MySQL数据库与新建、修改、删除数据表及删除数据库详细操作方法

    Navicat中新建MySQL数据库与新建、修改、删除数据表及删除数据库详细操作方法

    Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设,这篇文章主要给大家介绍了关于Navicat中新建MySQL数据库与新建、修改、删除数据表及删除数据库详细操作的相关资料,需要的朋友可以参考下
    2023-11-11
  • 将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库

    将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库

    如果网站流量小,直接使用 Ghost 默认的 SQLite 数据库还是很方便的,能够省去安装、配置数据库的繁琐步骤。但是,随着网站流量的增加, SQLite 就慢慢顶不住了,这时最好的选择就是使用 MySQL 数据库。
    2014-07-07
  • Mysqli基础知识

    Mysqli基础知识

    本文给大家讲述的是Mysqli的基础知识,非常的浅显易懂,有需要的小伙伴就可以参考下。
    2015-07-07
  • MySQL过滤数据操作方法梳理

    MySQL过滤数据操作方法梳理

    数据库表一般包含大量的数据,很少需要检索表中的所有行。通常只是根据特定的需要提取表数据的子集。因此检索所需数据时需要指定搜索条件,搜索条件也称为过滤条件
    2022-10-10
  • MySQL复制表常用的四种方式小结

    MySQL复制表常用的四种方式小结

    mysql 想必大家比较熟悉了,我们常见的crud  sql想必大家也是手到拈来,但可能会有人不会写mysql中复制表,所以接下来本文我会介绍四种常用的复制表的方式,需要的朋友可以参考下
    2023-07-07
  • mysql启动提示:错误2系统找不到指定文件的解决方案

    mysql启动提示:错误2系统找不到指定文件的解决方案

    这篇文章主要给大家介绍了mysql启动提示:错误2系统找不到指定文件的解决方案,文中通过图文结合的方式给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • mysql自定义函数原理与用法实例分析

    mysql自定义函数原理与用法实例分析

    这篇文章主要介绍了mysql自定义函数,结合实例形式分析了mysql自定义函数基本功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • MySQL数据库使用规范总结

    MySQL数据库使用规范总结

    本篇文章给大家详细分类总结了数据库相关规范,帮助大家发挥出数据库的性能,感兴趣的朋友可以了解下
    2020-08-08

最新评论