一 数据库的四大特性:
1.原子性:指事务所包含的操作要么全部成功,要么全部失败回滚。
2.一致性:指事务执行之前和执行之后都必须处于一致性状态。
比如A账户和B账户加起来总共100快,那么不管AB之间如何转帐,AB加起来还的是100块,这就是事务的一致性。
3.隔离性:指多个用户并发访问数据库时,数据库为每个用户开启的事务不能被其他事务所干扰,多个并发事务要相互隔离。
4.持久性:指一个事务一旦提交了,那么对数据库中数据的改变就是永久的,即使数据库发生故障,也不会丢失提交事务的操作。
二:事务的隔离级别:
当多个线程都开启事务操作数据库中的数据时,数据库要进行隔离操作,以保证各个线程获取数据的准确性。
首先我们先了解一下如果不考虑隔离级别会发生什么问题。
1)脏读:是指一个事务处理过程中读取了另一个未提交的事务中的数据。
当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致。例如:用户A向用户B转账100元,对应SQL命令如下
update account set money=money+100 where name=’B’; (此时A通知B)
update account set money=money - 100 where name=’A’;
当只执行第一条SQL时,A通知B查看账户,B发现确实钱已到账(此时即发生了脏读),而之后无论第二条SQL是否执行,只要该事务不提交,则所有操作都将回滚,那么当B以后再次查看账户时就会发现钱其实并没有转。
2)不可重复读:是指一个事务范围内多次查询同一数据却