JavaWeb入门(四):JDBC之事务
一、什么是事务
事务(transaction):是数据库操作的最小工作单位,是作为单个逻辑工作单元执行的一系列操作。这些操作作为一个整体向系统提交,要么都执行,要么都不执行。简单的来说事务是一组不可分割的操作集合。
二、事务的四个特性
-
-
一致性(Consistency):一个事务执行前和执行后都必须处于一致性状态,强调的是事务的执行前后,数据的完整性要保持一致。拿转账来说,假设A用户和B用户两个人的钱加起来是10000,那么不管A和B之间如何转账,转几次账,事务结束后两个人的钱加起来应该还得是10000,这是事务的一致性
-
隔离性(Isolation):一个事务执行不应受到其它事务干扰(一个事务未提交的业务结果是否对其它事务可见)
-
持久性(Durability):事务一旦结束(提交/回滚),数据就持久保存到了数据库,一个事务一旦被提交了,那么对数据库的改变就是永久性的,即使在数据库故障的情况下也不会丢失提交的结果
三、数据库的隔离级别
数据库的隔离级别有4个,由低到高依次是:Read uncommited、Read commited、Repeatable read、Serializable
四、数据库的隔离级别和几种读问题
-
重复读:一个事务读到了另外一个事务已经提交的update的数据,导致在当前事务中多次查询结果不一致。一个事务先后两次读取同一条数据,而事务在这两次读取数据之间 该数据被其它事务修改,则两次读取的数据不同,我们称为不可重复读。
-
幻读(虚读):一个事务读取到另一个事务已经提交的insert的数据,导致在当前事务中多次查询的结果不一致,一般解决幻读的方法是增加范围锁RangeS,锁定检索范围为只读,这样就避免了幻读
转载请注明出处:https:////www.cnblogs.com/Infancy/p/12510622.html