首頁 資料庫 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 Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何安裝、解除安裝、重設Windows伺服器備份 如何安裝、解除安裝、重設Windows伺服器備份 Mar 06, 2024 am 10:37 AM

WindowsServerBackup是WindowsServer作業系統自帶的功能,旨在協助使用者保護重要資料和系統配置,並為中小型和企業級企業提供完整的備份和復原解決方案。只有執行Server2022及更高版本的使用者才能使用此功能。在本文中,我們將介紹如何安裝、解除安裝或重設WindowsServerBackup。如何重置Windows伺服器備份如果您的伺服器備份遇到問題,備份所需時間過長,或無法存取已儲存的文件,那麼您可以考慮重新設定WindowsServer備份設定。要重設Windows

使用java的StringBuilder.replace()函數取代指定範圍的字符 使用java的StringBuilder.replace()函數取代指定範圍的字符 Jul 24, 2023 pm 06:12 PM

使用java的StringBuilder.replace()函數取代指定範圍的字元在Java中,StringBuilder類別提供了replace()方法,可以用來取代字串中指定範圍的字元。方法的語法如下:publicStringBuilderreplace(intstart,intend,Stringstr)上面的方法用來取代從索引star

C++中運算子重載問題與解決方法概述 C++中運算子重載問題與解決方法概述 Oct 08, 2023 pm 01:02 PM

C++中運算子重載問題和解決方法概述引言:運算子重載是C++語言的一個重要特性,它允許程式設計師自訂現有的運算子來操作自訂的資料型別。但是,運算子重載需要慎重使用,因為一旦使用不當或過度使用,會導致程式碼可讀性降低、出現歧義和效率降低等問題。本文將概述C++中運算子重載的常見問題,並提供對應的解決方法和程式碼範例。一、運算子重載的問題1.1歧義問題在運算子重載

找出在範圍內不可被任何數整除的數字,使用C++ 找出在範圍內不可被任何數整除的數字,使用C++ Sep 13, 2023 pm 09:21 PM

在本文中,我們將討論查找1到n(給定)之間的數字的問題,這些數字不能被2到10之間的任何數字整除。讓我們透過一些例子來理解這一點-Input:num=14Output:3Explanation:Therearethreenumbers,1,11,and13,whicharenotdivisible.Input:num=21Output:5Explanation:Therearefivenumbers1,11,13,17,and19,whicharen的解題方法簡單方法如果

Vue 中如何實現日期範圍選擇器? Vue 中如何實現日期範圍選擇器? Jun 25, 2023 am 08:41 AM

Vue中如何實現日期範圍選擇器?日期範圍選擇器是現代Web應用程式中常用到的一種介面元件。它允許使用者從一個日期範圍中選擇一個日期或一個時間段。對於需求為日期範圍選擇器的網頁應用程式開發,Vue.js是一個非常好的選擇。 Vue.js是一個用於建立使用者介面的漸進式JavaScript框架,它允許開發者使用元件化的方式來建立複雜的互動式介面

Windows Server 2025預覽版迎來更新,微軟改善Insiders測試體驗 Windows Server 2025預覽版迎來更新,微軟改善Insiders測試體驗 Feb 19, 2024 pm 02:36 PM

在發布WindowsServer的build26040版本之際,微軟公佈了該產品的官方名稱:WindowsServer2025。一同推出的,還有Windows11WindowsInsiderCanaryChannel版本的build26040。有些朋友可能還記得,多年前有人成功將WindowsNT從工作站模式轉換為伺服器模式,顯示微軟作業系統各版本之間的共通性。儘管現在微軟的伺服器作業系統版本和Windows11之間有明顯區別,但關注細節的人可能會好奇:為什麼WindowsServer更新了品牌,

Python Tkinter 大顯神通:打造驚艷 GUI 應用程式 Python Tkinter 大顯神通:打造驚艷 GUI 應用程式 Mar 24, 2024 am 09:11 AM

Tkinter是python中一個強大的GUI函式庫,可用於建立跨平台的桌面應用程式。憑藉其易用性和廣泛的功能,它為建立使用者介面、處理事件和管理佈局提供了各種工具。建立GUI窗口要建立GUI窗口,需要使用Tkinter.Tk()方法。此方法傳回一個Tk()對象,表示應用程式的主視窗。視窗可以使用title()方法設定標題,並使用geometry()方法設定視窗大小和位置。 importtkinterastkroot=tk.Tk()root.title("我的第一個Tkinter應用程式")root.g

怎麼修改Nginx版本名稱偽裝任意web server 怎麼修改Nginx版本名稱偽裝任意web server May 14, 2023 pm 09:19 PM

如何修改nginx預設的名稱,可以稍微的偽裝一下,也可以裝x一般來說修改3個位置,一個是nginx.h、另一個是ngx_http_header_filter_module.c、還有一個ngx_http_special_response.c。提示:一般修改都是在nginx編譯之前修改,修改完了之後需要重新編譯程式碼如下:scr/core/nginx.conf#definenginx_version"1.4.7"#definenginx_ver"nginx/"n

See all articles