筆記 MySQL資料庫系統原理

2021-10-24 07:24:41 字數 2322 閱讀 9280

正規化er圖

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

髒讀:未提交讀。

不可重複讀:未提交讀、提交讀。

幻讀:未提交讀、提交讀、可重複讀。

封鎖粒度:行鎖、表鎖。

封鎖型別:讀寫鎖、意向鎖。

讀鎖(s)、寫鎖(x):給單位加讀鎖,不影響其他事務的加讀鎖,但不讓加寫鎖;給單位加寫鎖,則不讓其他事務加讀寫鎖。

意向鎖(is、ix):事務想給表加寫鎖,就需要檢測所有行是否有加寫鎖,這無疑很耗時。所以加入意向鎖,當給行加寫鎖,需要給表加ix鎖;給行加讀鎖,需要給表加is鎖

封鎖協議:

一級:事務要修改必須加x鎖,事務結束才可釋放。解決髒寫。

二級:事務要讀取必須加s鎖,讀取完立馬釋放。解決髒讀。

**:事務要讀取必須加s鎖,事務結束才可釋放。解決不可重複讀。

實際場景中讀操作往往多於寫操作,而讀寫衝突會導致讀等待。

mvcc利用多版本的思想,使寫操作更新最新的版本快照,而讀操作去讀取舊版本快照,使互斥關係消失。

mvcc 規定只能讀取已經提交的快照。

有快照生成,就代表有修改;讀操作不會觸發mvcc的任何改變。

當前讀,像select lock in share mode(共享鎖), select for update ; update, insert ,delete(排他鎖),它讀取的是記錄的最新版本,會對讀取的記錄進行加鎖。

快照讀,不加鎖的select操作就是快照讀,即不加鎖的非阻塞讀;快照讀的前提是隔離級別不是序列級別,序列級別下的快照讀會退化成當前讀。

系統版本號sys_id是乙個遞增的數字,每開始乙個新的事務,系統版本號就會自動遞增。

每一行資料,都會多出三列(其中一列是無主鍵時自動生成的db_row_id):

mvcc 的多版本快照儲存在 undo 日誌中。

undo日誌通過回滾指標 roll_ptr 把乙個資料行的所有快照連線起來。

undo日誌記錄了記錄事務版本號 trx_id 和資料,還記錄了乙個del 字段,用於標記是否被刪除。

undo日誌有兩種:

未提交讀、可序列化這兩個隔離級別,讀取版本鏈中最新版本的記錄即可,提交讀、可重複讀,就需要遍歷所有快照,判斷某個版本的記錄是否對當前事務可見。innodb通過readview實現了這個功能。

readview儲存所有未提交即活躍事務的版本號 trx_ids,和trx_id_min、trx_id_max。

在mysql中,read committed和repeatable read隔離級別的的乙個非常大的區別就是它們生成readview的時機不同。read committed在每次讀取資料前都會生成乙個readview,這樣就能保證每次都能讀到其它事務已提交的資料。repeatable read 只在第一次讀取資料時生成乙個readview,這樣就能保證後續讀取的結果完全一致。

在select時,先從最新版本快照開始,讀取資料行快照的 trx_id並判斷:

函式依賴:記 a->b 表示 a 函式決定 b,也可以說 b 函式依賴於 a。

第一正規化:屬性不可拆分。

第二正規化:每個非主屬性完全函式依賴於鍵碼。(「完全」指當鍵碼為多個組合的,不能讓組合之一去函式決定乙個非主屬性,只能整個組合函式決定。可通過拆分解決)

第三正規化:非主屬性不傳遞函式依賴於鍵碼。(只能由鍵碼來決定所有的非主屬性)

entity-relationship,有三個組成部分:實體、屬性、聯絡。

實體的三種聯絡包含一對一,一對多,多對多三種。

下圖的 course 和 student 是一對多的關係。

表示出現多次的關係:乙個實體在聯絡出現幾次,就要用幾條線連線。

下圖表示乙個課程的先修關係,先修關係出現兩個 course 實體,第乙個是先修課程,後乙個是後修課程,因此需要用兩條線來表示這種關係。

聯絡的多向性:雖然老師可以開設多門課,並且可以教授多名學生,但是對於特定的學生和課程,只有乙個老師教授,這就構成了乙個三元聯絡。

表示子類:用乙個三角形和兩條線來連線類和子類,與子類有關的屬性和聯絡都連到子類上,而與父類和子類都有關的連到父類上。

資料庫 資料庫系統原理

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

資料庫系統原理學習筆記

二 併發一致性問題 三 四種隔離級別 四 多版本併發控制 事務是指滿足acid特性的一組操作。1.原子性 atomicity 事務被視為不可分割的最小單元,事務包含的所有操作要麼全部提交成功,要麼全部失敗回滾。回滾可以用回滾日誌 undo log 來實現,回滾日誌記錄著事務所執行的修改操作,在回滾時...

資料庫系統(筆記)

3.11 第一講 初步認識資料庫系統 1.資料庫系統 資料庫db 資料庫管理系統dbms 資料庫應用程式dbap 資料庫管理員dba 計算機基礎。2.dbms 資料定義語言ddl 資料操作語言dml 資料控制語言dcl ddl編譯器 dml編譯器 dcl編譯器 系統程式集合 嗯 找到一點學習的感覺了...