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 分钟

  • 相关阅读:
    PHP 指定的 CGI 应用程序由于未返回完整的一组 HTTP 头而产生错误行为。
    BPM触发事件
    封装继承多态到底讲的是什么
    .Net 为什么叫.Net 转载自 jerrylsxu 的博客
    C# 琐碎记忆 Message
    SQL Case
    C# 命名规范(部分)
    C# 反射
    C# 日志 log 配置文件
    C# 琐碎记忆 三元表达式
  • 原文地址:https://www.cnblogs.com/yipeng-yu/p/3825425.html
Copyright © 2011-2022 走看看