什么是事务?
指作为单个逻辑单元执行的一系列操作,要么完成执行,要么完全不执行。(事务就是并发控制的单位,是用户定义的操作序列。)
事务的属性
- 原子性 ,事务中的操作要么都不做,要么就全做;
- 一致性 ,事务执行的结果必须是从数据库一个一致性状态转换到另一个一致性状态;
- 隔离性 ,一个事务的执行不能被其他事务干扰;
- 隔离性 ,一个事务一旦提交,它对数据库中数据的改变就应当是永久的;
事务的隔离级别
- 读未提交(Read Uncommitted) ,引发脏读(读取了未提交的数据);
- 读已提交(Read Committed) ,是大多数数据库系统默认的隔离级别,但不是MySQL默认的,只能看见已经提交事务所做的改变;
- 可重复读 (Repeatable Read),是MySQL的默认事务隔离级别,可以确保同一事务的多个实例在并发读取数据时,看到同样的数据行,可能会出现幻读;
- 可串行化(Serializable) ,是最高的隔离级别,通过强制事务排序,使其不可能相互冲突,从而解决幻读问题,但是可能会导致大量的超时现象和锁竞争;