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 相关文章推荐
教你用eclipse连接mysql数据库
Apr 22 MySQL
MySQL 8.0 Online DDL快速加列的相关总结
Jun 02 MySQL
MySQL 如何设计统计数据表
Jun 15 MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 MySQL
一篇文章看懂MySQL主从复制与读写分离
Nov 07 MySQL
mysql 获取时间方式
Mar 20 MySQL
MySQL创建管理RANGE分区
Apr 13 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
讲解MySQL增删改操作
May 06 MySQL
详细介绍MySQL中limit和offset的用法
May 06 MySQL
数据设计之权限的实现
Aug 05 MySQL
DQL数据查询语句使用示例
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
杏林同学录(四)
2006/10/09 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
jQuery实现日历效果
2020/09/11 jQuery
python skimage 连通性区域检测方法
2018/06/21 Python
Python pymsql模块的使用
2020/09/07 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
策划主管的工作职责
2013/11/24 职场文书
楼面经理岗位职责范本
2014/02/18 职场文书
房地产项目建议书
2014/03/12 职场文书
高考标语大全
2014/06/05 职场文书
班风口号
2014/06/18 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
信访工作个人总结
2015/03/03 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
一文简单了解MySQL前缀索引
2022/04/03 MySQL