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 Shell的介绍以及安装
Apr 24 MySQL
详解mysql三值逻辑与NULL
May 19 MySQL
MySQL系列之七 MySQL存储引擎
Jul 02 MySQL
基于MySql验证的vsftpd虚拟用户
Nov 07 MySQL
mysql 联合索引生效的条件及索引失效的条件
Nov 20 MySQL
mysql中整数数据类型tinyint详解
Dec 06 MySQL
MYSQL优化之数据表碎片整理详解
Apr 03 MySQL
MySQL去除密码登录告警的方法
Apr 20 MySQL
详细介绍MySQL中limit和offset的用法
May 06 MySQL
mysql字段为NULL索引是否会失效实例详解
May 30 MySQL
MySql如何将查询的出来的字段进行转换
Jun 14 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的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
2015/03/26 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
jQuery使用方法
2017/02/04 Javascript
javascript history对象详解
2017/02/09 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
python重试装饰器示例
2014/02/11 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Python 处理文件的几种方式
2019/08/23 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
机电专业毕业生推荐信
2013/11/10 职场文书
公司门卫管理制度
2014/02/01 职场文书
便利店促销方案
2014/02/20 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
2015年话务员工作总结
2015/04/29 职场文书
建党伟业电影观后感
2015/06/01 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫