事务处理 - 关于MySQL事务的一些理解和疑惑,求大神指点

查看:112
本文介绍了事务处理 - 关于MySQL事务的一些理解和疑惑,求大神指点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

最近由于业务需要在了解MySQL事务这一方面的知识,看了很多资料和别人发的帖子,有些收获也有一些疑惑。
收集到的信息:

    1. 在MySQL事务的四个隔离级别的介绍里说:四种隔离级别采取不同的锁类型来实现。但只有最高级别(Serializable(可串行化))明确介绍使用到了共享锁(每个读的数据行上加上共享锁,来解决幻读问题),应该也使用到了其他锁,具体的有待深入研究。其他三个级别个人猜测应该是在commit提交的时候,MySQL根据执行的sql语句自动分配锁类型(行锁,表锁)。

  • 2.用索引字段做为条件进行修改时, 是否表锁的取决于这个索引字段能否确定记录唯一,当索引值对应记录不唯一,会进行锁表,相反则行锁

  • 3.同一个表,如果进行删除操作时,尽量让删除条件统一,否则会相互影响造成锁表

我的问题是:

  1. MySQL默认的隔离级别(Repeatable Read(可重读)),是在什么时候加锁的?事务开始的时候还是commit的时候?什么时候释放锁呢?

  2. 一个事务里如果处理的数据比较多时会不会造成阻塞?

解决方案

1、事务里什么时候加锁应该是数据库实现的,不需要管,commit的时候肯定会释放锁,使用的时候你只需要知道一定的隔离界别下,并发情况什么时候会等待其他事务commit就可以了。
2、多个事务同时执行的话,操作的数据越多越有可能阻塞吧。

这篇关于事务处理 - 关于MySQL事务的一些理解和疑惑,求大神指点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆