事务 事务具有原子性,一个事务中的一系列操作要么全部成功(事务提交),要么一个不做(回滚)。
事务的ACID特征
原子性(Aomicity):事务中的各项操作要么都做,要么都不做。 一致性(Consistency):事务的执行结果必须是使数据库从一个一致性状态到另一个一致性状态。 隔离性(Isolation):一个事务的执行对其他并发事务是隔离的,不能互相干扰。 持续性(Durability):永久性,一个事务一旦提交,它对数据库的数据的改变就会是永久性的,接下来的其他操作或故障对其执行的结果没有任何影响。
隔离级别
Read Uncommitted(读取未提交内容) 所有事务都可以看到其他未提交事务的执行结果,少用。读取未提交的数据集会产生 脏读。Read committed(读取提交内容) 一个事务只能看见已经提交事务的改变。支持不可重复读,因为同一事务的其他实例在该实例处理的期间可能会有新的commit,所以同一select可能返回不同的结果。Repeatable Read(可重读) MySQL默认事务隔离级别,确保在同一事务的多个实例在并发读取数据时,会看到同样的数据。但可能会产生 幻读。Serializable(可序列化) 最高的隔离级别,通过强制事务的排列(每个读的数据行上加上共享锁),使事务不可能相互冲突,从而解决幻读问题。但可能导致大量的超时现象和锁竞争。