如何掌握SQL Server的鎖機(jī)制和鎖模式(5)_Mssql數(shù)據(jù)庫(kù)教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
推薦:揭秘操作日期的SQL語(yǔ)句大全1.顯示本月第一天 SELECTDATEADD(mm,DATEDIFF(mm,0,getdate()),0) selectconvert(datetime,convert(varchar(8),getdate(), 120)+’01’,120) 2.顯示本月最后一天 selectdateadd(day,-1,convert(datetime,convert (varchar(8),dateadd(month,1,getdate()),120
1.共享鎖 SQL Server中,共享鎖用于所有的只讀數(shù)據(jù)操作。共享鎖是非獨(dú)占的,允許多個(gè)并發(fā)事務(wù)讀取其鎖定的資源。默認(rèn)情況下,數(shù)據(jù)被讀取后,SQL Server立即釋放共享鎖。例如,執(zhí)行查詢“SELECT * FROM AUTHORS”時(shí),首先鎖定第一頁(yè),讀取之后,釋放對(duì)第一頁(yè)的鎖定,然后鎖定第二頁(yè)。這樣,就允許在讀操作過(guò)程中,修改未被鎖定的第一頁(yè)。但是,事務(wù)隔離級(jí)別連接選項(xiàng)設(shè)置和SELECT語(yǔ)句中的鎖定設(shè)置都可以改變SQL Server的這種默認(rèn)設(shè)置。例如,“ SELECT * FROM AUTHORS HOLDLOCK”就要求在整個(gè)查詢過(guò)程中,保持對(duì)表的鎖定,直到查詢完成才釋放鎖定。
2.更新鎖 更新鎖在修改操作的初始化階段用來(lái)鎖定可能要被修改的資源,這樣可以避免使用共享鎖造成的死鎖現(xiàn)象。因?yàn)槭褂霉蚕礞i時(shí),修改數(shù)據(jù)的操作分為兩步,首先獲得一個(gè)共享鎖,讀取數(shù)據(jù),然后將共享鎖升級(jí)為排它鎖,然后再執(zhí)行修改操作。這樣如果同時(shí)有兩個(gè)或多個(gè)事務(wù)同時(shí)對(duì)一個(gè)事務(wù)申請(qǐng)了共享鎖,在修改數(shù)據(jù)的時(shí)候,這些事務(wù)都要將共享鎖升級(jí)為排它鎖。這時(shí),這些事務(wù)都不會(huì)釋放共享鎖而是一直等待對(duì)方釋放,這樣就造成了死鎖。如果一個(gè)數(shù)據(jù)在修改前直接申請(qǐng)更新鎖,在數(shù)據(jù)修改的時(shí)候再升級(jí)為排它鎖,就可以避免死鎖。
3.排它鎖 排它鎖是為修改數(shù)據(jù)而保留的。它所鎖定的資源,其他事務(wù)不能讀取也不能修改。
4.結(jié)構(gòu)鎖 執(zhí)行表的數(shù)據(jù)定義語(yǔ)言 (DDL) 操作(例如添加列或除去表)時(shí)使用架構(gòu)修改 (Sch-M) 鎖。當(dāng)編譯查詢時(shí),使用架構(gòu)穩(wěn)定性 (Sch-S) 鎖。架構(gòu)穩(wěn)定性 (Sch-S) 鎖不阻塞任何事務(wù)鎖,包括排它鎖。因此在編譯查詢時(shí),其它事務(wù)(包括在表上有排它鎖的事務(wù))都能繼續(xù)運(yùn)行。但不能在表上執(zhí)行 DDL 操作。
5.意向鎖 意向鎖說(shuō)明SQL Server有在資源的低層獲得共享鎖或排它鎖的意向。例如,表級(jí)的共享意向鎖說(shuō)明事務(wù)意圖將排它鎖釋放到表中的頁(yè)或者行。意向鎖又可以分為共享意向鎖、獨(dú)占意向鎖和共享式獨(dú)占意向鎖。共享意向鎖說(shuō)明事務(wù)意圖在共享意向鎖所鎖定的低層資源上放置共享鎖來(lái)讀取數(shù)據(jù)。獨(dú)占意向鎖說(shuō)明事務(wù)意圖在共享意向鎖所鎖定的低層資源上放置排它鎖來(lái)修改數(shù)據(jù)。共享式排它鎖說(shuō)明事務(wù)允許其他事務(wù)使用共享鎖來(lái)讀取頂層資源,并意圖在該資源低層上放置排它鎖。
6.大容量更新鎖 當(dāng)將數(shù)據(jù)大容量復(fù)制到表,且指定了 TABLOCK 提示或者使用 sp_tableoption 設(shè)置了 table lock on bulk 表選項(xiàng)時(shí),將使用大容量更新 鎖。大容量更新鎖允許進(jìn)程將數(shù)據(jù)并發(fā)地大容量復(fù)制到同一表,同時(shí)防止其它不進(jìn)行大容量復(fù)制數(shù)據(jù)的進(jìn)程訪問(wèn)該表。
分享:詳解SQL嵌套子查詢一些初級(jí) 程序 員常常對(duì)SQL語(yǔ)法中的子查詢,由其對(duì)嵌套子查詢(子查詢中包含一個(gè)子查詢)的使用比較生疏,本文就此做一個(gè)基本講解,相信新手會(huì)有一定收獲。 使用子查詢的原則 1.一個(gè)子查詢必須放在圓括號(hào)中。 2.將子查詢放在比較條件的右邊以增加可讀性。 子
相關(guān)Mssql數(shù)據(jù)庫(kù)教程:
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 在SQL Server數(shù)據(jù)庫(kù)中批量導(dǎo)入數(shù)據(jù)的四種方法
- sql2008啟動(dòng)代理未將對(duì)象應(yīng)用到實(shí)例解決方案
- 如何檢測(cè)你的SQL Server是否有特洛伊木馬
- SQL Server 2005 數(shù)據(jù)庫(kù)鏡像簡(jiǎn)介
- SQL Server中, DateTime (日期)型操作的 SQL語(yǔ)法
- SQL Server各種日期計(jì)算方法之二
- 注意SQL Server視圖管理中的四個(gè)限制條件
- SQL Server的基本功能性語(yǔ)句介紹
- 解決WIN2003安裝sqlserver2000失敗的方法
- SQL2005 性能監(jiān)視器計(jì)數(shù)器錯(cuò)誤解決方法
猜你也喜歡看這些
- 詳解MYSQL的備份還原(PHP實(shí)現(xiàn))
- 關(guān)于Mysql查詢帶單引號(hào)及插入帶單引號(hào)字符串問(wèn)題
- MySQL筆記之?dāng)?shù)學(xué)函數(shù)詳解
- 關(guān)于MySQL數(shù)據(jù)遷移--data目錄直接替換注意事項(xiàng)的詳解
- 深入SQLite基本操作的總結(jié)詳解
- MySQL 5.6 如何更改安全的處理密碼探討
- 網(wǎng)站模板MySQL timestamp自動(dòng)更新時(shí)間
- linux下mysql提示mysql deamon failed to start錯(cuò)誤的解決方法
- SQL Server Management Studio 沒(méi)有出來(lái)
- MySql中把一個(gè)表的數(shù)據(jù)插入到另一個(gè)表中的實(shí)現(xiàn)代碼
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-如何掌握SQL Server的鎖機(jī)制和鎖模式(5)
。