freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計(jì)算機(jī)]第10章存儲(chǔ)過程與觸發(fā)器-資料下載頁

2025-10-10 03:48本頁面
  

【正文】 TRANSACTION Tran1 @@TRANCOUNT為 1 INSERT INTO employee_tran VALUES (39。0139。, 39。Zhang39。) BEGIN TRANSACTION Tran2 @@TRANCOUNT為 2 INSERT INTO employee_tran VALUES (39。0239。, 39。Wang39。) BEGIN TRANSACTION Tran3 @@TRANCOUNT為 3 PRINT @@TRANCOUNT INSERT INTO employee_tran VALUES (39。0339。, 39。Li39。) COMMIT TRANSACTION Tran3 @@TRANCOUNT為 2 PRINT @@TRANCOUNT COMMIT TRANSACTION Tran2 @@TRANCOUNT為 1 PRINT @@TRANCOUNT COMMIT TRANSACTION Tran1 @@TRANCOUNT為 0 PRINT @@TRANCOUNT 例 1014 提交事務(wù)。 運(yùn)行結(jié)果: 3 2 1 0 ? 鎖 (Lock)作為一種安全機(jī)制,用于控制多個(gè)用戶的并發(fā)操作,以防止用戶讀取正在由其他用戶更改的數(shù)據(jù)或者多個(gè)用戶同時(shí)修改同一數(shù)據(jù),從而確保事務(wù)完整性和數(shù)據(jù)庫一致性。 ? 鎖機(jī)制用于解決并發(fā)事務(wù)對(duì)同一資源或者數(shù)據(jù)的競(jìng)爭(zhēng),從而可能導(dǎo)致的數(shù)據(jù)不一致問題。 ? 雖然 SQL Server會(huì)自動(dòng)強(qiáng)制執(zhí)行鎖,但是用戶可以通過對(duì)鎖進(jìn)行了解并在應(yīng)用程序中自定義鎖來設(shè)計(jì)出更有效率的應(yīng)用程序。 SQL Server的鎖機(jī)制 ? 當(dāng)對(duì)一個(gè)數(shù)據(jù)源加鎖后,此數(shù)據(jù)源就有了一定的訪問限制,稱對(duì)此數(shù)據(jù)源進(jìn)行了“鎖定”。 ? SQL Server有多種粒度鎖,允許一個(gè)事務(wù)鎖定不同類型的資源。 ① 數(shù)據(jù)行 (Row):數(shù)據(jù)頁中的單行數(shù)據(jù)。 ② 索引行 (Key):索引頁中的單行數(shù)據(jù),即索引的鍵值。 ③ 頁 (Page):頁是 SQL Server存取數(shù)據(jù)的基本單位,其大小為 8KB。 ④ 擴(kuò)展盤區(qū) (Extent):一個(gè)盤區(qū)由 8個(gè)連續(xù)的頁組成。 ⑤ 表 (Table)。 ⑥ 數(shù)據(jù)庫 (Database)。 鎖模式 ?SQL Server使用不同的鎖模式鎖定資源,這些鎖模式確定了并發(fā)事務(wù)訪問資源的方式。 ? (1) 共享鎖 (Shared Lock) ? (2) 排它鎖 (Exclusive Lock) ? (3) 更新鎖 (Update Lock) 從程序員的角度,鎖可以分為以下兩種類型: ? (1) 樂觀鎖 (Optimistic Lock)。樂觀鎖假定在處理數(shù)據(jù)時(shí),不需要在應(yīng)用程序的代碼中做任何事情就可以直接在記錄上加鎖,即完全依靠數(shù)據(jù)庫來管理鎖的工作。一般情況下,當(dāng)執(zhí)行事務(wù)處理時(shí), SQL Server會(huì)自動(dòng)對(duì)事務(wù)處理范圍內(nèi)更新到的表做鎖定。 ? (2) 悲觀鎖 (Pessimistic Lock)。悲觀鎖需要程序員直接管理數(shù)據(jù)或?qū)ο笊系募渔i處理,并負(fù)責(zé)獲取、共享和放棄正在使用的數(shù)據(jù)上的任何鎖。 鎖模式 ? 隔離 (Isolation)是計(jì)算機(jī)安全技術(shù)中的概念,其本質(zhì)上是一種封鎖機(jī)制。它是指自動(dòng)數(shù)據(jù)處理系統(tǒng)中的用戶和資源的相關(guān)牽制關(guān)系,也就是用戶和進(jìn)程彼此分開,且和操作系統(tǒng)的保護(hù)控制也分開來。 ? 事務(wù)準(zhǔn)備接受不一致數(shù)據(jù)的級(jí)別稱為隔離級(jí)別 (Isolation Level)。 ? 隔離級(jí)別是一個(gè)事務(wù)必須與其他事務(wù)進(jìn)行隔離的程度。較低的隔離級(jí)別可以增加并發(fā),但代價(jià)是降低數(shù)據(jù)的正確性。相反,較高的隔離級(jí)別可以確保數(shù)據(jù)的正確性,但可能對(duì)并發(fā)產(chǎn)生負(fù)面影響。應(yīng)用程序要求的隔離級(jí)別確定了 SQL Server使用的鎖行為。 隔離級(jí)別 隔離級(jí)別 ? (1) 提交讀 (READ COMMITTED)。它是 SQL Server的默認(rèn)級(jí)別。在此隔離級(jí)別下, SELECT語句不會(huì)也不能返回尚未提交(Committed)的數(shù)據(jù) (即臟數(shù)據(jù) )。 ? (2) 未提交讀 (READ UNCOMMITTED)。與提交讀隔離級(jí)別相反,它允許讀取臟數(shù)據(jù),即已經(jīng)被其他用戶修改但尚未提交的數(shù)據(jù)。它是最低的事務(wù)隔離級(jí)別,僅可保證不讀取物理損壞的數(shù)據(jù)。 ? (3) 可重復(fù)讀 (REPEATABLE READ)。在此隔離級(jí)別下,用SELECT語句讀取的數(shù)據(jù)在整個(gè)語句執(zhí)行過程中不會(huì)被更改。此選項(xiàng)會(huì)影響系統(tǒng)的效能,非必要情況最好不用此隔離級(jí)別。 ? (4) 可串行讀 (SERIALIZABLE)。將共享鎖保持到事務(wù)完成,而不是不管事務(wù)是否完成都在不再需要所需的表或數(shù)據(jù)頁時(shí)就立即釋放共享鎖。它是最高的事務(wù)隔離級(jí)別,事務(wù)之間完全隔離。 SQL Server支持以下 4種隔離級(jí)別 隔離級(jí)別 使用 SET TRANSACTION ISOLATION LEVEL語句設(shè)置會(huì)話的隔離級(jí)別 ? 其語法格式如下: SET TRANSACTION ISOLATION LEVEL {READ COMMITTED | READ UNCOMMITTED | REPEATABLE READ | SERIALIZABLE } ?一次只能設(shè)置一個(gè)選項(xiàng)。 1.用企業(yè)管理器查看和終止鎖 查看和終止鎖 ? 系統(tǒng)存儲(chǔ)過程 sp_lock的語法格式如下: sp_lock spid ? spid是 SQL Server的進(jìn)程編號(hào),它可以在。 ? spid數(shù)據(jù)類型為 int,如果不指定 spid,則顯示所有的鎖。 2.用系統(tǒng)存儲(chǔ)過程 sp_lock 查看鎖 ? 例: USE master EXEC sp_lock ? 例: USE master EXEC sp_lock 52 死鎖及其防止 ? 死鎖 (Deadlocking)是在多用戶或多進(jìn)程狀況下,為使用同一資源而產(chǎn)生的無法解決的爭(zhēng)用狀態(tài)。 ? 死鎖會(huì)造成資源的大量浪費(fèi),甚至?xí)瓜到y(tǒng)崩潰。因此,在 SQL Server 2021中,通常由鎖監(jiān)視器線程自動(dòng)定期對(duì)死鎖進(jìn)行檢測(cè)。當(dāng)識(shí)別死鎖后, SQL Server自動(dòng)設(shè)置一個(gè)事務(wù)結(jié)束死鎖進(jìn)程。 ? SQL Server 2021提供了自動(dòng)發(fā)現(xiàn)和解除死鎖的機(jī)制,除非特殊情況, DBA不用手工干預(yù)鎖的授予和死鎖的解除。 ? SQL Server解決死鎖的原則是“犧牲一個(gè)比兩個(gè)都死強(qiáng)”,即挑出一個(gè)進(jìn)程作為犧牲者,將其事務(wù)回滾,并向執(zhí)行此進(jìn)程的程序發(fā)送編號(hào)為 1205的錯(cuò)誤信息。 ? 雖然死鎖不能完全避免,但可以使死鎖的數(shù)量減至最少。 防止死鎖的途徑 ? 防止死鎖的途徑就是不能讓滿足死鎖條件的情況發(fā)生,為此,用戶需要遵循以下原則: ? (1) 盡量避免并發(fā)地執(zhí)行涉及到修改數(shù)據(jù)的語句。 ? (2) 要求每個(gè)事務(wù)一次就將所有要使用的數(shù)據(jù)全部加鎖,否則就不予執(zhí)行。 ? (3) 預(yù)先規(guī)定一個(gè)封鎖順序,所有的事務(wù)都必須按這個(gè)順序?qū)?shù)據(jù)執(zhí)行封鎖。例如,不同的過程在事務(wù)內(nèi)部對(duì)對(duì)象的更新執(zhí)行順序應(yīng)盡量保持一致。 ? (4) 每個(gè)事務(wù)的執(zhí)行時(shí)間不可太長(zhǎng),對(duì)程序段長(zhǎng)的事務(wù)可考慮將其分割為幾個(gè)事務(wù)。 (1)存儲(chǔ)過程是一組 SQL語句和流程控制語句的集合,以一個(gè)名字存儲(chǔ)并作為一個(gè)單元處理。存儲(chǔ)過程用于完成某項(xiàng)任務(wù),它可以接受參數(shù)、返回狀態(tài)值和參數(shù)值,并且實(shí)現(xiàn)嵌套調(diào)用。 (2) 觸發(fā)器就其本質(zhì)而言是一種特殊的存儲(chǔ)過程,有 3種類型:插入觸發(fā)器、更新觸發(fā)器和刪除觸發(fā)器。 (3)創(chuàng)建、刪除、查看、修改存儲(chǔ)過程和觸發(fā)器可以使用企業(yè)管理器或TransactSQL語句。 (4)存儲(chǔ)過程和觸發(fā)器的各種信息的查看、修改還可以使用系統(tǒng)存儲(chǔ)過程sp_helptext、 sp_rename、 sp_helptrigger、 sp_depends實(shí)現(xiàn)。 (5)事務(wù)是一個(gè)操作序列,它包含了一組數(shù)據(jù)庫操作命令,所有的命令作為一個(gè)整體一起向系統(tǒng)提交或撤消操作請(qǐng)求,即要么都執(zhí)行,要么都不執(zhí)行。 (6)鎖是在多用戶環(huán)境下對(duì)資源訪問的一種限制。當(dāng)對(duì)一個(gè)數(shù)據(jù)源加鎖后,此數(shù)據(jù)源就有了一定的訪問限制。 (7) 事務(wù)與鎖也是保證數(shù)據(jù)完整性和正確性的機(jī)制,可以確保數(shù)據(jù)能夠正確地被存儲(chǔ)、修改,而不會(huì)造成數(shù)據(jù)在存儲(chǔ)或修改過程中因事故或其他用戶的中斷而導(dǎo)致的數(shù)據(jù)不完整。 本章小結(jié)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1