事务的概念看上去不难,但是需要注意以下几个点:
1、首先,事务就是要保证一组数据库操作,要么全部成功,要么全部失败;
2、在 MySQL 中,事务支持是在引擎层实现的;
3、并不是所有引擎都支持事务,如 MyISAM 就不支持,InnoDB 就支持;
事务 原子性 一致性 隔离性 持久性
事务隔离级别
- 未提交读(会产生脏读,读到另一个事务未提交的数据)
- 已提交读(会产生不可重复读 有两种情况 :2.1读的事务读到另一修改的事务提交前的数据和提交后的两个数据不一致。2.2在多次读的事务过程中,读到多次(隐式提交 没有加begin 和 commit的事务)修改的最新的数据)
- 可重复读 (一般数据库情况下会出现幻读 但是mysql级别下不会出现幻读,
幻读 一个事务对表进行插入和删除操作,导致另一个事务对同一张表数据在同样条件下多次读取,读到不同的结果 )
可重复读 - 串行化 (系列化情况下解决幻读)读写加锁
事务会产生的问题 脏读 不可重复读 幻读 丢失更新