資料庫 資料庫系統原理

2021-09-25 23:07:07 字數 2112 閱讀 1182

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

事務被視為不可分割的最小單元,事務的所有操作要麼全部提交成功,要麼全部失敗回滾。

回滾可以用回滾日誌來實現,回滾日誌記錄著事務所執行的修改操作,在回滾時反向執行這些修改操作即可。

資料庫在事務執行前後都保持一致性狀態。在一致性狀態下,所有事務對乙個資料的讀取結果都是相同的。

乙個事務所做的修改在最終提交以前,對其它事務是不可見的。

一旦事務提交,則其所做的修改將會永遠儲存到資料庫中。即使系統發生崩潰,事務執行的結果也不能丟失。

使用重做日誌來保證永續性。

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

t1 和 t2 兩個事務都對乙個資料進行修改,t1 先修改,t2 隨後修改,t2 的修改覆蓋了 t1 的修改。

t1 修改乙個資料,t2 隨後讀取這個資料。如果 t1 撤銷了這次修改,那麼 t2 讀取的資料是髒資料。

t2 讀取乙個資料,t1 對該資料做了修改。如果 t2 再次讀取這個資料,此時讀取的結果和第一次讀取的結果不同。

t1 讀取某個範圍的資料,t2 在這個範圍內插入新的資料,t1 再次讀取這個範圍的資料,此時讀取的結果和和第一次讀取的結果不同。

有以下兩個規定:

使用意向鎖(intention locks)可以更容易地支援多粒度封鎖。

在存在行級鎖和表級鎖的情況下,事務 t 想要對錶 a 加 x 鎖,就需要先檢測是否有其它事務對錶 a 或者表 a 中的任意一行加了鎖,那麼就需要對錶 a 的每一行都檢測一次,這是非常耗時的。

意向鎖在原來的 x/s 鎖之上引入了 ix/is,ix/is 都是表鎖,用來表示乙個事務想要在表中的某個資料行上加 x 鎖或 s 鎖。有以下兩個規定:

通過引入意向鎖,事務 t 想要對錶 a 加 x 鎖,只需要先檢測是否有其它事務對錶 a 加了 x/ix/s/is 鎖,如果加了就表示有其它事務正在使用這個表或者表中某一行的鎖,因此事務 t 加 x 鎖失敗。

一級封鎖協議

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

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

二級封鎖協議

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

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

**封鎖協議

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

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

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

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

事務遵循兩段鎖協議是保證可序列化排程的充分條件。例如以下操作滿足兩段鎖協議,它是可序列化排程。

lock-x(a)...lock-s(b)...lock-s(c)...unlock(a)...unlock(c)...unlock(b)
但不是必要條件,例如以下操作不滿足兩段鎖協議,但是它還是可序列化排程。

lock-x(a)...unlock(a)...lock-s(b)...unlock(b)...lock-s(c)...unlock(c)
事務中的修改,即使沒有提交,對其它事務也是可見的。

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

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

強制事務序列執行。

需要加鎖實現,而其它隔離級別通常不需要。

高階別正規化的依賴於低階別的正規化,1nf 是最低級別的正規化。

屬性不可分。

每個非主屬性完全函式依賴於鍵碼。

可以通過分解來滿足。

非主屬性不傳遞函式依賴於鍵碼。

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

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

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

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

資料庫系統mysql MySQL資料庫系統

1 mysql的特點 1 多執行緒 多使用者 2 基於c s 客戶端 伺服器 架構 3 簡單易用 查詢速度快 4 安全可靠 2 mysql編譯安裝 代表鍵盤上tab鍵 1 準備工作 解除安裝使用rpm方式安裝的mysql rpm e mysql nodeps 安裝cmake包 cd media ta...