原子性:整个事务中的所有操作要么全部完成,要么全部不完成,不能停滞在中间某个环节
一致性:事务前后数据库的完整性约束没有被破坏
隔离性:多个事务之间是互不干扰的,一个事务不可能看到其它事务中间某一时刻的数据
持久性:事务对数据库的操作更改是持久的,不会被回滚
四种事务隔离级别:
读未提交:读取其他事务没有提交的数据(脏读,幻读,不可重复读,避免了第一类更新丢失)
读已提交:读已提交的数据(出现不可重复读,幻读)
可重复读:同一事务多次读取时能够保证所读取的数据一样,后续读取不能读到另一个事务已经提交的数据(会出现幻读)
串行读取:一个事务接一个事务串行执行
名词解释:
更新丢失:每个事务不知道其它是无的操作,后面的事务对数据做修改导致前面事务所做的数据修改丢失
解决办法:对行加锁,只允许一个更新事务。
脏读:读取到其它事务没有提交的数据
幻读:一个事务对数据库中所有数据做了修改,这时新插入一条数据,并提交,这时在读取一次后面插入的数据被读出,给人感觉有一条数据没有被修改
不可重复的:一个事务多次读取的数据结果不一样
解决办法:只有在事务已提交后才允许读取这条数据则可避免该问题