环境:Server version:         5.6.21-log MySQL Community Server (GPL)

前提提要:

  1. innodb_rollback_on_timeout是啥作用?
  2. 答:事务B在锁等待超时后是回滚事务内所有的statement还是最后一条语句;
  3. 0表示rollback最后一条语句,默认值;有点坑
  4. 1表示回滚事务B内所有的statements
    此参数是只读参数,需在my.cnf中配置,并且重启生效;
  5. 注意:回滚statements后不自动commitrollback事务;坑

表结构:

  1. mysql> show create table t12\G;
  2. *************************** 1. row ***************************
  3. Table: t12
  4. Create Table: CREATE TABLE `t12` (
  5. `a` int(10) unsigned NOT NULL AUTO_INCREMENT,
  6. `b` varchar(766) DEFAULT NULL,
  7. `c` int(11) DEFAULT NULL,
  8. PRIMARY KEY (`a`),
  9. KEY `b` (`b`)
  10. ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1
  11. 1 row in set (0.00 sec)

实验一:

  1. 参数配置:
  2. mysql> show variables like 'innodb_rollback_on_timeout';
  3. +----------------------------+-------+
  4. | Variable_name | Value |
  5. +----------------------------+-------+
  6. | innodb_rollback_on_timeout | ON |
  7. +----------------------------+-------+
  8. 1 row in set (0.00 sec)
  9.  
  10. mysql> show variables like 'tx_iso%';
  11. +---------------+-----------------+
  12. | Variable_name | Value |
  13. +---------------+-----------------+
  14. | tx_isolation | REPEATABLE-READ |
  15. +---------------+-----------------+
  16. 1 row in set (0.00 sec)
  17.  
  18. mysql> show variables like 'autocommit';
  19. +---------------+-------+
  20. | Variable_name | Value |
  21. +---------------+-------+
  22. | autocommit | ON |
  23. +---------------+-------+
  24. 1 row in set (0.00 sec)

过程:

实验二:

  1. 参数配置:
  2. mysql> show variables like 'innodb_rollback_on_timeout';
  3. +----------------------------+-------+
  4. | Variable_name | Value |
  5. +----------------------------+-------+
  6. | innodb_rollback_on_timeout | OFF |
  7. +----------------------------+-------+
  8. 1 row in set (0.00 sec)
  9.  
  10. mysql> show variables like 'tx_iso%';
  11. +---------------+-----------------+
  12. | Variable_name | Value |
  13. +---------------+-----------------+
  14. | tx_isolation | REPEATABLE-READ |
  15. +---------------+-----------------+
  16. 1 row in set (0.00 sec)
  17.  
  18. mysql> show variables like 'autocommit';
  19. +---------------+-------+
  20. | Variable_name | Value |
  21. +---------------+-------+
  22. | autocommit | ON |
  23. +---------------+-------+
  24. 1 row in set (0.00 sec)

过程:

总结:

1、关闭innodb_rollback_on_timeout后,一旦以begin;start transaction;等语句开启一个事务,当锁等待超时后,该事务请求的锁将不释放,直到事务提交或回滚或会话超时;

所以autocommit参数建议设置成ON,只要程序没有显示开启事务,就可以避免上述锁未释放问题。

2、开启innodb_rollback_on_timeout后,一旦锁等待超时,是事务内sql将全部回滚,且释放之前请求的锁。

3、当autocommit=on,只要不显示开启事务,将不存在上面2个问题,即锁的问题和回滚的问题。

转载请备注:http://www.cnblogs.com/su-han/p/6204016.html

[原创]MySQL innodb_rollback_on_timeout参数对锁的影响的更多相关文章

  1. 看MySQL的参数调优及数据库锁实践有这一篇足够了

    史上最强MySQL参数调优及数据库锁实践 1. 应用优化 1.2 减少对MySQL的访问 1.2.1 避免对数据进行重复检索 1.2.2 增加cache层 1.3 负载均衡 1.3.1 利用MySQL ...

  2. Mysql中的三类锁,你知道吗?

    导读 正所谓有人(锁)的地方就有江湖(事务),人在江湖飘,怎能一无所知? 今天来细说一下Mysql中的三类锁,分别是全局锁.表级锁.行级锁. 文章首发于作者公众号[码猿技术专栏],原创不易,喜欢的点个 ...

  3. 【MySQL】索引和锁

    前言 本文摘自数据库两大神器[索引和锁] 声明:如果没有说明具体的数据库和存储引擎,默认指的是MySQL中的InnoDB存储引擎 索引 在之前,我对索引有以下的认知: 索引可以加快数据库的检索速度 表 ...

  4. 【查阅】mysql配置文件/参数文件重要参数笔录(my.cnf)

    持续更新,积累自己对参数的理解 [1]my.cnf参数 [client]port = 3306socket = /mysql/data/3306/mysql.sockdefault-character ...

  5. 前阿里数据库专家总结的MySQL里的各种锁(下篇)

    在上篇中,我们介绍了MySQL中的全局锁和表锁. 今天,我们专注于介绍一下行锁,这个在日常开发和面试中常常困扰我们的问题. 1.行锁基础 由于全局锁和表锁对增删改查的性能都会有较大影响,所以,我们自然 ...

  6. MySQL的死锁系列- 锁的类型以及加锁原理

    疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发现了死锁现象: ERROR 1213 (40001): De ...

  7. MySQL的事务与锁 转

    资料来源: 青山老师的mysql课程 丁奇老师的<MySQL45讲> 一.文章结构和思路 1.整体文章结构 2.大概思路 介绍数据库的特性: 数据库标准所制定的隔离级别和解决对应的一致性问 ...

  8. (转)MySQL配置文件mysql.ini参数详解、MySQL性能优化

    本文转自:http://www.cr173.com/html/18331_1.html my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数 ...

  9. MySQL配置文件mysql.ini参数详解、MySQL性能优化

    my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section.  ...

随机推荐

  1. win7下cmd常用命令

    当在win7下执行命令出现右图状况 状况下可以采用鼠标放在指定的文件夹然后按shilt+鼠标右键可以出现下图的界面直接在此处打开cmd

  2. django一些操作命令

    1.数据库与class类同步命令 syncdb command is deprecated in django 1.7. Use the python manage.py migrate instea ...

  3. Android基础学习第二篇—Activity

    写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...

  4. jq 模板

    菜鸟教程1.4.6版本angularJS <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js ...

  5. [OPENCV] 第一个程序 识别颜色

    它可以鉴别出图像中含有给定颜色的所有像素,该算法输入的是图像以及颜色,并返回表示含有指定颜色的像素的二值图像.该算法还需要指定另外一个参数,即对颜色偏差的容忍度. 实现效果 实现后 #include ...

  6. 【干货】jsMind思维导图整合Easyui的右键菜单

    原材料: 1.web版本的JavaScript思维导图(BSD开源协议)[戳这里去官网]. 2.easyui最新版[戳这里去官网]. 这里是原本的jsMind: 在线测试地址 :http://hizz ...

  7. C#: using JsonReader avoid Deserialize Json to dynamic

    namespace Test { using Microshaoft; using Test.Models; using Newtonsoft.Json; using System; using Sy ...

  8. Tray - a SharedPreferences replacement for Android

    一个代替SharedPreferences的开源库, no Editor, no commit() no apply(),因此不存在UI卡顿现象,并且支持多线程,在一个线程中存另一个线程中取数据. h ...

  9. Android 延时执行任务的三种简单方法

    开启一个新的线程 new Thread() { @Override public void run() { try { Thread.sleep(2000); } catch (Interrupted ...

  10. jquery 回车事件

    简单地记下jquery实现回车事件,代码如下: 全局: $(document).keydown(function(e){ if(e.keyCode==13){ $(".login-li in ...