事务:
事务的四个性值:ACID(原子性,一致性,隔离性和持久性)
1、原子性:事务中包含有很多操作,这些操作要么全部执行,要么全部不执行,所以支持回滚操作。
2、一致性:系统从一种一致性到另一种一致性状态。事物的一致性决定了一个系统设计和实现的复杂度。事务可以具有不同程度的一致性。
强一致性:读操作可以立即读到操作的更新操作。
弱一致性:提交的更新操作不一定立即会被读操作读到,这种情况会存在一个不一致窗口,指的是读操作可以读到最新值的一段时间。
最终一致性:(弱一致性的一种特殊情况)最终所有的事务都会读到之前事务更新的最新值。
3、隔离性:有下面四种隔离性。
4、持久性:事务的操作对数据库的影响时持久的。
四大隔离级别:
1.read-uncommitted 读未提交:
读未提交也称之为脏读,就是事务可以读取其他事务未提交的数据,该隔离级别很少用于实际应用,因为它的性能不比其他级别好多少。
2.read-committed 读已提交:
在其他数据库系统如SQL Server默认的隔离级别就是就是读已提交,读已提交隔离级别就是在事务未提交之前所做的修改其他事务是不可见的。
3.repeatable-read 可重复读:
保证同一个事务中的多次相同的查询结果是一致的,比如一个事务一开始查询了一条记录,过几秒后又执行了相同的查询,保证两次查询的结果是相同的,可重复读也是MySQL的默认隔离级别。
4.serializable 可串行化:
这是最高的隔离级别,保证读取的范围内没有新的数据插入,比如一个事务第一次查询得到某个范围的数据,第二次查询也得到了相同范围的数据,中间没有新的数据插入到该范围中。