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的版本
May 19 MySQL
MySQL不使用order by实现排名的三种思路总结
Jun 02 MySQL
MySQL5.7并行复制原理及实现
Jun 03 MySQL
MySQL 时间类型的选择
Jun 05 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
Mysql8.0递归查询的简单用法示例
Aug 04 MySQL
MySQL配置主从服务器(一主多从)
Aug 07 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
MySql重置root密码 --skip-grant-tables
Apr 11 MySQL
MySQL 字符集 character
May 04 MySQL
sql注入报错之注入原理实例解析
Jun 10 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
一个PHP模板,主要想体现一下思路
2006/12/25 PHP
PHP的5个安全措施小结
2012/07/17 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
PHP实现今天是星期几的几种写法
2013/09/26 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
js案例之鼠标跟随jquery版(实例讲解)
2017/07/21 jQuery
在vue-cli中组件通信的方法
2017/12/16 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
Python中的zipfile模块使用详解
2015/06/25 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
python使用requests.session模拟登录
2019/08/09 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
Python matplotlib实时画图案例
2020/04/23 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
排查整治工作方案
2014/06/09 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL