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 相关文章推荐
mysql批量新增和存储的方法实例
Apr 07 MySQL
详解MySQL 用户权限管理
Apr 20 MySQL
MySQL创建高性能索引的全步骤
May 02 MySQL
MySQL 逻辑备份与恢复测试的相关总结
May 14 MySQL
详解MySQL集群搭建
May 26 MySQL
MySQL中InnoDB存储引擎的锁的基本使用教程
May 26 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 MySQL
MySQL数据库简介与基本操作
May 30 MySQL
MySql如何将查询的出来的字段进行转换
Jun 14 MySQL
MySQL事务的ACID特性以及并发问题方案
Jul 15 MySQL
MySQL深分页问题解决思路
Dec 24 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获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
详解vue中axios的封装
2018/07/18 Javascript
python删除过期文件的方法
2015/05/29 Python
深入浅析Python传值与传址
2018/07/10 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
django 实现简单的插入视频
2020/04/07 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
美国网上花店:JustFlowers
2017/02/12 全球购物
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
年会搞笑主持词
2014/03/27 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
个人求职信格式范文
2015/03/20 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记