14.3.5.1 Interaction of Table Locking and Transactions 表锁和事务的相互作用
LOCK TABLES 和UNLOCK TABLES 交互实用事务如下:
1. LOCK TABLES 不是事务安全的和隐式提交任何活动的事务 在尝试锁定表前
2.UNLOCK TABLES 隐式提交任何活动事务,但是只有如果LOCK TABLES 已经用于获得table locks.
比如, 下面的语句集,UNLOCK TABLES 释放全局锁 但是不会提交事务 因为没有表锁定是生效的。
FLUSH TABLES WITH READ LOCK;
START TRANSACTION;
SELECT ... ;
UNLOCK TABLES;
开始一个事务(例如,START TRANSACTION) 隐式的提交任何当前的事务和释放存在表锁
FLUSH TABLES WITH READ LOCK 需要一个全局的read lock ,不是table locks,
因此它不是服从于相同的行为作为LOCK TABLES 和UNLOCK TABLES 遵守表锁定和隐式提交。
比如, START TRANSACTION 不会释放全局read lock
正确的方式使用LOCK TABLES 和UNLOCK TABLES 在事务表,比如InnoDB 表,
是开始一个事务 设置autocommit = 0(不是START TRANSACTION)跟着lock tables,
不需要调用UNLCOK TABLES 直到你显示的提交事务
SET autocommit=0;
LOCK TABLES t1 WRITE, t2 READ, ...;
... do something with tables t1 and t2 here ...
COMMIT;
UNLOCK TABLES;
当你调用LOCK TABLES时,InnoDB 内部占用它自己的表锁,和MySQL 占用它自己的表锁。
InnoDB 释放它内部表锁 在下次提交时,但是MySQL 释放它的表锁,你需要调用UNLOCK TABLES.
你不能设置autocommit = 1, 因为InnoDB 释放它的内部的table lock 立即在调用LOCK TABLES之后,
deadlocks 可以很轻易的发生。InnoDB 不需要获得内部表锁 如果 autocommit = 1,
ROLLBACK does not release table locks.
14.3.5.1 Interaction of Table Locking and Transactions 表锁和事务的相互作用
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【分子相互作用】基于MATLAB的分子相互作用的表征模型仿真
分子在永不停息地作无规则运动。扩散现象是分子作无规则运动的例证。所谓扩散是指两种不用;当分......
matlab 算法 开发语言 分子相互作用 连线 -
GROMACS计算蛋白-配体相互作用以及力场构建
在此我们还需要准备需要的力场文件,然后利用我们提供的脚本来进行力场的建立。如果此时
gromacs 蛋白 力场 配体 CGenFF -
为什么在线性模型中相互作用的变量要相乘
在这篇文章中,我将解释为什么当建立一个线性模型,我们添加一个x₁₂术语如果我们认为变量x₁和x₂互动和添加交互条款订立原则方法。我假设读
机器学习 线性回归 数学建模 斜率 线性模型 -
InnoDB锁机制(locking)
本文将描述InnoDB用到的锁类型。1)共享和排他锁(Shared and Exclusive Locks)。2)意向锁(Intention Locks)。3)
lock innodb share exclusive itention -
8.11.2 Table Locking Issues 表锁发生
8.11.2 Table Locking I...
存储引擎 mysql 解决方法 ide 创建表