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 相关文章推荐
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
Apr 05 MySQL
MySQL infobright的安装步骤
Apr 07 MySQL
MySQL sql_mode修改不生效的原因及解决
May 07 MySQL
浅谈MySQL next-key lock 加锁范围
Jun 07 MySQL
一条慢SQL语句引发的改造之路
Mar 16 MySQL
MySQL多表查询机制
Mar 17 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySQL的存储过程和相关函数
Apr 26 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
MySQL 原理优化之Group By的优化技巧
Aug 14 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网站基础优化方法小结
2008/09/29 PHP
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python基类函数的重载与调用实例分析
2015/01/12 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
暑期社会实践证明书
2014/11/17 职场文书
司机岗位职责
2015/02/04 职场文书
中学教师个人总结
2015/02/10 职场文书
幸福终点站观后感
2015/06/04 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
Django与数据库交互的实现
2021/06/03 Python
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers