Mysql事务与锁

2019-01-08  本文已影响0人  spiderM

事务指的是满足ACID特性的一组操作,可以通过Commit提交一个事务,也可以使用Rollback进行回滚。

一、ACID

事务其实就是并发控制的基本单位,数据库事务的ACID四大特性是事务的基础。

二、事务的隔离级别

数据库的一致性和隔离性其实是一个需要开发者去权衡的东西,为数据库提供什么样的隔离性层级就决定了数据库的性能以及可以达到什么样的一致性。SQL标准中定义了四种数据库的事务的隔离级别:

事务隔离级别

三、锁

1.锁的粒度

Mysql提供了两种封锁粒度:行级锁以及表级锁。
应该尽量只锁定需要修改的那部分数据,而不是所有的资源。锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高。

2.锁类型

(1)读写锁

有以下两个规定:

通过引入意向锁,事务 T 想要对表 A 加 X 锁,只需要先检测是否有其它事务对表 A 加了 X/IX/S/IS 锁,如果加了就表示有其它事务正在使用这个表或者表中某一行的锁,因此事务 T 加 X 锁失败。

各种锁的兼容关系如下:


解释如下:

上一篇下一篇

猜你喜欢

热点阅读