欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Sqlserver事务隔离级别详解

程序员文章站 2023-04-05 22:09:29
sqlserver存储方式 页 sqlserver是以页的形式存储数据,每个数据页的大小为8KB,sqlserver会把空间分为多个页,sqlserver与数据交互单位最小的io操作就是页级别。(页的类型有数据页,索引页等) 区 八个连续的页会组合成一个区,区的最少是由八个连续的页组成。 事务隔离级 ......

sqlserver存储方式

          页   

        sqlserver是以页的形式存储数据,每个数据页的大小为8kb,sqlserver会把空间分为多个页,sqlserver与数据交互单位最小的io操作就是页级别。(页的类型有数据页,索引页等

           区

          八个连续的页会组合成一个区,区的最少是由八个连续的页组成。

      

事务隔离级别

       1.read uncommitted  允许所有脏读,不可重复读和幻读

       2.read committed       不允许脏读,但允许不可重复读和幻读

       3.repeatable read     不允许脏读、不可重复读,但允许幻读

       4.serializable              事务串行化

事务并发引发的问题

  1.脏读

     例如当事务a对订单剩余量(100个)做了修改(减去1个),此时事务b进行获取到的订单剩余量是(99个),事务a此时又对该订单进行了回滚,那么事务b刚才获取到的订单剩余量(99个)就是属于脏读。

  2.幻读

    幻读主要是在数据删除和添加的时候引发的问题,例如事务a获取订单表总记录数为(10条),此时事务b删除了一条记录(9条),那么事务a再次去获取订表数据的时候就会发现只剩下(9条)数据,这种操作对于事务a来说就相当于出现幻觉。

  3.不可重复读

   跟幻读的区别是幻读针对的是删除和添加的动作,不可重复读一般针对修改,例如事务a获取订单剩余量为(10个),此时事务b对订单做了修改去掉1个(剩余9个),事务a再次获取的时候就是(9条),事务a前后两次读取数据值不一样。

 4.丢失更新

   事务a获取订单剩余量为(10个),此时事务b也同步获取到订单剩余量为(10个),事务a修改订单剩余量-1,此时订单剩余量为(9个),并且提交事务,事务b修改订单剩余量-1,此时订单剩余量为(9个),也提交事务,此时订单剩余量应该为(8个)的但是实际剩余量确实(9个

1.脏读

Sqlserver事务隔离级别详解

 

2.不可重复读

Sqlserver事务隔离级别详解

3.幻读

Sqlserver事务隔离级别详解

 

4.丢失更新

Sqlserver事务隔离级别详解