事務與并發控制

事務(Transaction0):要么全做,要么全不做;

事務ACID:原子性Atomicity;一致性Consistency;隔離性Isolation;持久性Durability;

并發操作問題:

????????1.丟失更新;(同時提交數據時,t2的事務會并發導致t1的事務修改被丟失)

????????2.不可重復讀;(事務A首先讀取了一條數據,然后執行邏輯的時候,事務B將這條數據改變了,然后事務A再次讀取的時候,發現數據不匹配了,就是所謂的不可重復讀了)

????????3.讀 ' 臟 ' 數據;(并發情況下,事務2讀取到事務1修改到一半就回退的數據,讀取的數據有誤)

封鎖是最常用的并發控制技術:

????????基本思想為:需要時,事務通過向系統請求對它所希望的數據對象(數據庫中的記錄)加鎖,以確保它不會被非預期改變;

鎖的概念:實質上就是一個允許或阻止一個事務對一個數據對象的存取特權;

1.基本的封鎖類型有兩種:排他鎖(Exclusive Lock,X鎖)和共享鎖(SharedLock,S鎖)

2.用封鎖對進行并發控制:

? ? ? ? 2.1?若事務T對數據D加了X鎖,則所有別的事務對數據D的鎖請求都必須等待直到事務T釋放鎖;

? ? ? ? 2.2?若事務T對數據D加了S鎖,則別的事務還可對數據D請求S鎖,而對數據D的X鎖請求必須等待直到釋放鎖;

? ? ? ? 2.3?事務執行數據庫操作時都要先請求相應的鎖,即對讀請求S鎖,對更新(插入、刪除、修改)請求X鎖;

? ? ? ? 2.4?事務一直占有獲得的鎖直到結束(COMMIT或ROLLBACK)時釋放;

3.封鎖的粒度:

????????通常以粒度來描述封鎖的數據單元的大小;DBMS(數據庫管理系統)可以決定不同粒度的鎖;有最底層的數據元素到最高層的整個數據庫,粒度越細,并發性越大,但軟件復雜性和系統開銷也就越大;

4.封鎖的級別:

? ? ? ? 4.1?0級封鎖:封鎖的事務不重寫其它非0級封鎖事務的未提交的更新數據。這種狀態實際上實用價值不大;

? ? ? ? 4.2?1級封鎖:被封鎖的事務不允許重寫未提交的更新數據,這防止丟失更新的發生;

? ? ? ? 4.3?2級封鎖:被封鎖的事務既不重寫也不讀未提交的更新數據,這除了1級封鎖的效果外還防止了讀臟數據;

? ? ? ? 4.4?3級封鎖:被封鎖的事務不讀未提交的更新數據,不寫任何(包含讀操作的)未提交的數據;

? ? ? ? 4.5?活鎖與死鎖:

? ? ? ? ? ? ? ? 4.5.1?封鎖帶來的一個重要問題是困難引起“活鎖”與“死鎖”;

? ? ? ? ? ? ? ? 4.5.2 鎖:級別低的事務無法執行;可采用先來先服務的策略解決;

? ? ? ? ? ? ? ? 4.5.3?死鎖:兩個以上事務循環等待被同組中另一事務鎖住的數據單元的情形,稱為“死鎖”;

???????????????? - 如何解決: 1. 一次性鎖請求; 2. 鎖請求排序; 3. 序列化處理;4. 資源剝奪; - 對待死鎖的另一種方法是不去防止,而讓其發生并隨時進行監測,一旦監測到系統已發生了死鎖再進行解除處理;

????????6. 可串行性:一組事務是一個調度就是它們的基本操作的一種排序;通常,在數據庫系統中,*可串行性是并發執行的正確性準則,即當且僅當一組事務的并發執行調度是可串行化的,才認為它們是正確的;

????????7. 兩段封鎖法: 1. 事務劃分成兩個階段:1.發展(Growing)或加鎖階段;2.收縮(Shrinking)或釋放鎖階段;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19486.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19486.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19486.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于RNN和Transformer的詞級語言建模 代碼分析 _generate_square_subsequent_mask

基于RNN和Transformer的詞級語言建模 代碼分析 _generate_square_subsequent_mask flyfish Word-level Language Modeling using RNN and Transformer word_language_model PyTorch 提供的 word_language_model 示例展示了如何使用循環神經網絡RNN(GRU或LSTM)和 Transforme…

汽車IVI中控開發入門及進階(二十二):video decoder視頻解碼芯片

前言: 視頻解碼器在許多汽車、專業和消費視頻應用中仍有需求。Analog Devices是模擬視頻產品領域的行業領導者,提供一系列視頻解碼器,可將標準(SD,standard definition)和高清(HD,High definition)分辨率的模擬視頻高質量轉換為MIPI或TTL格式的數字視頻數據。典型的應…

【AI大模型】如何讓大模型變得更聰明?基于時代背景的思考

【AI大模型】如何讓大模型變得更聰明 前言 在以前,AI和大模型實際上界限較為清晰。但是隨著人工智能技術的不斷發展,基于大規模預訓練模型的應用在基于AI人工智能的技術支持和幫助上,多個領域展現出了前所未有的能力。無論是自然語言處理、…

算法刷題筆記 差分矩陣(C++實現)

文章目錄 題目前言題目描述解題思路和代碼實現 題目前言 這道題是一道差分算法的拓展題型,是算法刷題筆記到目前為止我認為最困難的題目之一。因此,這篇題解博客的過程記錄也最為詳細,希望能夠為你帶來幫助。 題目描述 輸入一個n行m列的整…

JavaScript的垃圾回收機制

No.內容鏈接1Openlayers 【入門教程】 - 【源代碼示例300】 2Leaflet 【入門教程】 - 【源代碼圖文示例 150】 3Cesium 【入門教程】 - 【源代碼圖文示例200】 4MapboxGL【入門教程】 - 【源代碼圖文示例150】 5前端就業寶典 【面試題詳細答案 1000】 文章目錄 一、垃圾…

匹配字符串

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python提供了re模塊,用于實現正則表達式的操作。在實現時,可以使用re模塊提供的方法(如search()、match()、finda…

深入理解Redis:多種操作方式詳解

Redis(Remote Dictionary Server)是一款高性能的開源鍵值存儲系統,廣泛應用于緩存、會話管理、實時分析等領域。它支持多種數據結構,如字符串、哈希、列表、集合和有序集合等,提供了豐富的操作命令。本篇博客將詳細介紹…

信息系統項目管理師0603:項目整合管理 — 考點總結(可直接理解記憶)

點擊查看專欄目錄 文章目錄 項目整合管理 — 考點總結(可直接理解記憶) 輸入、輸出、工具和技術 歷年考題直接考輸入,輸出、工具和技術的有17年11月第34、35,19年5月第34、35,20年11月27、28,21年5月第26,28,21年11月第28,22年5月第25,22年11月第22考題 項目章程是正…

CasaOS玩客云安裝全平臺高速下載器Gopeed并實現遠程訪問

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

BufferQueue 的工作原理

bufferQueue 是 Android 圖形棧中的一個核心組件,它在生產者和消費者之間傳遞緩沖區(buffer)。它通常用于圖形緩沖區管理,特別是在 SurfaceFlinger 和其他圖形相關的組件中。理解 BufferQueue 的工作原理對開發高性能圖形應用和解決圖形渲染問題非常有幫助。 BufferQueue …

基于Python的酒店客房入侵檢測系統的設計與實現

基于Python的酒店客房入侵檢測系統的設計與實現 開發語言:Python 數據庫:MySQL所用到的知識:Django框架工具:pycharm、Navicat、Maven 系統功能實現 酒店客房入侵管理界面 結合上文的結構搭建和用戶需求,酒店客房入侵檢測系統的…

【Unity Shader入門精要 第12章】屏幕后處理效果(一)

1. 原理和過程 屏幕后處理是綁定攝像機的,通過抓取當前攝像機渲染的圖像作為 SrcTextrue,然后按需依次調用處理接口,對 SrcTexture 進行處理,最后將處理完成的 DstTexture 顯示到屏幕上,整個過程的調度通過 C# 腳本完…

使用 C++ 在當前進程中獲取指定模塊的基址

C 實現 , 獲取指定模塊在該進程中的基址 1、流程: 獲取進程的所有模塊信息–>遍歷模塊列表 2、實現: // 我自己定義的 typedef struct moudle_date_ {HANDLE mhandle; // 句柄char mname[64]; // 名稱char* date; // 數據DWORD mdword; // 基址…

【機器學習】Adaboost: 強化弱學習器的自適應提升方法

🌈個人主頁: 鑫寶Code 🔥熱門專欄: 閑話雜談| 炫酷HTML | JavaScript基礎 ?💫個人格言: "如無必要,勿增實體" 文章目錄 Adaboost: 強化弱學習器的自適應提升方法引言Adaboost基礎概念弱學習器與強學習…

存儲器容量小才使用SRAM芯片,容量較大時使用DRAM芯片。為什么?

在計算機系統中,存儲器容量的選擇涉及到多種因素,包括成本、速度和復雜性。SRAM(靜態隨機存取存儲器)和DRAM(動態隨機存取存儲器)是兩種常見的內存類型,它們在設計和應用上有顯著的不同。以下是…

【藍橋杯嵌入式】 第六屆國賽

目錄 題目 配置 注意事項 代碼 - 默寫大師 EEPROM讀寫函數 LED驅動函數 ADC采集 上電初始化 LCD 按鍵 PWM互補輸出 全部代碼 hardware.c hardware.h control.c control.h main.c 題目 配置 注意事項 復制LCD的工程,先配置資源 --- 勾選完選項一…

CCIG 2024:合合信息文檔解析技術突破與應用前景

目錄 背景當前大模型訓練和應用面臨的問題訓練Token耗盡訓練語料質量要求高LLM文檔問答應用中文檔解析不精準 合合信息的文檔解析技術1. 具備多文檔元素識別能力2. 具備版面分析能力3. 高性能的文檔解析4. 高精準、高效率的文檔解析文檔多板式部分示例 文檔解析典型技術難點元素…

【代碼隨想錄Day23】|669.修建二叉搜索樹、108.將有序數組轉換為二叉搜索樹、538.把二叉搜索樹轉換為累加樹

669. 修剪二叉搜索樹 這題最開始的想法是復用刪除節點的那題的思路做,需要修改的部分就是要讓程序刪除完一個點后繼續遍歷,因為后續可能還有不符合條件的節點。但這樣想也做復雜了。 這類題其實不用想用什么序遍歷,用哪種方式只是為了更好的…

案例|開發一個美業小程序,都有什么功能

隨著移動互聯網的迅猛發展,美業連鎖機構紛紛尋求數字化轉型,以小程序為載體,提升服務效率,增強客戶體驗。 線下店現在面臨的困境: 客戶到店排隊時間過長,體驗感受差 新客引流難,老用戶回頭客…

基于EV54Y39A PIC-IOT WA的手指數量檢測功能開發(MPLAB+ADC)

目錄 項目介紹硬件介紹項目設計開發環境及工程參考總體流程圖硬件基本配置光照傳感器讀取定時器檢測邏輯 功能展示項目總結 👉 【Funpack3-2】基于EV54Y39A PIC-IOT WA的手指數量檢測功能開發 👉 Github: EmbeddedCamerata/PIC-IOT_finger_recognition 項…