事务:是一个具有明确便捷的,有序的执行过程
事务有4大特性:
原子性:事务是一个完整的个体,不能再次分裂,必须统一成功,或者统一失败
一致性:在同一个事务范围内,必须保证数据的准确性
隔离性:事务和事务之间,是相互隔离的,互不干扰的
持久性:事务一旦被提交,那么结果应该被持久化到硬盘中去,或者是数据库中
一致性,讲究同一事务中,数据的准确性,那么不同事务之间,数据的准确性,数据的准确性,又应该如何控制?
所以我们需要适当的调整事务的隔离级别
事务的隔离级别:
1.可串行化:
该事务隔离级别是最高的,每次只能有一个事务处理同一批数据,该隔离级别,不能保证你得到什么,但是一定能保证你得到你是准确的,但是这种隔离级别,问题在于:一次只能有一个事务处理同一批数据,其他的事务就只能等待处理,系统的访问性能太差。
2.可重复读
可重复读的隔离级别,仅次于可串行化,它允许较多的事务处理同一批数据,但是他会引发一个问题,这个问题,我们称之为‘虚读’或者‘幻读’,比如:你没钱,却想买法拉利,感觉自己有钱
3.读已提交:
读已提交,隔离级别又要低于可重复,他允许的事务也就更多了,造成的问题也就更大了,他的问题,我们称之为:“不可重复读”
比如:A在同一事务中第一次读取的结果,于第二次读取的结果不一样,气原因是在A连续读取数据的期间,B已经将数据做了修改,并做了提交‘不可重复读’比‘虚读’造成的后果更严重,且出现的频率也更高,所以我们更多的选择是,可重复读。
4.读未提交:
这种隔离级别最低,造成的问题也最大,我们把他的问题,称之为‘脏读’,比如:A向某一张表中,插入了一挑数据,但是并未做提交,B将这条数据读走了,并去做相应的业务处理,A由于没做提交,数据最终会被回滚掉,B时机上拿着数据库中,本不存在的数据在完成业务逻辑,这个不存在的数据的读取,就被称之为‘脏读’