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 时间类型的选择
Jun 05 MySQL
SQL实现LeetCode(177.第N高薪水)
Aug 04 MySQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
Dec 06 MySQL
MySQL笔记 —SQL运算符
Jan 18 MySQL
navicat 连接Ubuntu虚拟机的mysql的操作方法
Apr 02 MySQL
MySql重置root密码 --skip-grant-tables
Apr 11 MySQL
MySql分区类型及创建分区的方法
Apr 13 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySQL提取JSON字段数据实现查询
Apr 22 MySQL
pt-archiver 主键自增
Apr 26 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 MySQL
delete in子查询不走索引问题分析
Jul 07 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 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
Python判断字符串与大小写转换
2015/06/08 Python
python实现机器学习之元线性回归
2018/09/06 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
python实现矩阵打印
2019/03/02 Python
Python骚操作之动态定义函数
2019/03/26 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
pycharm运行scrapy过程图解
2019/11/22 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
医院信息公开实施方案
2014/05/09 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
以权谋私检举信范文
2015/03/02 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers