长事务(Long-Lived Transactions),顾名思义,就是执行时间较长的事务。在innodb中可以查询到当前执行中的事务。

select * from information_schema.INNODB_TRX;

在访问表时,innodb会自动给加上元数据锁(meta data lock,MDL),MDL是表级锁。如果是读,就是共享锁,写就是排它锁。当执行长事务时,后续的事务如果要获取排它锁就会被阻塞。可能引发系统崩溃严重事故。

解决办法:

1.等系统不繁忙时操作

2.检查表information_schema.INNODB_TRX是否有长事务,考虑先暂停DDL,或者kill掉这个长事务。

3.将长事务分解成小批量事务。

4.设置等待获取锁时间,超时时放弃更新。

ALTER TABLE tbl_name WAIT N add column ... 

拓展:

全局锁

全局锁就对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的MDL的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性。加全局锁的两种方法:

一. FLUSH TABLES WRITE READ LOCK  (FTWRL,推荐使用)
二. set global readonly=true

当你需要让整个库处于只读状态的时候,可以使用FTWRL这种方式。之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。

全局锁的典型使用场景是,做全库逻辑备份。也就是把整库每个表都select出来存成文本。

注意,在备份过程中整个库完全处于只读状态。

在Innodb引擎中可以使用官方自带的逻辑备份工具是mysqldump。当mysqldump使用参数–single-transaction的时候,导数据之前就会启动一个事务,来确保拿到一致性视图。而由于MVCC的支持,这个过程中数据是可以正常更新的。

MySQL长事务处理办法相关推荐

  1. mysql长时间后断开_mysql 长时间没连接了 就会自动断开服务

    这是因为mysql 长时间没连接了 就会自动断开服务. 解决办法 1.首先,下载必须的jar包 dbcp 包,目前版本是1.2.1:http://jakarta.apache.org/commons/ ...

  2. WordPress网站加载WAITING (TTFB) 时间过长解决办法

    WordPress 刚刚安装的时候,性能是没问题的,我们安装了主题.插件.添加了一些小工具和菜单,然后我们就开始上传内容了,我们都很勤快 Waiting (TTFB) 时间 Time to First ...

  3. MySql wait_timeout问题解决办法。

    MySql wait_timeout问题解决办法. 参考文章: (1)MySql wait_timeout问题解决办法. (2)https://www.cnblogs.com/CryOnMyShoul ...

  4. php mysql长连接聊天室_PHP之探索MySQL 长连接、连接池

    PHP连接MysqL的方式,用的多的是MysqL扩展.MysqLi扩展.pdo_MysqL扩展,是官方提供的.PHP的运行机制是页面执行完会释放所有该PHP进程中的所有资源的,如果有多个并发访问本地的 ...

  5. mysql 长事务查询_MySQL长事务详解

    前言: 『入门MySQL』系列文章已经完结,今后我的文章还是会以MySQL为主,主要记录下近期工作及学习遇到的场景或者自己的感悟想法,可能后续的文章不是那么连贯,但还是希望大家多多支持.言归正传,本篇 ...

  6. MySQL的事务处理

    2019独角兽企业重金招聘Python工程师标准>>> 事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理.比如说,在人员管理系统中, ...

  7. mysql ping 长连接超时时间_mysql_ping与mysql长连接(部分摘录) | 学步园

    mysql_ping与mysql长连接 今天有大收获.最近开发的一个系统,后台用的线程池来处理请求,而每个线程池持有一个mysql连接.这个程序有时候会莫名其妙的死掉,好像是在操作数据库的时候.由于出 ...

  8. 记录一次吃力的探索过程【Thinkphp搭建Mysql长连接并重用】

    使用Thinkphp搭建服务器后,进行ab测试发现并发性能几乎为0.-c参数设置为1和2,8,每秒完成请求都只有0.9左右. 于是打开mysql全局日志一看,我的乖乖,一个http请求就connect ...

  9. 解决 linux du: Argument list too long 参数列表过长的办法

    解决 linux du: Argument list too long 参数列表过长的办法 免费领取满减阿里云红包 需求:需要查看一类文件得总大小 问题如下图: 解决方法: 1.使用xargs命令 f ...

最新文章

  1. Struts 2创始人Patrick Lightbody作序推荐
  2. python自动抓取指定信息_使用python自动转发抓取的网页信息
  3. python对象底层原理_Python字符串对象实现原理详解
  4. oracle磁盘提取工具,实战:巧用磁盘管理工具给oracle提速
  5. 综合云平台 - OpenShift - 07
  6. Eclipse快捷键之搜索
  7. linux启动器编辑,linux下建立启动器
  8. C++使用Socks5协议进行代理上网(二)
  9. 51Job行业分类和行业编号汇总,格式:Json
  10. Webkit内核探究【1】——Webkit简介
  11. Mesh Slicer 切割人体的原理分析
  12. THINKPHP5(TP5)新手入门必看教程
  13. 三菱FX系列控制步进电机回原点方向
  14. 小米拒绝权限_手机用户隐私保护升级:小米MIUI 11支持“空信息授权”
  15. CSS3 仿古墓丽影9菜单界面
  16. 【笔记】C#学习笔记
  17. android开发 修改标题栏背景_android开发修改状态栏背景色和图标颜色
  18. wordpress 调用指定页面内容详解2 get_children()
  19. R语言机器学习 趋势分析 SMA EMA
  20. Java程序设计 # 3

热门文章

  1. c++课设学生成绩与学籍管理系统
  2. matlab中oad什么意思,MATLAB函数参考
  3. 小米家投影仪2和极米z6x 哪个好
  4. 解封攻略 拯救你的ChatGPT账号
  5. C++ setw() 与 setfill()
  6. 远程桌面连接重启计算机名,远程桌面重启机器如何操作?
  7. 100个G以上的超大文件的下载方法
  8. 2022云邮箱登陆首页介绍,企业云邮箱登陆方式有哪些?
  9. C语言 strlen(str)和sizeof(arr)的区别
  10. OpenCV函数汇总(所有函数)---219个函数