1.事务并发处理可能存在的三种异常有哪些?什么时脏读、不可重复读和幻读?
(1)脏读,小张访问数据库,进行事务操作,新增了一条数据,还没来得急提交,这时候小李对数据库进行了访问,读到了小张还没有来得急提交的数据。也就是读到了其他事务还没有提交的数据
(2)不可重复读,小张进行一次查询后,小李刚好修改了小张上次查询的数据,小张再次查询的时候发现不一样了,也就是同一条记录,两次读取的结果不同。这是因为有其他事务对这个数据同时进行了修改或删除
(3)幻读,小张查询数据记录,发现有三条数据,小张执行完后,小李又提交了一个事务,小张又一次查询,发现有四条数据。事务A根据条件查询得到了N条数据,但此时事务B更改或者增加了M条符合事务A查询条件的数据,这样当事务A再次进行查询的时候发现会有N+M条数据。
2.针对可能存在的异常情况,四种事务隔离的级别分别是什么?
(1)读未提交:也就是读到未提交的数据,这种情况下不会使用锁,肯能会出现脏读、不可重复读、幻读等情况。
(2)读以提交:只能读到已经提交的内容
(3)可重复读:保证一个事务在相同查询条件下两次查询得到的数据结果是一致的。MySQL默认的隔离级别就是可重复读。
(4)可串行化:将事务进行串行化,也就是在一个队列中按照顺序执行,可串行化是最高隔离级别,可以解决事务读取中所有可能出现的异常情况,但是它牺牲了系统的并发性。
事务隔离
最新推荐文章于 2023-12-25 08:55:03 发布