成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server臟讀方式數(shù)據(jù)提取之NOLOCK和READPAST

數(shù)據(jù)庫 SQL Server
本文我們主要介紹了SQL Server臟讀方式數(shù)據(jù)提取之NOLOCK和READPAST的使用,希望能夠?qū)δ兴斋@!

SQL Server臟讀方式數(shù)據(jù)提取之NOLOCKREADPAST是本文我們主要要介紹的內(nèi)容,對數(shù)據(jù)庫中的數(shù)據(jù)進行讀操作或修改時,數(shù)據(jù)庫引擎使用專門的控制類型來保持?jǐn)?shù)據(jù)庫的完整性,稱為鎖機制。鎖機制通過確保包含在一個事務(wù)中的數(shù)據(jù)庫記錄在該事務(wù)提交之前不能被其它事務(wù)修改來保證數(shù)據(jù)庫的一致性。

在設(shè)計數(shù)據(jù)庫應(yīng)用時,你應(yīng)該記住各種不同類型的鎖及事務(wù)發(fā)生的不同隔離級別。通常情況下,SQL Server默認方式能夠很好地完成你要使用的功能,不過,有些時候利用SQL語句在數(shù)據(jù)表上手工添加關(guān)于鎖是如何應(yīng)用的提示信息將是十分有用的。

本文主要介紹了兩種數(shù)據(jù)表提示:NOLOCK和READPAST。我們將建立一個數(shù)據(jù)表用作例子中的查詢數(shù)據(jù)表。執(zhí)行列表A中的腳本建立一個SalesHistory數(shù)據(jù)表并添加一些數(shù)據(jù)。

NOLOCK

該數(shù)據(jù)表提示,也稱為READUNCOMMITTED,只能用于SELECT語句。NOLOCK表明沒有對數(shù)據(jù)表添加共享鎖以阻止其它事務(wù)對數(shù)據(jù)表數(shù)據(jù)的修改。

該語句的好處是它可以使數(shù)據(jù)庫引擎不用在處理查詢中的上鎖問題,可以提高并發(fā)性并改善數(shù)據(jù)庫性能,因為數(shù)據(jù)庫引擎不用在維護共享鎖的使用問題。存在的問題是因為該語句不能處理要讀取的數(shù)據(jù)表的所有鎖,所以一些“臟數(shù)據(jù)”或未被提交的數(shù)據(jù)潛在的可能被讀取。

如果某個事務(wù)被滾回,那么應(yīng)用了NOLOCK連接的數(shù)據(jù)讀取操作將可以讀取未提交的數(shù)據(jù)。這種類型的讀取導(dǎo)致處理的不一致性會帶來很多問題。這是你使用NOLOCK時應(yīng)該了解的技巧。

作為一個負面影響,NOLOCK查詢還可能帶來讀取“幻影”數(shù)據(jù)或讀取在一個數(shù)據(jù)庫讀取事務(wù)中可以獲得的但在另一個事務(wù)中可能被滾回的數(shù)據(jù)的風(fēng)險。(我將在本系列文章的第二部分對這個負面影響進行詳細說明。)

下面的例子展示了NOLOCK如何工作以及臟數(shù)據(jù)讀取是如何產(chǎn)生的。在下面的腳本中,我用一個事務(wù)在SalesHistory數(shù)據(jù)表中插入一條記錄。

 

  1. BEGIN TRANSACTION   
  2. INSERT INTO SalesHistory   
  3. (Product, SaleDate, SalePrice)   
  4. VALUES   
  5. ('PoolTable', GETDATE(), 500)  

 

這個事務(wù)仍舊是開放的,這意味著仍可以對插入數(shù)據(jù)表的記錄上鎖以阻止其它操作。在一個新的查詢窗口中,運行下面的腳本,該腳本使用NOLOCK數(shù)據(jù)表提示返回SalesHistory數(shù)據(jù)表中的記錄數(shù)。

SELECT COUNT(*) FROM SalesHistory WITH(NOLOCK)

返回記錄數(shù)值為301。因為對SalesHistory數(shù)據(jù)表插入記錄的事務(wù)還沒有提交,所以我們可以撤銷它。我通過使用下面的語句將事務(wù)滾回:

ROLLBACK TRANSACTION

該語句從SalesHistory數(shù)據(jù)表中刪除前面插入的記錄。現(xiàn)在我們運行前面運行的同樣的SELECT語句。

SELECT COUNT(*) FROM SalesHistory WITH(NOLOCK)

這次返回記錄數(shù)的值為300。我第一次查詢讀記錄的事務(wù)還沒有提交,這就是一個臟數(shù)據(jù)讀取。

READPAST

這是一個比NOLOCK較少使用的數(shù)據(jù)表提示。這個提示指明數(shù)據(jù)庫引擎返回結(jié)果時忽略加鎖的行或數(shù)據(jù)頁。

這個數(shù)據(jù)表提示的優(yōu)點和NOLOCK一樣,在處理查詢時不會發(fā)生阻塞。此外,讀臟數(shù)據(jù)并不會出現(xiàn)在READPASTA中,因為不會返回鎖定的記錄。這個語句的缺點是,因為不返回鎖定的記錄,所以很難確定結(jié)果集或修改語句是否包含所有必須的記錄。在你的應(yīng)用中可能需要添加一些邏輯來確保最終包含所有必須的記錄。

READPAST數(shù)據(jù)表提示的例子和NOLOCK的例子類似。我將使用一個事務(wù)來更新SalesHistory數(shù)據(jù)表中的一個記錄。

 

  1. BEGIN TRANSACTION   
  2. UPDATE TOP(1) SalesHistory   
  3. SET SalePriceSalePrice = SalePrice + 1  

 

因為我沒有提交或回滾這個事務(wù),所以添加在更新記錄上的鎖仍舊有效。在一個新的查詢編輯窗口中,運行下面的腳本,該腳本對SalesHistory數(shù)據(jù)表使用READPAST統(tǒng)計表中的記錄數(shù)。

 

  1. SELECT COUNT(*)   
  2. FROM SalesHistory WITH(READPAST)  

 

最初SalesHistory數(shù)據(jù)表中包含300條記錄,UPDATE語句正鎖定表中一條記錄,所以上面使用READPAST的腳本返回結(jié)果為299條記錄,這說明我要更新的記錄被鎖定,所以被REASPAST提示忽略。

關(guān)于SQL Server臟讀方式數(shù)據(jù)提取之NOLOCK和READPAST的知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. SQL Server 2000層次數(shù)據(jù)查詢的實現(xiàn)方法
  2. SQL Server根據(jù)語言查詢來返回不同的結(jié)果
  3. SQL Server 2008連接數(shù)據(jù)庫引擎的驅(qū)動和方式
  4. SQL Server查找XML里面符合某個條件的數(shù)據(jù)的用法
  5. SQL Server的執(zhí)行計劃及SQL查詢優(yōu)化實例分析與總結(jié)
責(zé)任編輯:趙鵬 來源: 博客園
相關(guān)推薦

2011-08-18 09:14:32

SQL Server臟讀

2010-07-16 09:06:51

SQL Server數(shù)

2021-11-29 10:13:20

JSONJsonPATH網(wǎng)絡(luò)爬蟲

2011-08-11 09:12:31

SQL Server nolock

2021-10-13 06:49:13

SQL Server優(yōu)化

2021-04-20 19:21:50

臟讀MySQL幻讀

2022-04-27 07:32:02

臟讀幻讀不可重復(fù)讀

2019-03-21 09:06:00

數(shù)據(jù)庫復(fù)讀幻讀

2024-04-24 08:26:35

事務(wù)數(shù)據(jù)InnoDB

2023-02-02 11:53:44

nolock關(guān)鍵詞SQLserver

2022-01-03 07:18:05

臟讀幻讀 MySQL

2015-04-09 14:26:07

2021-05-17 06:57:34

SQLServer數(shù)據(jù)庫

2025-02-26 10:40:44

數(shù)據(jù)庫并發(fā)幻讀

2023-11-01 14:13:00

MySQL事務(wù)隔離級別

2011-08-15 17:55:49

提取MapInfo地圖SQL Server

2024-04-19 08:18:47

MySQLSQL隔離

2025-06-20 08:00:37

2022-06-09 08:32:21

SQLNOLOCKWITH

2021-09-14 10:48:13

SQL Nolock代碼
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧州一区二区三区 | 中文字幕在线看第二 | 天堂成人av | 免费看a| 一区二区三区日韩精品 | 久久久久se | 久久久久久亚洲精品 | 一区视频在线播放 | 国产www成人| 欧美二区在线 | 国产日产久久高清欧美一区 | 99热国产精品 | 国产精品美女久久久久aⅴ国产馆 | 99re视频 | 色男人天堂av | 91短视频网址 | 日本视频在线播放 | 紧缚调教一区二区三区视频 | 五月激情久久 | 国产做爰 | 成人激情视频在线播放 | 91嫩草精品 | 久久高清 | 国产精品99999999 | 国产亚洲精品久久久久久豆腐 | 91精品在线看 | 久久91精品国产一区二区三区 | 欧美videosex性极品hd | 亚洲国产免费 | 久久久久国 | 精品无码久久久久国产 | 国产精品中文字幕在线观看 | 91精品国产91久久久久久密臀 | 精品国产一区二区三区久久影院 | 日本 欧美 三级 高清 视频 | 成人国产免费视频 | 国产高清视频 | 天天拍天天色 | 成人水多啪啪片 | 在线观看免费av片 | 91视频官网 |