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 05 MySQL
详解MySQL的半同步
Apr 22 MySQL
MySQL不使用order by实现排名的三种思路总结
Jun 02 MySQL
MYSQL 无法识别中文的永久解决方法
Jun 03 MySQL
MySQL REVOKE实现删除用户权限
Jun 18 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
Feb 12 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
MySQL选择合适的备份策略和备份工具
Jun 01 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
MySQL数据管理操作示例讲解
Dec 24 MySQL
SQL Server数据库的三种创建方法汇总
May 08 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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
php设计模式 Observer(观察者模式)
2011/06/26 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
juqery 学习之四 筛选过滤
2010/11/30 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
2016/01/19 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
python的类变量和成员变量用法实例教程
2014/08/25 Python
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
解决Django no such table: django_session的问题
2020/04/07 Python
详解pandas赋值失败问题解决
2020/11/29 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
室内拓展活动方案
2014/02/13 职场文书
大学生社团活动总结
2014/04/26 职场文书
电气自动化求职信
2014/06/24 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
求职信格式范文
2015/03/19 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python