事务有四大特征:
1.原子性:
事务被当成一个最小的执行单位,运行事务中的某些sql语句单独执行,要么事务中的sql语句全部执行成功,要么全部失败,也就是事务失败。
2.一致性:
事务的执行不能破坏数据库的完整性和一致性
3.持久性:事务一旦提交或者rollback,数据就无法返回,已经被持久的存储在数据库中了
4.隔离性:不同事务之间有隔离性,根据隔离级别的不同,事务与事务之间执行过程中所造成的数据的影响也不同
ps:补充隔离级别的不同,因数据的变化造成事务与事务之间的影响:
(read uncommitted)读未提交:这是一种比较低的隔离级别,会造成脏读,也就是并行运行的事务,一个事务会读取到另一个事务已经修改但未提交的信息
(read committed)读已提交:该事务级别比较安全,事务无法进行脏读,但会出现不可重复读现象,指的是并行运行的两个事务,在其中一个事务多次读取数据的过程中另一个事务对数据进行修改操作,造成数据改变,那么 事务前后获取到的数据是不同的。
(repeatable read)可重复读:两个事务同时对一张表数据进行操作,一个事务开启后,另一个事务不能对表进行修改操作,事务前后读取的数据一致。(还是会产生幻读,不能限制另一个数据库的添加操作)
(serialization)串行化:事务不能并发执行,只能一个接着一个的按队列顺序处理
幻读:事务读取的数据,由于并行的其他事务的添加和删除操作导致,读取的数据和数据库中实际的数据不一致。