数据库事务并发问题----各种事务隔离下的情况

目录

一、读未提交下的脏读

二、读已提交下的不可重复读

三、可重复读的避免了不可重复读等所有问题

四、并发修改同一个数据下的排队

 

 


一、读未提交下的脏读

  • 设置当前会话的隔离级别:

  

 set session transaction isolation level read uncommitted;

  

数据库事务并发问题----各种事务隔离下的情况_第1张图片

出现脏读问题,读到了脏数据。

 


二、读已提交下的不可重复读

 set session transaction isolation level read committed;

数据库事务并发问题----各种事务隔离下的情况_第2张图片

读已提交下,没有脏读问题了,但是,同一事务期间并没有保证前后读取的数据是一致的,出现了不可重复读问题。

 


三、可重复读的避免了不可重复读等所有问题

数据库事务并发问题----各种事务隔离下的情况_第3张图片

可重复读的情况下,只要在同一件事务期间,第一次读取是什么样子,以后就是什么,即使外界的数据都没了,也还能读到(快照读

 


四、并发修改同一个数据下的排队

等多事务同时修改数据

数据库事务并发问题----各种事务隔离下的情况_第4张图片

事务A先修改数据,但未提交,这时,事务B再次修改同一条数据,他并不会立刻执行,而是阻塞住,等待事务A提交后,才会执行。

 


 

 

 

 

 

 

 

你可能感兴趣的:(数据库,数据库)