資料庫學習 資料庫系統的原理

2021-10-06 01:24:19 字數 2340 閱讀 2623

併發一致性問題

封鎖隔離級別

事務:是指滿足acid特性的一組操作。可以通過 commit 提交乙個事務,也可以使用 rollback 進行回滾。

在關係型資料庫中,乙個事物可以是一條sql語句,一組sql語句或 整個程式。

acid原則並不是一種平級關係:

mysql 預設採用的是自動提交方式(autocommit)。也就是說,如果不顯式使用start transaction語句來開始乙個事務,那麼每個查詢操作都會被當做乙個事務並自動提交。

在併發環境下,事務的隔離性很難保證,因此會出現很多併發一致性問題。

產生併發一致性問題,主要原因是破壞了事務的隔離性,解決方法是通過併發控制來保證隔離性。併發控制可以通過封鎖來實現,但是封鎖操作需要使用者自己來控制,相當複雜。資料庫管理系統(dbms)提供了事務的隔離級別,讓使用者以一種更輕鬆的方式處理併發一致性問題。

封鎖物件可以很大也可以很小,例如對整個資料庫加鎖、對某個屬性值加鎖。

封鎖物件的大小稱為封鎖粒度。

應該盡量只鎖定需要修改的那部分資料,而不是所有資源。

鎖定的資料量越少,發生鎖爭用的可能性就越小,系統的併發程度就越高。

但是,加鎖需要資源,鎖的各種操作,都會增加系統開銷。

因此,封鎖的粒度越大,系統中能夠被封鎖的物件就越少,併發度也就越小,但系統開銷也越小;封鎖的粒度越小,併發度越高,但開銷也就越大。

在選擇封鎖粒度時,需要在鎖開銷和併發程度之間做權衡。

讀寫鎖

共享鎖:記為s鎖,又稱為讀鎖。

封鎖協議指對 資料物件加鎖時,需要約定的一些規則:

兩段鎖協議

加鎖和解鎖分為兩個階段進行。

可序列化排程是指,通過併發控制,使得併發執行的事務結果與某個序列執行的事務結果相同。

可序列性是並行排程正確性的唯一準則,兩段鎖協議就是為保證並行排程可序列性而提供的封鎖協議。

兩段鎖協議的內容:

**封鎖協議

一級封鎖協議:

事務t1要修改資料a時必需加x鎖,直到t結束才釋放鎖。

可以解決丟失修改問題,因為不能有兩個事務同時修改乙個資料,這樣,事務的修改就不會被覆蓋。

二級封鎖協議:

在一級的基礎上,事務t2要求讀取資料a的時候,必須加s鎖,讀取完馬上釋放s鎖。

可以解決讀髒資料的問題,因為如果乙個事務t1在對a資料進行修改,根據一級封鎖協議,會加x鎖,此時該事務t2就不能再加s鎖了,也就不會讀入資料。

**封鎖協議:

在二級的基礎上,要求讀取資料a的時候,必須加s鎖,知道事務結束了才釋放s鎖。

可以解決不可重複讀的問題,因為讀a時,其他事務不能對其加x鎖,從而避免了在讀期間資料發生改變。

隔離級別從允許的併發***(讀髒資料,不可重複讀,幻影讀)的角度進行描述。

當多個事務同時進行時,通過設定隔離界別來處理讀髒資料、不可重複讀和幻影讀。

未提交讀 read uncommitted:將查詢的隔離級別指定為0

事務中的修改,即使沒有提交,對其他事務也是可見的。

讀髒資料:一事務對資料進行了增刪改,但未提交,有可能回滾,另一事務卻讀取了未提交的資料。

提交讀 read committed:將查詢的隔離級別指定為1

乙個事務只能讀取已經提交的事務所做的修改,也就是說,乙個事務所做的修改在提交之前對其它事務是不可見的。

避免了髒讀,但可以出現不可重複讀和幻影讀。

可重複讀 repeatable read:將查詢的隔離級別指定為2

保證在同一事務中多次讀取同一資料的結果是一樣的。

避免髒讀,不可重複讀,但會出現幻影讀。

可序列化讀 serializable:將查詢的隔離級別指定為3

強制事務序列執行,這樣多個事務互不干擾,不會出現併發一致性問題。該隔離級別需要加鎖實現,因為要使用加鎖機制保證同一時間只有乙個事務執行,也就是保證事務序列執行。

讀髒資料

不可重複讀

幻影讀未提交讀××

×提交讀√×

×可重複讀√√

×可序列化√√

√文章學習自cyc ❤

資料庫 資料庫系統原理

事務指的是滿足 acid 特性的一組操作,可以通過 commit 提交乙個事務,也可以使用 rollback 進行回滾。事務被視為不可分割的最小單元,事務的所有操作要麼全部提交成功,要麼全部失敗回滾。回滾可以用回滾日誌來實現,回滾日誌記錄著事務所執行的修改操作,在回滾時反向執行這些修改操作即可。資料...

資料庫系統 資料庫 資料庫管理系統 資料庫系統

繼續寫資料庫系統的文章,第二篇 資料庫 資料庫管理系統 資料庫系統。本文主要談談這三者之間的關係。下方,摘自老師的ppt,非原創。資料庫管理系統 從系統角度看資料庫管理系統 資料庫系統 資料庫指的是長期儲存在計算機內有組織的,大量的,相關聯的,可共享的資料集合。資料應當是有組織的,不應該是雜亂無章的...

資料庫原理 資料庫系統概述

資料庫 組織 儲存和管理資料的資料倉儲,這個倉庫是儲存在計算機儲存裝置上的。嚴格上講資料庫 是指長期儲存在計算機內的 有組織的 可共享的資料集合。資料庫中的資料按一定的資料模型組織 描述和儲存,具有較小的冗餘度 較高的資料獨立性和易擴充套件性,並為各種使用者共享。資料庫管理系統 是使用者和作業系統之...