1. 什么是事务?
事务是一组操作的集合,他是一个不可分割的工作单位,事务会把所有的操作当作一个整体一起像系统进行提交或者撤销操作请求,即这些操作要么同时成功,要么同时失败。
2.事务的特性?
MySQL事务具有ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这些特性保证了事务的可靠性和一致性。
原子性(Atomicity):事务时不可分割的最小单元,要么全部成功,要么全部失败。
一致性(Consistency):事务完成时,必须所有的数据都保存一致的状态。
隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境运行。
持久性(Durability):事务一旦提交或者回滚,他对数据库中的数据时永久改变。
3. 事务的隔离级别?
并发事务问题:
- 脏读:一个事务读取到另外一个事务未提交的数据。
- 幻读:一个事务先后读取同一条数据,但是两次读取的数据不一致。
- 不可重复读: 一个事务按条件查询数据时,没有对应的数据行,但是在插入数据时,又发现了这条数据已经存在,出现了”幻影“。
解决事务并发问题:对事物进行隔离
- 读未提交:不能解决脏读、不可重复读、幻读。
- 读已提交:能解决脏读,不能解决不可重复读、幻读。
- 可重复度:能解决脏读、不可重复读,不能解决幻读。mysql默认隔离级别。
- 串行化:能解决脏读、不可重复读、幻读,性能较低。
注:事务隔离级别越高,数据越安全,但是性能越低。