Mysql 事务并发控制
-
事务
-
什么是事务
- 数据库的事务(Transaction)一种机制,一个操作序列,包含了一组数据库操作命令.
即这一组数据库命令要么都执行,要么都不执行,因此事务是一个不饿分割的工作逻辑单元,
执行dml操作的时候(insert delete update)并没有真正的影响到我们表里面的内容,直到提交当前事务;
一个事务的结束就是下一个事务的开始
- 数据库的事务(Transaction)一种机制,一个操作序列,包含了一组数据库操作命令.
-
事物的特性
- 原子性(Actomicty): 一个事务要么全部提交,要么全部回滚
- 一致性(Consistent): 事务回滚/提交前后数据库的属性不会发生改变
- 隔离性(Isolation):多个事物之间不会相互影响
- 持久性(Durable):事务一旦提交数据就会被持久化到物理层 即使系统奔溃数据也不会丢失
-
Mysql并发
-
在单处理机系统中,事务的并行执行实际上是这些并行事务轮流交叉执行,
这种并行执行方式称为交叉并发方式; -
在多处理机系统中,每个处理机可以运行一个事务,多个处理及可以同时运行多个事务,
实现事务真正的并发运行,这种并发执行方式称为同时并发方式; -
并发事务处理能大大增加数据库资源的利用率,提高数据库系统的事务吞吐量,
从而可以支持更多用户,但并发事务处理也会带来一些问题,主要包括:
- 更新丢失(Lost Update):
- 当两个或多个事务选择同一行,然后基于最初选定的值更新该行,
由于每个事务都不知道其他事务的存在,就会发生丢失更新问题,最后的工薪覆盖其他事务锁做的更新;
- 当两个或多个事务选择同一行,然后基于最初选定的值更新该行,
- 脏读(Dirty Reads):
- 另
- 更新丢失(Lost Update):
-
-