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三值逻辑与NULL
May 19 MySQL
Mysql文件存储图文详解
Jun 01 MySQL
MySQL 外键约束和表关系相关总结
Jun 20 MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
MySQL 8.0 驱动与阿里druid版本兼容问题解决
Jul 01 MySQL
MySQL非空约束(not null)案例讲解
Aug 23 MySQL
MySQL空间数据存储及函数
Sep 25 MySQL
一文弄懂MySQL中redo log与binlog的区别
Feb 15 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
MySQL 数据 data 基本操作
May 04 MySQL
MySQL数据库之存储过程 procedure
Jun 16 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 Session无效分析资料整理
2016/11/29 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
python带参数打包exe及调用方式
2019/12/21 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
用python实现学生管理系统
2020/07/24 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
应届生服务员求职信
2013/10/31 职场文书
生产副总岗位职责
2013/11/28 职场文书
4s客服专员岗位职责
2013/12/01 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
《恐龙》教学反思
2014/04/27 职场文书
运动会演讲稿50字
2014/08/25 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
python内置进制转换函数的操作
2021/06/02 Python
Redis过期数据是否会被立马删除
2022/07/23 Redis