如何掌握SQL Server的鎖機(jī)制和鎖模式_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
各種大型數(shù)據(jù)庫(kù)所采用的鎖的基本理論是一致的,但在具體實(shí)現(xiàn)上各有差別。SQL Server更強(qiáng)調(diào)由系統(tǒng)來(lái)管理鎖。在用戶有SQL請(qǐng)求時(shí),系統(tǒng)分析請(qǐng)求,自動(dòng)在滿足鎖定條件和系統(tǒng)性能之間為數(shù)據(jù)庫(kù)加上適當(dāng)?shù)逆i,同時(shí)系統(tǒng)在運(yùn)行期間常常自動(dòng)進(jìn)行優(yōu)化處理,實(shí)行動(dòng)態(tài)加鎖。對(duì)于一般的用戶而言,通過(guò)系統(tǒng)的自動(dòng)鎖定管理機(jī)制基本可以滿足使用要求,但如果對(duì)數(shù)據(jù)安全、數(shù)據(jù)庫(kù)完整性和一致性有特殊要求,就需要了解SQL Server的鎖機(jī)制,掌握數(shù)據(jù)庫(kù)鎖定方法。鎖是數(shù)據(jù)庫(kù)中的一個(gè)非常重要的概念,它主要用于多用戶環(huán)境下保證數(shù)據(jù)庫(kù)完整性和一致性。 我們知道,多個(gè)用戶能夠同時(shí)操縱同一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù),會(huì)發(fā)生數(shù)據(jù)不一致現(xiàn)象。即如果沒(méi)有鎖定且多個(gè)用戶同時(shí)訪問(wèn)一個(gè)數(shù)據(jù)庫(kù),則當(dāng)他們的事務(wù)同時(shí)使用相同的數(shù)據(jù)時(shí)可能會(huì)發(fā)生問(wèn)題。這些問(wèn)題包括:丟失更新、臟讀、不可重復(fù)讀和幻覺(jué)讀:
1.當(dāng)兩個(gè)或多個(gè)事務(wù)選擇同一行,然后基于最初選定的值更新該行時(shí),會(huì)發(fā)生丟失更新問(wèn)題。每個(gè)事務(wù)都不知道其它事務(wù)的存在。最后的更新將重寫(xiě)由其它事務(wù)所做的更新,這將導(dǎo)致數(shù)據(jù)丟失。例如,兩個(gè)編輯人員制作了同一文檔的電子復(fù)本。每個(gè)編輯人員獨(dú)立地更改其復(fù)本,然后保存更改后的復(fù)本,這樣就覆蓋了原始文檔。最后保存其更改復(fù)本的編輯人員覆蓋了第一個(gè)編輯人員所做的更改。如果在第一個(gè)編輯人員完成之后第二個(gè)編輯人員才能進(jìn)行更改,則可以避免該問(wèn)題。
2. 臟讀就是指當(dāng)一個(gè)事務(wù)正在訪問(wèn)數(shù)據(jù),并且對(duì)數(shù)據(jù)進(jìn)行了修改,而這種修改還沒(méi)有提交到數(shù)據(jù)庫(kù)中,這時(shí),另外一個(gè)事務(wù)也訪問(wèn)這個(gè)數(shù)據(jù),然后使用了這個(gè)數(shù)據(jù)。因?yàn)檫@個(gè)數(shù)據(jù)是還沒(méi)有提交的數(shù)據(jù),那么另外一個(gè)事務(wù)讀到的這個(gè)數(shù)據(jù)是臟數(shù)據(jù),依據(jù)臟數(shù)據(jù)所做的操作可能是不正確的。例如,一個(gè)編輯人員正在更改電子文檔。在更改過(guò)程中,另一個(gè)編輯人員復(fù)制了該文檔(該復(fù)本包含到目前為止所做的全部更改)并將其分發(fā)給預(yù)期的用戶。此后,第一個(gè)編輯人員認(rèn)為目前所做的更改是錯(cuò)誤的,于是刪除了所做的編輯并保存了文檔。分發(fā)給用戶的文檔包含不再存在的編輯內(nèi)容,并且這些編輯內(nèi)容應(yīng)認(rèn)為從未存在過(guò)。如果在第一個(gè)編輯人員確定最終更改前任何人都不能讀取更改的文檔,則可以避免該問(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完全卸載方法(其他版本類(lèi)似)
- 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ī)制和鎖模式
。