1. 什么是数据库的事务?
事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
从这条定义中我们知道,第一个就是这个最小的一个工作单元,不可分割。第二就是它包含一系列的操作,增删改查。当然,单条的SQL也是有事务的!
最常见的例子就是,转账!小明给小红转100块,转账的过程中涉及到一系列的操作,小明的账户要先进行查询,然后减100块,更新余额。然后小红的账户要加100,在更新余额。这一系列的操作是一体的。不可分割的!
2. 在MySQL中哪些存储引擎支持事务
查看MySQL官方文档我们知道Innodb是支持事务的,还有一个就是NDB.
3. 事务的四大特性
- A:原子性,Atomicity,我们对数据库的一系列操作,要么都成功要么都失败。不能出现部分成功或者部分失败的情况。
- C:一致性,Consistency,事务执行的前后都是合法的数据状态。
- I:隔离性,Isolation,数据库中会有很多的事务同时去操作同一张表或者同一行数据,他们之间是相互隔离的,互不干扰的。
- D:持久性,Durable,对数据库任务的操作,增删改,当事务提交后,结果是永久性的。
4. 事务并发会带来什么样的问题?
- 脏读:一个事务读到其他事务没有提交的数据
- 不可重复读:一个事务读到其他事务已经提交的数据
- 幻读:一个事务读到其他事务插入的数据