zoukankan      html  css  js  c++  java
  • SQL Server 之 锁

    锁,是由锁管理器负责维护,其目的是保证事务的ACID,是平衡并发和数据安全的机制。

    锁定粒度与并发性是成反比的,默认情况下,SQL Server Compact 4.0 对数据页使用行级锁定,对索引页使用页级锁定。

    每次会话的锁数是有限的,当事务超出其升级阈值时,Microsoft SQL Server Compact 4.0 自动将行锁和页锁升级为表锁,从而利用锁升级减少系统开销。

    可以通过设置锁升级阈值来控制每个会话的锁升级:SET LOCK_ESCALATION 1000;

    此设置影响数据库中的所有表,默认值为 100。

    注意锁升级会影响数据的访问。

       每次数据访问,都必须建立在一个事务上,要么成功,要么失败。

     请求的锁定模式及其与现有锁定模式的兼容性:

    --排它锁
    begin tran
    update users set sex='1' where ID='1'
    waitfor delay '00:00:10'
    commit tran
    begin tran
    select * from uses where ID='1'
    commit tran

    --共享锁
    begin tran
    select * from users(holdlock) where ID='1'
    waitfor delay '00:00:10'
    commit tran
    begin tran
    select * from users where ID='1'
    update uses set sex='2' where ID='1'
    commit tran

    有关语句:

    select * from sys.dm_os_waiting_tasks
    select * from sys.dm_tran_locks

    alter table tablename set (lock_escalation = auto|table|disable)

    SELECT @@LOCK_TIMEOUT --   -1: 无限制时间等待锁

    SET LOCK_TIMEOUT 60000 --     1 分钟

  • 相关阅读:
    HDOJ 1241 Oil Deposits【最大连通块 dfs】
    POJ 3984 迷宫问题【迷宫最短路径 bfs】
    封装
    继承的另一种使用方式。。。
    类的绑定方法与继承
    XML模块与类的定义
    常用模块三
    python day19
    常用模块与项目目录规范
    python day17
  • 原文地址:https://www.cnblogs.com/yipeng-yu/p/3825425.html
Copyright © 2011-2022 走看看