1. 数据库表锁定原理

1.1 目前的C/S,B/S结构都是多用户访问数据库,每个时间点会有成千上万个user来访问DB,其中也会同时存取同一份数据,会造成数据的不一致性或者读脏数据.

1.2 事务的ACID原则

1.3 锁是关系数据库很重要的一部分, 数据库必须有锁的机制来确保数据的完整和一致性.

1.3.1 SQL Server中可以锁定的资源:

1.3.2 锁的粒度:

1.3.3 锁的升级:

锁的升级门限以及锁升级是由系统自动来确定的,不需要用户设置.

1.3.4 锁的类型:

(1) 共享锁:

共享锁用于所有的只读数据操作.

(2) 修改锁:

修改锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象

(3) 独占锁:

独占锁是为修改数据而保留的。它所锁定的资源,其他事务不能读取也不能修改。独占锁不能和其他锁兼容。

(4) 架构锁

结构锁分为结构修改锁(Sch-M)和结构稳定锁(Sch-S)。执行表定义语言操作时,SQL Server采用Sch-M锁,编译查询时,SQL Server采用Sch-S锁。

(5) 意向锁

意向锁说明SQL Server有在资源的低层获得共享锁或独占锁的意向。

(6) 批量修改锁

批量复制数据时使用批量修改锁

1.3.4 SQL Server锁类型   

(1) HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁。   

(2) NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELECT语句。   

(3) PAGLOCK:指定添加页锁(否则通常可能添加表锁)。    

(4) READCOMMITTED用与运行在提交读隔离级别的事务相同的锁语义执行扫描。默认情况下,SQL Server 2000 在此隔离级别上操作。

(5) READPAST: 跳过已经加锁的数据行,这个选项将使事务读取数据时跳过那些已经被其他事务锁定的数据行,而不是阻塞直到其他事务释放锁,

READPAST仅仅应用于READ COMMITTED隔离性级别下事务操作中的SELECT语句操作。    

(6) READUNCOMMITTED:等同于NOLOCK。    

(7) REPEATABLEREAD:设置事务为可重复读隔离性级别。    

(8) ROWLOCK:使用行级锁,而不使用粒度更粗的页级锁和表级锁。     

(9) SERIALIZABLE:用与运行在可串行读隔离级别的事务相同的锁语义执行扫描。等同于 HOLDLOCK。    

(10) TABLOCK:指定使用表级锁,而不是使用行级或页面级的锁,SQL Server在该语句执行完后释放这个锁,而如果同时指定了HOLDLOCK,该锁一直保持到这个事务结束。     (11) TABLOCKX:指定在表上使用排它锁,这个锁可以阻止其他事务读或更新这个表的数据,直到这个语句或整个事务结束。    

(12) UPDLOCK :指定在 读表中数据时设置更新 锁(update lock)而不是设置共享锁,该锁一直保持到这个语句或整个事务结束,使用UPDLOCK的作用是允许用户先读取数据(而且不阻塞其他用户读数据),并且保证在后来再更新数据时,这一段时间内这些数据没有被其他用户修改。

(本段摘自CSDN博客: http://blog.csdn.net/zp752963831/archive/2009/02/18/3906477.aspx)

2. 如何解除表的锁定,解锁就是要终止锁定的那个链接,或者等待该链接事务释放.

2.1 Activity Monitor

可以通过Wait Type, Blocked By栏位查看到,SPID 54 被SPID 53 阻塞. 可以右键Details查到详细的SQL 语句,或Kill掉这个进程.

2.2 SQL Server提供几个DMV,查看locks

sys.dm_exec_requests

sys.dm_tran_locks

sys.dm_os_waiting_tasks

sys.dm_tran_database_transactions

(1)

select * from sys.dm_tran_locks where resource_type<>'DATABASE' --and resource_database_id=DB_ID()

(2)

SELECT session_id, blocking_session_id,*
FROM sys.dm_exec_requests
WHERE blocking_session_id > 0

(3)

代码

原文地址:http://www.cnblogs.com/changbluesky/archive/2010/06/10/1753021.htm

本文转自温景良(Jason)博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2010/07/15/1777787.html,如需转载请自行联系原作者

SQL Server数据库表锁定原理以及如何解除表的锁定转相关推荐

  1. SQL Server数据库表锁定原理以及如何解除表的锁定

    1. 数据库表锁定原理 1.1 目前的C/S,B/S结构都是多用户访问数据库,每个时间点会有成千上万个user来访问DB,其中也会同时存取同一份数据,会造成数据的不一致性或者读脏数据. 1.2 事务的 ...

  2. 批量比对 mysql 字段_MS SQL Server数据库两个库之间相同数据表名内容批量对比方法...

    上一篇"导出记录数量对比-软件测试方法(一)",主要介绍数据导出结果记录数量和原始正常好库的记录数量精确对比,测试软件导出少数据的相关bug. 本文测试方法旨在更精确比对表记录内部 ...

  3. SQL Server 数据库之导入导出数据

    导入导出数据 1. 概述 2. 导入 SQL Server 数据表 3. 导入其他数据源的数据 4. 导出 SQL Server 数据表 1. 概述 导入数据也是数据库操作中使用频繁的功能,SQL S ...

  4. sql server数据库 T-SQL查询语句(基本篇)

    接上篇sql server 数据库增删改查(库与表) 删除数据 delete 表名 where 查询条件 T-sql查询语句 T-sql语句 增强版的sql语句,增加了更多的函数应用,流程控制,变量说 ...

  5. Django连接使用SQL Server数据库(windows版)

    2019独角兽企业重金招聘Python工程师标准>>> 前言: 众所周知,Django 默认支持sqlite,mysql,oracle,postgresql数据库,不支持SQL Se ...

  6. MS SQL Server数据库原理

    MS SQL Server数据库原理 一. 数据库基本概念 数据库系统(DBS):采用数据库技术的计算机系统,由数据库(数据).数据库管理系统(软件).数据库管理员(人员).硬件平台(硬件)和软件平台 ...

  7. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

  8. SQL Server 数据库原理与应用

    1. 数据库概述 名词解释: DB:数据库 DBMS:数据库管理系统 DBS:数据库系统 DBA:数据库管理员 DBAS:数据库应用系统 数据管理的三个阶段:人工管理.文件系统阶段.数据库系统阶段. ...

  9. 利用T-SQL动态定义重复SQL Server数据库表行

    介绍 (Introduction) Lever T-SQL to handle duplicate rows in SQL Server database tables article highlig ...

最新文章

  1. SpringBoot 接口幂等性的实现方案
  2. 清华构建新一代数据集NICO,定义图像分类新标准
  3. jquery生成一个li_JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
  4. jmeter中控制器其中一个访问不到_Jmeter体系结构和运行原理
  5. Shell脚本中的函数、数组
  6. Linux 内存管理 | 地址映射:分段、分页、段页
  7. MYSQL数据库应用优化
  8. 特征工程之数据预处理(上)
  9. 我的职业生涯规划学习日记(软件工程)整理时间线
  10. 97.用好浏览器的缓存
  11. [论文评析] ArXiv,2021, Focal Self Attention技术分析
  12. 云计算与大数据技术应用 第四章
  13. mindoc mysql_MinDoc 配置文件详解
  14. Baby-step giant-step算法
  15. 投影仪与电视的C位之争,电视会成为下一个被淘汰的电器吗?
  16. linux中的页缓存和文件IO
  17. 全国青少年编程等级考试python一级真题2020年12月(含题库答题软件账号)
  18. iOS的电量测试(Sysdiagnose)
  19. ES6 — ES11 新特性一篇通
  20. 苦练基本功-计算机网络基础-TCP建立连接

热门文章

  1. 鸟哥的Linux私房菜(服务器)- 簡易 Cluster 架設
  2. 2015 SegmentFault 黑客马拉松记录
  3. Machine Learning week 6 quiz: Machine Learning System Design
  4. 《大话数据结构》第9章 排序 9.8 归并排序(上)
  5. Redis的搭建和Redis的集群搭建
  6. WPF#39;s Style BasedOn
  7. Crash/Instance Recovery与Media Recovery的本质区别
  8. MariaDB安装,Apache安装
  9. python matplotlib模块——绘制三维图形、三维数据散点图
  10. 2016年,新的开始