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 相关文章推荐
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
浅谈mysql返回Boolean类型的几种情况
Jun 04 MySQL
Mysql8.0递归查询的简单用法示例
Aug 04 MySQL
MYSQL 的10大经典优化案例场景实战
Sep 14 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
Mysql事务索引知识汇总
Mar 17 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
SQL语句多表联合查询的方法示例
Apr 18 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
Mysql如何查看是否使用到索引
Dec 24 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管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
smarty表格换行实例
2014/12/15 PHP
php中session与cookie的比较
2015/01/27 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
python实现简单遗传算法
2018/03/19 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
匡威英国官网:Converse英国
2018/12/02 全球购物
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
开工仪式主持词
2014/03/20 职场文书
初婚初育证明范本
2014/11/24 职场文书
办公用房租赁协议书
2014/11/29 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android