永发信息网

事务和锁机制是什么关系? 开启事务就自动加锁了吗?

答案:1  悬赏:0  手机版
解决时间 2021-03-26 04:04
事务和锁机制是什么关系? 开启事务就自动加锁了吗?
最佳答案
1、事务与锁是不同的。事务具有ACID(原子性、一致性、隔离性和持久性),锁是用于解决隔离性的一种机制。
2、事务的隔离级别通过锁的机制来实现。另外锁有不同的粒度,同时事务也是有不同的隔离级别的。

3、开启事务就自动加锁。
ql规范定义的事务的隔离级别:
1.READ UNCOMMITTED(读取未提交内容)
所有事务可以看到未提交事务的执行结果,本隔离级别很少用到实际应用中,读取未提交的数据,又称为“脏读”。
2.READ COMMITTED(读取提交内容)
大多数数据库的默认隔离级别是此级别,但不是MySQL默认的。一个事务在开始的时候只能看见已提交事务所做的改变。一个事务从开始到提交前所做的任何改变都是不可见的,除非提交。这种隔离级别也称为不可重复读。
3.REPEATABLE READ(可重复读)
此隔离级别是为了解决可重复读隔离级别导致的问题即一个事务多个实例并发读取数据时会看到不同的结果。此隔离级别不会看到其他事务提交后的结果,即事务即使提交了我也看不到。此级别也称为“幻读”。
4.SERIALIZABLE(可串行化)
可串行化是最高的隔离级别,它通过强制事务排序,使之不可重读,解决了幻读的问题。此隔离级别会在每个读的数据行上加共享锁,使用这种隔离级别会产生大量的超时现象,一般实际开发中不会用到。
mysql加锁机制:
根据类型可分为共享锁(SHARED LOCK)和排他锁(EXCLUSIVE LOCK)或者叫读锁(READ LOCK)和写锁(WRITE LOCK)。
根据粒度划分又分表锁和行锁。表锁由数据库服务器实现,行锁由存储引擎实现。
mysql提供了3种事务型存储引擎,InnDB、NDB Cluster和Falcon。
一个事务执行的任何过程中都可以获得锁,但是只有事务提交或回滚的时候才释放这些锁。这些都是隐式锁定,也可以显式锁定,InnoDB支持显式锁定,例如:
SELECT .... LOCK IN SHARE MODE (加共享锁)
SELECT .....FOR UPDATE(加排他锁)
多版本并发控制(重要):
Mysql的事务存储引擎不是简单实用行加锁机制,而是叫多版本并发控制(MVCC)技术,和行加锁机制关联实用。以便应对更高的并发,当然是以消耗性能作为代价。
每种存储引擎对MVCC的实现方式不同,InnoDB引擎的简单实现方式如下:
InnoDB通过为每个数据航增加两个隐含值的方式来实现。这两个隐含值记录了行的创建时间,以及过期时间。每一行存储事件发生时的系统版本号。每一次开始一个新事务时版本号会自动加1,每个事务都会保存开始时的版本号,每个查询根据事务的版本号来查询结果。
MySQL使用以下几种机制进行隔离性的实现:         a.锁机制             通过使用加锁机制,使用其它事务无法到读某事务末提交前的数据更新,解决脏读问题;             mySQL 有:共享锁,排他锁,根据粒度,有行锁,表锁。         b.MVCC机制:          事务存储引擎使用多版本并发控制(MVCC)技术,和行加锁机制关联使用         MySQL 的InnoDB,XtraDB 引擎通过 使用MVCC 来解决幻读问题。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一样的衣服,为什么网上要比商场便宜
s7插上耳机之后来电声音还是外放怎么破
已有老年公交卡,还可以申请异地老年公交卡吗
联想完全r680g7上4颗cpu可以用一个内存板吗
怎么学新民话
永远等一个不爱我的人,就像在机场等一艘船!
某企业预计下期财务杠杆系数为1.5,假设公司
偷了几百斤铜线过了几年还会被追究吗
招聘佛弟子信佛居士
外墙高9米装什么楼梯好
吉林对瓶老泥窖多少钱?我存十年了!
精致洗车需要多长时间?
求一部西施的电视剧
iPhone没电很快是什么问题?
东序兰草三春劲 北堂萱华满院香什么意思
推荐资讯
她的QQ,问她那人是谁;她回答是,说你不认识
KHANTOK怎么样
根据以下已知条件,利用尺规作图不能作出唯一
今年CJ你印象最深的是什么?
耕的左半边加上娄是什么字
我打老婆电话打了三个月,从来没接过,也不换
为什么好领导往往都是「坏人」
写给知己的藏头诗
煤烟中有臭味是怎么回事
女生5,6岁和6,7岁的男孩上床无痛感,那女生的
同学结婚,带过去的礼金红包,要不要写祝福语
请教各位高手,刚下了TidyPlates插件,求设置
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?