데이터 베이스 MySQL 튜토리얼 SQL SERVER的锁机制(一)概述(锁的种类与范围)

SQL SERVER的锁机制(一)概述(锁的种类与范围)

Jun 07, 2016 pm 05:44 PM
server 기구 개요 유형 범위

SQL SERVER的锁机制系列: SQL SERVER的锁机制(一)概述(锁的种类与范围) SQL SERVER的锁机制(二)概述(锁的兼容性与可以锁定的资源) SQL SERVER的锁机制(三)概述(锁与事务隔离级别) SQL SERVER的锁机制(四)概述(各种事务隔离级别发生的影响)

SQL SERVER的锁机制系列:

 SQL SERVER的锁机制(一)——概述(锁的种类与范围)

 SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)

 SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)

SQL SERVER的锁机制(四)——概述(各种事务隔离级别发生的影响)

 

 

锁定:通俗的讲就是加锁。锁定是 Microsoft SQL Server 数据库引擎用来同步多个用户同时对同一个数据块的访问的一种机制。

定义:当有事务操作时,香港虚拟主机,数据库引擎会要求不同类型的锁定,如相关数据行、数据页或是整个数据表,当锁定运行时,会阻止其他事务对已经锁定的数据行、数据页或数据表进行操作。只有在当前事务对于自己锁定的资源不在需要时,才会释放其锁定的资源,供其他事务使用。

一、锁的种类与范围(如下表)

锁类型

说明

共享 (S)

用于不更改或不更新数据的读取操作,如 SELECT 语句。

更新 (U)

用于可更新的资源中。 防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。

独占(也可称排他)(X)

意向

架构

大容量更新 (BU)

在向表进行大容量数据复制且指定了 TABLOCK 提示时使用。

键范围

当使用可序列化事务隔离级别时保护查询读取的行的范围。 确保再次运行查询时其他事务无法插入符合可序列化事务的查询的行。

 

 

(一)共享锁

或无法获取,就必须等待别人释放对该记录中某几种与共享锁互斥的锁,才能在设置共享锁之后,获取该条记录。

 

(二)更新锁

更新锁是一种中继锁。当同一项资源从原来的查询操作转换为更新操作时,锁定机制会从共享锁变为更新锁,再进一步变成独占锁。

独占锁(独占锁(独占锁(锁),并且每个事务都等待另一个事务释放共享模式锁,因此发生死锁。

独占锁(锁)。

),一定会先查找记录,在查找的过程中就会对相关的记录放置共享锁,等找到相应的记录之后,SQL SERVER 会先对记录放置更新锁,以避免发生死锁。因为共享锁与更新锁并不互斥,如果两个人同时对同一条记录放置共享锁,先进行更新的人,可以在别人也对同一条记录放置了共享锁时,继续放置更新锁,但因为更新锁互斥,所以当另一个人想再放置更新锁时,将无法设置,而进入停止等待状态。

 

(三)独占锁(也可称为排他锁)

, 语句在执行所需的操作之前首先执行读取操作以获取数据。 因此,需先对所在的资源放置独占锁,以确保以上操作未完成时,香港虚拟主机,不受到干扰,独占锁在开启事务之后,一直保留到事务结束。例如,

(四)意向锁

在记录上放置共享锁之前,需要对存放该记录的更大范围(如数据页或数据表)上设置意向锁,以避免其他连接对该页放置独占锁。

意向锁有两种用途:

· 防止其他事务以会使较低级别的锁无效的方式修改较高级别资源。

· 提高数据库引擎在较高的粒度级别检测锁冲突的效率。

请求共享意向锁,以防止另一个事务随后在包含那一页的表上尝试放置独占锁(锁)。 意向锁可以提高性能,网站空间,因为数据库引擎仅在表级检查意向锁来确定事务是否可以安全地获取该表上的锁。 而不需要检查表中的每行或每页上的锁以确定事务是否可以锁定整个表。如下图。

 

等等。各种意向锁的说明,如下表。

锁类型

说明

意向共享 (IS)

保护针对层次结构中某些(而并非所有)低层资源请求或获取的共享锁。

意向独占 (IX)

意向独占共享 (SIX)

独占锁以及修改的行上的独占锁。 虽然每个资源在一段时间内只能有一个 

意向更新 (IU)

共享意向更新 (SIU)

更新意向排他 (UIX)

 

下面来实际举例来说明

DELAY

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 서버 백업을 설치, 제거 및 재설정하는 방법 Windows 서버 백업을 설치, 제거 및 재설정하는 방법 Mar 06, 2024 am 10:37 AM

Windows 서버 백업을 설치, 제거 및 재설정하는 방법

Jul 24, 2023 pm 06:12 PM

C++를 사용하여 범위 내 어떤 숫자로도 나누어지지 않는 숫자 찾기 C++를 사용하여 범위 내 어떤 숫자로도 나누어지지 않는 숫자 찾기 Sep 13, 2023 pm 09:21 PM

C++를 사용하여 범위 내 어떤 숫자로도 나누어지지 않는 숫자 찾기

Windows Server 2025 미리보기 버전은 업데이트를 환영하며 Microsoft는 내부자 테스트 경험을 개선합니다. Windows Server 2025 미리보기 버전은 업데이트를 환영하며 Microsoft는 내부자 테스트 경험을 개선합니다. Feb 19, 2024 pm 02:36 PM

Windows Server 2025 미리보기 버전은 업데이트를 환영하며 Microsoft는 내부자 테스트 경험을 개선합니다.

Vue에서 날짜 범위 선택기를 구현하는 방법은 무엇입니까? Vue에서 날짜 범위 선택기를 구현하는 방법은 무엇입니까? Jun 25, 2023 am 08:41 AM

Vue에서 날짜 범위 선택기를 구현하는 방법은 무엇입니까?

C++의 연산자 오버로딩 문제 및 해결 방법 개요 C++의 연산자 오버로딩 문제 및 해결 방법 개요 Oct 08, 2023 pm 01:02 PM

C++의 연산자 오버로딩 문제 및 해결 방법 개요

Golang 변수의 저장 위치와 메커니즘에 대한 심층 탐구 Golang 변수의 저장 위치와 메커니즘에 대한 심층 탐구 Feb 28, 2024 pm 09:45 PM

Golang 변수의 저장 위치와 메커니즘에 대한 심층 탐구

Python Tkinter는 그 힘을 과시합니다: 멋진 GUI 애플리케이션 만들기 Python Tkinter는 그 힘을 과시합니다: 멋진 GUI 애플리케이션 만들기 Mar 24, 2024 am 09:11 AM

Python Tkinter는 그 힘을 과시합니다: 멋진 GUI 애플리케이션 만들기

See all articles