MySqls事务

什么是事务?

事务(transaction)是作为一个单元的一组有序的数据库操作。

事务的特性(ACID)

原子性(Atomicity):原子性是指事务是不可分割的工作单位,要么都发生,要么都不发生;
一致性(Consistency):事务前后的数据的完整性要一致;
隔离性(Isolation):事物的隔离性是防止多个用户并发访问数据库,数据库给每个用户都开启的事务,不能给其他的事务的操作数据干扰了,多个并发事务质检互相隔离;
持久性(Durability):持久性是指事务一旦被提交,他对数据库的数据是不可变的,即便数据库故障也不会有影响;

并发事务带来的问题

1.脏读(Dirty read):一个事务调用另一个未提交的事务;
2.丢失修改(Lost to modify):指在一个事务读取一个数据时,另外一个事务也访问了该数据,那么在第一个事务中修改了这个数据后,第二个事务也修改了这个数据。这样第一个事务内的修改结果就被丢失,因此称为丢失修改。
3.不可重复度(Unrepeatableread):一个事务多次读取到的数据不同。
4.幻读(Phantom read): 幻读与不可重复读类似。它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。

不可重复度和幻读区别:
不可重复读的重点是修改,幻读的重点在于新增或者删除。

事务的隔离级别

① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
② Repeatable read (可重复读):可避免脏读、不可重复读的发生。
③ Read committed (读已提交):可避免脏读的发生。
④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。

MySQL InnoDB 存储引擎的默认支持的隔离级别是 REPEATABLE-READ(可重读)。
【mysql基本架构】(https://snailclimb.gitee.io/javaguide/#/docs/database/%E4%B8%80%E6%9D%A1sql%E8%AF%AD%E5%8F%A5%E5%9C%A8mysql%E4%B8%AD%E5%A6%82%E4%BD%95%E6%89%A7%E8%A1%8C%E7%9A%84?id=_11-mysql-%e5%9f%ba%e6%9c%ac%e6%9e%b6%e6%9e%84%e6%a6%82%e8%a7%88)

你可能感兴趣的:(MySqls事务)