데이터 베이스 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++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

WindowsServerBackup은 WindowsServer 운영 체제와 함께 제공되는 기능으로, 사용자가 중요한 데이터 및 시스템 구성을 보호하고 중소기업 및 대기업 수준의 기업에 완벽한 백업 및 복구 솔루션을 제공하도록 설계되었습니다. Server2022 이상을 실행하는 사용자만 이 기능을 사용할 수 있습니다. 이 문서에서는 WindowsServerBackup을 설치, 제거 또는 재설정하는 방법을 설명합니다. Windows Server 백업을 재설정하는 방법 서버 백업에 문제가 있거나 백업에 너무 오랜 시간이 걸리거나 저장된 파일에 액세스할 수 없는 경우 Windows Server 백업 설정을 재설정하는 것을 고려할 수 있습니다. Windows를 재설정하려면

Jul 24, 2023 pm 06:12 PM

Java의 StringBuilder.replace() 함수를 사용하여 지정된 문자 범위를 바꿉니다. Java에서 StringBuilder 클래스는 문자열에서 지정된 문자 범위를 바꾸는 데 사용할 수 있는 replacement() 메서드를 제공합니다. 이 메서드의 구문은 다음과 같습니다. publicStringBuilderreplace(intstart,intend,Stringstr) 위 메서드는 인덱스 별표를 바꾸는 데 사용됩니다.

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

C++의 연산자 오버로딩 문제 및 해결 방법 개요: 연산자 오버로딩은 C++ 언어의 중요한 기능으로, 이를 통해 프로그래머는 기존 연산자를 사용자 정의하여 사용자 정의 데이터 유형을 작동할 수 있습니다. 그러나 연산자 오버로딩은 부적절하거나 과도하게 사용할 경우 코드 가독성 저하, 모호성, 효율성 저하 등의 문제를 야기하므로 주의해서 사용해야 합니다. 이 문서에서는 C++의 연산자 오버로딩과 관련된 일반적인 문제를 간략하게 설명하고 해당 솔루션과 코드 예제를 제공합니다. 1. 연산자 과부하 문제 1.1 연산자 과부하의 모호성 문제

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

이 글에서는 2와 10 사이의 어떤 숫자로도 나누어지지 않는 1과 n 사이의 숫자(주어진 숫자)를 찾는 문제에 대해 논의할 것입니다. 몇 가지 예를 통해 이를 이해해 보겠습니다. 입력:num=14Output:3Explanation:나누 수 없는 세 개의 숫자 1,11,13이 있습니다.Input:num=21Output:5Explanation:나누 수 없는 다섯 개의 숫자 1,11,13,17,19가 있습니다. 해결된 경우 간단한 방법입니다.

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

Vue에서 날짜 범위 선택기를 구현하는 방법은 무엇입니까? 날짜 범위 선택기는 최신 웹 애플리케이션에서 자주 사용되는 인터페이스 구성요소입니다. 이를 통해 사용자는 날짜 범위에서 날짜 또는 기간을 선택할 수 있습니다. 날짜 범위 선택기가 필요한 웹 애플리케이션 개발의 경우 Vue.js는 매우 좋은 선택입니다. Vue.js는 개발자가 구성 요소화를 사용하여 복잡한 대화형 인터페이스를 구축할 수 있도록 해주는 진보적인 JavaScript 프레임워크입니다.

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

Microsoft는 Windows Server 빌드 26040 버전을 출시하면서 제품의 공식 이름을 Windows Server 2025로 발표했습니다. Windows11WindowsInsiderCanaryChannel 버전 build26040도 출시되었습니다. 일부 친구들은 수년 전에 누군가 Windows NT를 워크스테이션 모드에서 서버 모드로 성공적으로 전환하여 다양한 버전의 Microsoft 운영 체제 간의 공통점을 보여주었다는 것을 아직도 기억할 것입니다. 마이크로소프트의 현재 서버 운영체제 버전과 윈도우 11 사이에는 뚜렷한 차이가 있지만, 세부 사항에 주목하는 사람들은 윈도우 서버가 왜 브랜드를 업데이트했는지,

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

Tkinter는 크로스 플랫폼 데스크탑 애플리케이션을 만드는 데 사용할 수 있는 Python의 강력한 GUI 라이브러리입니다. 사용하기 쉽고 다양한 기능을 통해 사용자 인터페이스 구축, 이벤트 처리 및 레이아웃 관리를 위한 다양한 도구를 제공합니다. GUI 창 만들기 GUI 창을 만들려면 Tkinter.Tk() 메서드를 사용해야 합니다. 이 메서드는 응용 프로그램의 기본 창을 나타내는 Tk() 개체를 반환합니다. 창은 title() 메서드를 사용하여 제목을 가질 수 있고, 기하학() 메서드를 사용하여 창 크기와 위치를 가질 수 있습니다. importtkinterastkroot=tk.Tk()root.title("나의 첫 번째 Tkinter 응용 프로그램")root.g

웹 서버를 위장하기 위해 Nginx 버전 이름을 수정하는 방법 웹 서버를 위장하기 위해 Nginx 버전 이름을 수정하는 방법 May 14, 2023 pm 09:19 PM

nginx의 기본 이름을 수정하는 방법은 조금 위장하거나 설치할 수 있습니다. 팁: 일반적으로 수정은 nginx가 컴파일되기 전에 이루어집니다. 수정 후에는 scr/core/nginx.conf#definenginx_version"1.4.7"#definenginx_ver"nginx/"n과 같이 코드를 다시 컴파일해야 합니다.

See all articles