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


Posted in MySQL onJune 03, 2021

公司开发人员在测试环境中执行一条 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 相关文章推荐
如何使用Maxwell实时同步mysql数据
Apr 08 MySQL
MySQL 重命名表的操作方法及注意事项
May 21 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
MySQL中的布尔值,怎么存储false或true
Jun 04 MySQL
为什么代码规范要求SQL语句不要过多的join
Jun 23 MySQL
mysql如何配置白名单访问
Jun 30 MySQL
MySQL索引是啥?不懂就问
Jul 21 MySQL
MySQL千万级数据表的优化实战记录
Aug 04 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
Mysql查询时间区间日期列表,不会由于数据表数据影响
Apr 19 MySQL
MySQL GTID复制的具体使用
May 20 MySQL
mysql5.7使用binlog 恢复数据的方法
Jun 03 #MySQL
MySQL8.0无法启动3534的解决方法
zabbix监控mysql的实例方法
Mysql实现主从配置和多主多从配置
Jun 02 #MySQL
Navicat连接MySQL错误描述分析
MySQL不使用order by实现排名的三种思路总结
Jun 02 #MySQL
MySQL连接查询你真的学会了吗?
Jun 02 #MySQL
You might like
PHP define函数的使用说明
2008/08/27 PHP
php 远程图片保存到本地的函数类
2008/12/08 PHP
php数组的概述及分类与声明代码演示
2013/02/26 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
原生js实现分页效果
2020/09/23 Javascript
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
python实现Flappy Bird源码
2018/12/24 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
python-numpy-指数分布实例详解
2019/12/07 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
Python 内存管理机制全面分析
2021/01/16 Python
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
秘书行业自我鉴定范文
2013/12/30 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
新教师教学工作总结
2015/08/12 职场文书
法制教育主题班会
2015/08/13 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
maven依赖的version声明控制方式
2022/01/18 Java/Android
python中的getter与setter你了解吗
2022/03/24 Python
Python创建SQL数据库流程逐步讲解
2022/09/23 Python