zoukankan      html  css  js  c++  java
  • SQL Server 几种锁的区别

    NOLOCK(不加锁)    
    此选项被选中时,SQL  Server  在读取或修改数据时不加任何锁。  在这种情况下,用户有可能读取到未完成事务(Uncommited  Transaction)或回滚(Roll  Back)中的数据,  即所谓的“脏数据”。    
            
    HOLDLOCK(保持锁)    
    此选项被选中时,SQL  Server  会将此共享锁保持至整个事务结束,而不会在途中释放。    例如,“ SELECT * FROM my_table HOLDLOCK”就要求在整个查询过程中,保持对表的锁定,直到查询完成才释放锁定。
            
    UPDLOCK(修改锁)    
    此选项被选中时,SQL  Server  在读取数据时使用修改锁来代替共享锁,并将此锁保持至整个事务或命令结束。使用此选项能够保证多个进程能同时读取数据但只有该进程能修改数据。    
            
    TABLOCK(表锁)    
    此选项被选中时,SQL  Server  将在整个表上置共享锁直至该命令结束。  这个选项保证其他进程只能读取而不能修改数据。    
            
    PAGLOCK(页锁)    
    此选项为默认选项,  当被选中时,SQL  Server  使用共享页锁。    
            
    TABLOCKX(排它表锁)    
    此选项被选中时,SQL  Server  将在整个表上置排它锁直至该命令或事务结束。这将防止其他进程读取或修改表中的数据。

    锁冲突及其防止办法 


    在数据库系统中,死锁是指多个用户(进程)分别锁定了一个资源,并又试图请求锁定对方已经锁定的资源,这就产生了一个锁定请求环,导致多个用户(进程)都处于等待对方释放所锁定资源的状态。 

    在SQL Server中,系统能够自动定期搜索和处理死锁问题。系统在每次搜索中标识所有等待锁定请求的进程会话,如果在下一次搜索中该被标识的进程仍处于等待状态,SQL Server就开始递归死锁搜索。

  • 相关阅读:
    【基于初学者】SSH+Maven实现Excel导出功能
    【基于初学者】IDEA中Git的使用
    【基于初学者】通过eclipse工具如何创建Spring Boot工程
    【基于初学者】基于ssm框架实现不同用户显示不同的菜单模块
    【基于初学者】Struts框架
    【基于初学者】Maven相关配置和创建
    树莓派2+无线网卡=钓鱼热点
    mockjs 项目实战踩坑
    上传文件 上传图片 源码跟思路
    css 浮动及清除浮动 详细讲解
  • 原文地址:https://www.cnblogs.com/tearer/p/3208445.html
Copyright © 2011-2022 走看看