事务并发机制

 


1:事务的状态:

 

2:编写事务的时候应该遵循的原则

 

   、(1):   在事务处理期间不要求对用户输入:

 

     (2):    浏览数据时,尽量不打开是事务

 

 

     (3):在所有预备的数据分析之前,不启动事务

 

     (4);必须进行修改时启动事务,执行完成修改操作语句后立即提交或回退:

 

3:并发控制:

   多个用户同时对同一数据对象进行读写操作,这种现象称为并发操作,显然并发操作

可以充分利用系统资源,提高效率,但若对这种并发操作不加以控制,它可能会破坏数据的

一致性

 

 

4。并发的错误情形;

    1:两个事务读写同一数据而出现数据的不一致性错误:

    2:数据丢失更新问题:

    3,脏读:

 

 

5:封锁技术:

   封锁是事务并发控制的主要手段,其作用是在事务T对某一数据对象(例如表)等、

进行操作前,先向系统发出请求,对其加锁,加锁后事务T对该数据对象有一定的控制,在事务

T释放所加的锁之前,其他事务不能更新此数据对象:

 

对锁机制的研究要具备两个条件:
1.数据量大
2.多个用户同时并发
如果缺少这两个条件,数据库不容易产生死锁问题。研 究起来可能会事倍功半。如果这两个条件都有,但你还是按数据库缺省设置来处理数据,则会带来很多的问题,比如:
1)丢失更新
A,B两 个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果
2)脏读
A用户修改了数据时,B用户也在读该数据,但A 用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致
3)不可重复读
B用户读出该数 据并修改,同时,A用户也在读取数据,此时A用户再读取数据时发现前后两次的值不一致
SQL SERVER 作为多用户数据库系统,以事务为单位,使用锁来实现并发控制。SQLSERVER使用“锁”确保事务完整性和数据一致性。

  

 

(1)封锁类型:(查资料)

 

  s锁:  共享性封锁:

  X锁:      排它锁:

 

 

 

例子:

    以下在sql  server  2005中会会话设置了TRACSACTION  ISOLATION   LEVEEL.

对于事务开始后的每个sql语句,系统将所有共享琐一直保持,直到事务结束:

 

 

     use  teaching_mis

 

     go

 

     set  transaction isolation level  repeatable    read;

   go 

      begin transaction;

      go

      select  *  from  course

      go

      select  *  from   students

      go

     commit    transaction:

 

 

(2)

   封锁的相容性及说明:

  

         

    
T1/T2

       
 x

       
s

       
-

  
    
x

       
N

       
N

       
Y

  
    
s

       
N

       
Y

       
Y

  
    
-

       
Y

       
Y

       
Y

  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值