了解数据库事务吗?讲一下数据库隔离级别?数据库事务有哪些特性?
1、数据库事务有哪些特性?
ACID可能你们都不会陌生,而ACID就是数据库事务能够做的东西
- A Atomicity 原子性
- C Consistency 一致性
- I Isolation 隔离性
- D Durability 持久性
我们分别讲一下,ACID分别代表什么?
- A Atomicity 原子性
原子性代表的就是,在一个事务内,要么操作全部成功,要么失败全部回滚 - C Consistency 一致性
拿银行转账做例子,加入A有100块钱,B没有钱,AB之间转账,不管怎么转,AB钱的总和一定是100 - I Isolation 隔离性
在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。 - D Durability 持久性
只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。
2、数据库可能存在的问题
- 脏读
脏读即为事务1第二次读取时,读到了事务2未提交的数据。若事务2回滚,则事务1第二次读取时,读到了脏数据。
- 不可重复读
不可重复读与脏读逻辑类似。主要在于事务2在事务1第二次读取时,提交了数据。导致事务1前后两次读取的数据不一致。针对同一行数据。
- 幻读
一个事务读取到了另一个事务提交的新插入的数据
3、不可重复读和幻读的区别
不可重复读重点在于update和delete,而幻读的重点在于insert。
4、事务的隔离级别
1、读未提交
2、读已提交
3、可重复读
4、序列化
5、MySQL数据库默认事务隔离级别
REPEATABLE-READ – 可重复读!!