zoukankan      html  css  js  c++  java
  • SQL Server 的缩定(Lock)

    Sql Server锁表就限制不同的事物在同一时间内不允许同时操作一张表,实例很简单,可以用select来锁定整张表,那别人就不可能更新或是读取表的记录。

    select*from dbo.Employee with(holdlock);with关键字来设置锁表的方式。

    下面是with括号内关键字的书名:
    NOLOCK(不加锁)
    此选项被选中时,SQL Server在读取或修改数据时不加任何锁。在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Roll Back)中的数据,即所谓的"脏数据"。
    HOLDLOCK(保持锁)
    此选项被选中时,SQL Server会将此共享锁保持至整个事务结束,而不会在途中释放。
    UPDLOCK(修改锁)
    此选项被选中时,SQL Server在读取数据时使用修改锁来代替共享锁,并将此锁保持至整个事务或命令结束。使用此选项能够保证多个进程能同时读取数据但只有该进程能修改数据。
    TABLOCK(表锁)
    此选项被选中时,SQL Server将在整个表上置共享锁直至该命令结束。这个选项保证其他进程只能读取而不能修改数据。
    PAGLOCK(页锁)
    此选项为默认选项,当被选中时,SQL Server使用共享页锁。
    TABLOCKX(排它表锁)
    此选项被选中时,SQL Server将在整个表上置排它锁直至该命令或事务结束。这将防止其他进程读取或修改表中的数据。
    HOLDLOCK持有共享锁,直到整个事务完成,应该在被锁对象不需要时立即释放,等于SERIALIZABLE事务隔离级别
    NOLOCK语句执行时不发出共享锁,允许脏读,等于READ UNCOMMITTED事务隔离级别
     

    对于tabllockx,在事物未提交前,连读取都是阻塞的,直到另一事物提交后才可以读取,这样就保证了数据的一致性。

    有价值的参考

    簡介SQL Server 的鎖定(Lock)

    SQL Server------Lock

    Introduction to Locking in SQL Server

  • 相关阅读:
    【JavaScript】explode动画
    【JavaScript】插件参数的写法
    【webpack】理解配置文件
    你真的了解盒模型么
    一看看懂Protocol Buffer(协议篇)
    es7你都懂了吗?今天带你了解es7的神器decorator
    快速了解react
    简单聊一聊那些svg的沿路径运动
    转转RN工程化历程
    微信小程序内嵌网页的一些(最佳)实践
  • 原文地址:https://www.cnblogs.com/oletan/p/1909307.html
Copyright © 2011-2022 走看看