首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -事务和锁中的互斥?

MySQL -事务和锁中的互斥?
EN

Stack Overflow用户
提问于 2014-11-17 21:25:34
回答 1查看 1.2K关注 0票数 0

我目前正在学习MySQL的事务和锁特性。

具有隔离级别SERIALIZABLE的事务以及同一表上的LOCKUNLOCK语句之间的语句是否相互排斥?

编辑1:对于具有隔离级别SERIALIZABLE的事务,是否有可能确定事务实际上是互斥的,还是仅仅满足不满足幻影读取之类的需求?或者这两个属性意味着相同的行为?

编辑2:噢,提供给定事务隔离级别的机制是否只有在两个或多个事务对相同的数据实际工作时才是活动的,这样读现象才有可能发生?

EN

回答 1

Stack Overflow用户

发布于 2014-11-18 20:15:29

在InnoDB中,SERIALIZABLE所做的所有工作都是将SELECT转换为隐式SELECT...LOCK IN SHARE MODE。因此,这只会影响针对同一行的INSERT/UPDATE/DELETE。

您可以观察显示引擎INNODB状态中的锁:

代码语言:javascript
复制
---TRANSACTION 14594, ACTIVE 5 sec
2 lock struct(s), heap size 360, 8 row lock(s)
MySQL thread id 24, OS thread handle 0x7f65c8624700, query id 324 192.168.56.1 root cleaning up
TABLE LOCK table `imdb`.`kind_type` trx id 14594 lock mode IS
RECORD LOCKS space id 24 page no 4 n bits 80 index `kind` of table `imdb`.`kind_type` trx id 14594 lock mode S

我所做的就是在设置了tx_isolation=SERIALIZABLE和autcommit=0之后的tx_isolation=SERIALIZABLE。

您可以看到它持有一个IS表锁,这将阻止一个LOCK TABLES kind_type WRITE

但是,如果您正在执行事务自动提交模式,它甚至不会这样做;它的作用就像可重复读取。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26982261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档